xref: /aosp_15_r20/external/antlr/runtime/Perl5/examples/simplecalc/SimpleCalc.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar SimpleCalc;
2*16467b97STreehugger Robotoptions { language = Perl5; }
3*16467b97STreehugger Robot
4*16467b97STreehugger Robottokens {
5*16467b97STreehugger Robot    PLUS  = '+' ;
6*16467b97STreehugger Robot    MINUS = '-' ;
7*16467b97STreehugger Robot    MULT  = '*' ;
8*16467b97STreehugger Robot    DIV   = '/' ;
9*16467b97STreehugger Robot}
10*16467b97STreehugger Robot
11*16467b97STreehugger Robot/*------------------------------------------------------------------
12*16467b97STreehugger Robot * PARSER RULES
13*16467b97STreehugger Robot *------------------------------------------------------------------*/
14*16467b97STreehugger Robot
15*16467b97STreehugger Robotexpr    : term ( ( PLUS | MINUS )  term )* ;
16*16467b97STreehugger Robot
17*16467b97STreehugger Robotterm    : factor ( ( MULT | DIV ) factor )* ;
18*16467b97STreehugger Robot
19*16467b97STreehugger Robotfactor  : NUMBER ;
20*16467b97STreehugger Robot
21*16467b97STreehugger Robot/*------------------------------------------------------------------
22*16467b97STreehugger Robot * LEXER RULES
23*16467b97STreehugger Robot *------------------------------------------------------------------*/
24*16467b97STreehugger Robot
25*16467b97STreehugger RobotNUMBER : (DIGIT)+ ;
26*16467b97STreehugger Robot
27*16467b97STreehugger RobotWHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = $self->HIDDEN; } ;
28*16467b97STreehugger Robot
29*16467b97STreehugger Robotfragment DIGIT : '0'..'9' ;
30