07/05/17 17:21:48
>>593 jay+JFlexならこんな感じで
--Calculator.jay
%{
public class Calculator {
private Integer result;
%}%token <Integer> NUMBER
%type <Integer> expr
%left '+'
%left '*'
%%
string: | string expr { result = $2; }
expr: NUMBER { $$ = $1; }
| expr '+' expr { $$ = Integer.valueOf($1.intValue() + $3.intValue()); }
| expr '*' expr { $$ = Integer.valueOf($1.intValue() * $3.intValue()); };
%%
public String eval(String expr) throws Calculator.yyException, java.io.IOException {
yyparse(new Lexer(new java.io.StringReader(expr)));
return String.valueOf(result);
}
}