| Refresh | Home EGTry.com

simple expression grammar


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();
        
    }
}



output

2+3+10-9+1: 7