📄 eps_closure.t
字号:
#: eps_closure.t#: test the eps_closure function in re::DFAuse strict;use warnings;use re::Graph;#use Data::Dumper::Simple;use Test::More 'no_plan';BEGIN { use_ok('re::DFA'); }sub ordered { sort { $a <=> $b } @_;}*gen = \&re::DFA::eps_closure;my $g = re::Graph->build( <<'_EOC_' );entry: 1exit: 101,2: eps2,4: eps2,3: eps3,9: a9,8: eps4,5: b5,6: eps6,7: a7,8: eps8,2: eps8,10: eps1,10: eps_EOC_ok $g;#$g->as_png('nfa.png');my $cache = {};my $set = gen(1, $g, $cache);my @elems = $set->elements;is join(' ', ordered @elems), '1 2 3 4 10';is join(' ', ordered keys %$cache), '1 2 3 4 10';$set = gen(9, $g, $cache);@elems = $set->elements;is join(' ', ordered @elems), '2 3 4 8 9 10';is join(' ', ordered keys %$cache), '1 2 3 4 8 9 10';$set = gen(5, $g, $cache);@elems = $set->elements;is join(' ', ordered @elems), '5 6';is join(' ', ordered keys %$cache), '1 2 3 4 5 6 8 9 10';$set = gen(7, $g, $cache);@elems = $set->elements;is join(' ', ordered @elems), '2 3 4 7 8 10';is join(' ', ordered keys %$cache), '1 2 3 4 5 6 7 8 9 10';# create eps loop by s/3 --> a --> 9/3 --> eps --> 9/my @edges = $g->node2edges(3);$edges[0]->[0] = re::eps;#$g->as_png('nfa.png');$cache = {};$set = gen(2, $g, $cache);@elems = $set->elements;is join(' ', ordered @elems), '2 3 4 8 9 10';is join(' ', ordered keys %$cache), '2 3 4 8 9 10';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -