#!perl use strict; use warnings; use ANTLR::Runtime::ANTLRFileStream; use ANTLR::Runtime::CommonTokenStream; use ANTLR::Runtime::RecognitionException; use SimpleCalcLexer; use SimpleCalcParser; my $input = ANTLR::Runtime::ANTLRFileStream->new({ file_name => $ARGV[0] }); my $lexer = SimpleCalcLexer->new({ input => $input }); my $tokens = ANTLR::Runtime::CommonTokenStream->new({ token_source => $lexer }); my $parser = SimpleCalcParser->new({ input => $tokens }); eval { $parser->expr(); print "ok\n"; print "errors: ", $parser->get_number_of_syntax_errors(), "\n"; print "failed: ", $parser->failed(), "\n"; }; if (my $ex = ANTLR::Runtime::RecognitionException->caught()) { print $ex->trace, "\n"; } elsif ($ex = $@) { die $ex; }