add import and class members
grammar E;
@header {
import java.util.Date;
}
@members {
private int rv;
public int getResult() {
return rv;
}
public void setResult(int result) {
rv=result;
}
}
stmt: expr NEWLINE {setResult($expr.value); System.out.println( (new Date())+": "+$expr.text+": "+getResult());} ;
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();} ;
embed codes in rule
grammar E;
@header {
import java.util.Date;
}
@members {
public void add(Token from, Token to) {
System.out.println(" from to ");
}
}
stmt
@init {
System.out.println("initial");
}
@after {
add($start, $stop);
}
: expr NEWLINE ;
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();} ;