grammar
grammar E;
stmt: expr NEWLINE {System.out.println($expr.text+": "+$expr.value);} ;
expr returns [int value]
: e=INT {$value = Integer.parseInt($e.text);}
( '+' e=INT {$value += Integer.parseInt($e.text);}
| '-' e=INT {$value -= Integer.parseInt($e.text);}
)*
;
INT : '0'..'9'+ ;
NEWLINE: '\r'? '\n' ;
WS : (' '|'\t')+ {skip();} ;
EParserMain.java
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CommonTokenStream;
public class EParserMain {
public static void main(String[] args) throws Exception {
ANTLRStringStream input=new ANTLRStringStream("2+3+10 -9 +1\n");
ELexer lexer = new ELexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
EParser parser = new EParser(tokens);
parser.stmt();
}
}