语法分析器醒目 用java或者c++实现(高分求助)
考虑以下的文法G[lexp]:
lexp →NUMBER| ( op lexp-seq )
op →+ | - |*
lexp -seq → lexp-seq lexp|lexp
该文法表示类似LISP前缀格式中的简单整型算术表达式。例如,表达式34 - 3 * 42在该文法中写作(- 34 (* 3 42))。
1. 为该文法给出的表达式设计相应的抽象语法树结构,
2. 为该文法写出一个递归下降分析程序返回一个抽象语法树,并且同时计算各节点的值。(提示:改写文法用EBNF表示,避免死循环)
假设词法分析器的输出为已知:
1) 当前读取的单词的类型保存在变量token中,单词的类型包括 PLUS,MINUS,TIMES,NUMBER,ENDFILE(源文件结束标志);
2) 单词的字符串值有词法分析程序输出并保存在变量tokenString中;
例如对于源程序中出现的数42,词法分析器的输出tokenString=“42”,token=NUMBER