| Refresh | Home EGTry.com

add java codes in grammar - import, fields and methods


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