0

I'm trying to generate a Lexer/Parser through a simple grammar using ANTLR. What I've done right now :

grammar ExprV2;

@header {
package mypack.parte2; 
}

@lexer::header {
package mypack.parte2;
}

start 
:   expr EOF            { System.out.println($expr.val);}
;

expr returns [int val]
:   term e=exprP[$term.val]                      { $val = $e.val; } 
;

exprP[int i] returns [int val]
:                                        { $val = $i; }
|   '+' term    e=exprP[$i + $term.val]  { $val = $e.val; }
|   '-' term    e=exprP[$i - $term.val]  { $val = $e.val; }     
;

term returns [int val]
:   fact    e=termP[$fact.val]                   { $val = $e.val; } 
;

termP[int i] returns [int val]
:                                                {$val = $i;}
|   '*' fact    e=termP[$i * $fact.val] {$val = $e.val; }
|   '/' fact    e=termP[$i / $fact.val] {$val = $e.val; }
;

fact returns [int val]
:   '(' expr    ')'                     { $val = $expr.val; }
|   NUM                                  { $val=Integer.parseInt($NUM.text); }
;

NUM :   '0'..'9'+ ;

WS  :   (' '    |   '\t'    |'\r'   |   '\n')+  {   skip(); };

What I would like to obtain is to generate a Lexer/Parser with a grammar written using EBNF but I'm stucked and I don't know how to go ahead. I looked on the internet but I did not succeed in finding anything clear. Thanks to all!

smart548
  • 41
  • 7

0 Answers0