1*16467b97STreehugger Robot#!perl 2*16467b97STreehugger Robot 3*16467b97STreehugger Robotuse strict; 4*16467b97STreehugger Robotuse warnings; 5*16467b97STreehugger Robot 6*16467b97STreehugger Robotuse ANTLR::Runtime::ANTLRFileStream; 7*16467b97STreehugger Robotuse ANTLR::Runtime::CommonTokenStream; 8*16467b97STreehugger Robotuse ANTLR::Runtime::RecognitionException; 9*16467b97STreehugger Robotuse SimpleCalcLexer; 10*16467b97STreehugger Robotuse SimpleCalcParser; 11*16467b97STreehugger Robot 12*16467b97STreehugger Robotmy $input = ANTLR::Runtime::ANTLRFileStream->new({ file_name => $ARGV[0] }); 13*16467b97STreehugger Robotmy $lexer = SimpleCalcLexer->new({ input => $input }); 14*16467b97STreehugger Robotmy $tokens = ANTLR::Runtime::CommonTokenStream->new({ token_source => $lexer }); 15*16467b97STreehugger Robotmy $parser = SimpleCalcParser->new({ input => $tokens }); 16*16467b97STreehugger Roboteval { 17*16467b97STreehugger Robot $parser->expr(); 18*16467b97STreehugger Robot print "ok\n"; 19*16467b97STreehugger Robot print "errors: ", $parser->get_number_of_syntax_errors(), "\n"; 20*16467b97STreehugger Robot print "failed: ", $parser->failed(), "\n"; 21*16467b97STreehugger Robot}; 22*16467b97STreehugger Robotif (my $ex = ANTLR::Runtime::RecognitionException->caught()) { 23*16467b97STreehugger Robot print $ex->trace, "\n"; 24*16467b97STreehugger Robot} 25*16467b97STreehugger Robotelsif ($ex = $@) { 26*16467b97STreehugger Robot die $ex; 27*16467b97STreehugger Robot} 28