⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ll1_parser.t.svn-base

📁 这是一个DFA简化和生成LL(1)分析表的程序,自动生成表格及图形
💻 SVN-BASE
字号:
# LL1_parser.t# Test LL1::Parseruse Test::Base;use LL1_Parser;use t::Util qw/ parse_grammar /;plan tests => 3 * blocks();$::LL1_QUIET = 1;run {    my $block = shift;    my $name = $block->name;    my $grammar = $block->grammar;    my $s_grammar = $block->s_grammar;    my $expect_ast = parse_grammar($s_grammar);    my $parser = LL1::Parser->new;    undef $X::tokens;    my $ast = $parser->parse($grammar);    ok $X::tokens;    ok $X::rules;    is_deeply($ast, $expect_ast, "$name - AST comparison");};__DATA__=== TEST 1: basic--- grammarfoo: bar bazbar: 'a'baz: 'b'--- s_grammarfoo: bar bazbar: 'a'baz: 'b'=== TEST 2: multiple choices--- grammarfoo: bar   | bazbar: 'a'baz: 'b'--- s_grammarfoo: bar | bazbar: 'a'baz: 'b'=== TEST 3: multiple choices (with terminals)--- grammarfoo: /.../ bar   | baz 'foo'bar: 'a'baz: 'b'--- s_grammarfoo: /.../ bar | baz 'foo'bar: 'a'baz: 'b'=== TEST 4: empty production--- grammarfoo:   | 'abc'--- s_grammarfoo: | 'abc'=== TEST 5: empty production (tailing)--- grammarfoo: 'abc'   |--- s_grammarfoo: 'abc' |=== TEST 6: strings of balanced parentheses--- grammarS : '(' S ')' S | ''--- s_grammarS: '(' S ')' S |=== TEST 7: if_statements--- grammarstatement : if_stmt          | 'other'if_stmt   :'if' '(' exp ')' statement else_partelse_part : 'else'            statement          |exp       : '0' | '1'--- s_grammarstatement: if_stmt | 'other'if_stmt: 'if' '(' exp ')' statement else_partelse_part: 'else' statement |exp: '0' | '1'=== TEST 8: simple integer expression (w/o left recursion)--- grammarexp: termexp_exp_  :addop term exp_                  | ''addop: '+' | '-' term: factor term_term_: mulop factor term_ | ''mulop: '*'factor: '(' exp ')' | /\d+/--- s_grammarexp: term exp_exp_: addop term exp_ |addop: '+' | '-'term: factor term_term_: mulop factor term_ |mulop: '*'factor: '(' exp ')' | /\d+/=== TEST 9: statement sequences--- grammarstmt_sequence: stmt stmt_seq stmt_seq: ';' stmt_sequence | stmt: 's' --- s_grammarstmt_sequence: stmt stmt_seqstmt_seq: ';' stmt_sequence |stmt: 's'=== TEST 10: abuse of ''--- grammarif_stmt: '' 'if' '' "(" exp ')' ""exp: '' /\d+/ ''--- s_grammarif_stmt: 'if' "(" exp ')'exp: /\d+/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -