xref: /aosp_15_r20/external/antlr/runtime/Perl5/examples/simplecalc/simplecalc.pl (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
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