语法分析器醒目 用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
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
...全文
相关推荐
java语法分析器源代码LL(1)文法
该系统由java实现,能够对输入串进行词法和语法分析,用LL(1)文法对输入串进行语法分析,在Ecplise运行,编译原理课程设计。
词法分析器实现(java和c++)
词法分析器代码,包含java和c++两种实现。编译原理实验。
语法分析器 Java
可以实现的Java语法分析器,可以实现简单的Java程序的语法错误或者其他的文件类型
自顶向下语法分析器的设计与实现
这是一个简单的自顶向下语法分析器,其中的预测分析表是固定给出的,而分析过程严格按照教材的流程图走,输出的结果是表达式的分析栈。
编译原理_java语法分析器_C语言版 源码
编译原理课程的作业,java语法分析器,C语言版。在原有词法分析器基础上实现的简单语法分析。


非技术区
