Data::NFA - Non deterministic finite state machine from regular expression.
Create a non deterministic finite state machine from a regular expression which can then be converted into a deterministic finite state machine by Data::DFA and used to parse sequences of symbols.
For example, the regular expression:
((a|b)*)**4
produces the following machine:
use Data::NFA qw(:all); use Data::Table::Text qw(:all); use Test::More qw(no_plan); my $N = 4; my $s = q(zeroOrMore(choice(element("a"), element("b")))); my $nfa = eval qq(fromExpr(($s)x$N)); ok $nfa->printNws("((a|b)*)**$N: ") eq nws <<END; ((a|b)*)**4: Location F Transitions Jumps 0 1 { a => 1 } [2, 4, 6, 8, 10, 12, 14, 16] 1 1 undef [0, 2, 3, 4, 6, 8, 10, 12, 14, 16] 2 0 { b => 3 } undef 3 1 undef [0, 2, 4, 6, 8, 10, 12, 14, 16] 4 1 { a => 5 } [6, 8, 10, 12, 14, 16] 5 1 undef [4, 6, 7, 8, 10, 12, 14, 16] 6 0 { b => 7 } undef 7 1 undef [4, 6, 8, 10, 12, 14, 16] 8 1 { a => 9 } [10, 12, 14, 16] 9 1 undef [8, 10, 11, 12, 14, 16] 10 0 { b => 11 } undef 11 1 undef [8, 10, 12, 14, 16] 12 1 { a => 13 } [14, 16] 13 1 undef [12, 14, 15, 16] 14 0 { b => 15 } undef 15 1 undef [12, 14, 16] 16 1 undef undef END
Non deterministic finite state machine from regular expression.
Version "20181027".
The following sections describe the methods in each functional area of this module. For an alphabetic listing of all methods by name see Index.
This module is written in 100% Pure Perl and, thus, it is easy to read, comprehend, use, modify and install via cpan:
sudo cpan install Data::NFA
philiprbrenan@gmail.com
http://www.appaapps.com
Copyright (c) 2016-2018 Philip R Brenan.
This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
To install Data::NFA, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::NFA
CPAN shell
perl -MCPAN -e shell install Data::NFA
For more information on module installation, please visit the detailed CPAN module installation guide.