test_spike.pm.svn-base

来自「这是一个DFA简化和生成LL(1)分析表的程序,自动生成表格及图形」· SVN-BASE 代码 · 共 68 行

SVN-BASE
68
字号
# test_spike.pm# testbed for spike.plpackage test_spike;use Test::Base -Base;use File::Temp qw/ tempfile /;our @EXPORT = qw(run_tests);my $pmfile;my @pmfiles;mkdir 'tmp' if !-d 'tmp';my $counter = 0;my $parser;filters {    ast => 'eval',};sub run_tests() {    for my $block (blocks()) {        run_test($block);    }}sub run_test($) {    my $block = shift;    my $gm = $block->grammar;    my $input = $block->input;    my $expected_ast = $block->ast;    my $name = $block->name;    if (defined $gm) {        my ($fh, $gmfile) =            tempfile('gm_XXXXXX', SUFFIX => '.grammar', UNLINK => 1, DIR => 'tmp');        #warn "Grammar File: $gmfile";        print $fh $gm;        close $fh;        my $class = 'Parser' . (++$counter);        is system($^X, 'spike.pl', '-m', "-n $class", $gmfile), 0, "$name - spike.pl";        ($pmfile = $gmfile) =~ s/\.grammar$/.pm/;        ok -f $pmfile, "$name - $pmfile ok";        ok require $pmfile, "$name - load module $pmfile ok";        $parser = $class->new;    }    #$::RD_TRACE = 1;    #$::RD_VERBOSE = 1;    my $ast = $parser->parse($input);    #use Data::Dumper::Simple;    #$::Data::Dumper::Indent = 1;    #warn Dumper($ast);    is_deeply $ast, $expected_ast, "$name - parse tree ok";    push @pmfiles, $pmfile;}END {    for my $file (@pmfiles) {        unlink $file;    }}1;

⌨️ 快捷键说明

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