📄 parser.cup
字号:
// JavaCup specification for a simple expression evaluator (w/ actions)import java_cup.runtime.*;/* Preliminaries to set up and use the scanner. */init with {: scanner.init(); :};scan with {: return scanner.next_token(); :};/* Terminals (tokens returned by the scanner). */terminal token SEMI, PLUS, MINUS, TIMES, DIVIDE, MOD, LPAREN, RPAREN;terminal int_token NUMBER;/* Non terminals */non terminal symbol expr_list, expr_part;non terminal int_token expr, term, factor;/* The grammar */expr_list ::= expr_list expr_part | expr_part;expr_part ::= expr:e {: System.out.println("= " + e.int_val); :} SEMI ;expr ::= expr:e1 PLUS term:e2 {: RESULT.int_val = e1.int_val + e2.int_val; :} | expr:e1 MINUS term:e2 {: RESULT.int_val = e1.int_val - e2.int_val; :} | term:e1 {: RESULT.int_val = e1.int_val; :} ;term ::= term:e1 TIMES factor:e2 {: RESULT.int_val = e1.int_val * e2.int_val; :} | term:e1 DIVIDE factor:e2 {: RESULT.int_val = e1.int_val / e2.int_val; :} | term:e1 MOD factor:e2 {: RESULT.int_val = e1.int_val % e2.int_val; :} | factor:e {: RESULT.int_val = e.int_val; :} ;factor ::= NUMBER:n {: RESULT.int_val = n.int_val; :} | MINUS factor:e {: RESULT.int_val = -e.int_val; :} | LPAREN expr:e RPAREN {: RESULT.int_val = e.int_val; :} ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -