编译原理实验三——语法分析(递归下降法)
2006-05-31 22:18
555 查看
[实验任务]
完成以下描述算术表达式的LL(1)文法的递归下降分析程序
G[E]:
E→TE′
E′→ATE′|ε
T→FT′
T′→MFT′|ε
F→ (E)|i
A→+|-
M→*|/
说明:终结符号i为用户定义的简单变量,即标识符的定义。
[设计要求]
1、 输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。
2、 递归下降分析程序应能发现输入串出错。
3、 设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。
demo.cpp
完成以下描述算术表达式的LL(1)文法的递归下降分析程序
G[E]:
E→TE′
E′→ATE′|ε
T→FT′
T′→MFT′|ε
F→ (E)|i
A→+|-
M→*|/
说明:终结符号i为用户定义的简单变量,即标识符的定义。
[设计要求]
1、 输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。
2、 递归下降分析程序应能发现输入串出错。
3、 设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。
bool E() { if (T()) { if (E_prime()) { return true; } } return false; } bool E_prime() { if (A()) { if (T()) { if (E_prime()) { return true; } else return false; } else return false; } return true; } bool T() { if (F()) { if (T_prime()) { return true; } } return false; } bool T_prime() { if (M()) { if (F()) { if (T_prime()) { return true; } else return false; } else return false; } return true; } bool F() { if (a == '(') { advance(); if (E()) { if (a == ')') { advance(); return true; } } } else if (a == 'i') { advance(); return true; } return false; } bool A() { if (a == '+') { advance(); return true; } else if (a == '-') { advance(); return true; } return false; } bool M() { if (a == '*') { advance(); return true; } else if (a == '/') { advance(); return true; } return false; } |
相关文章推荐
- 编译原理 实验3 递归下降语法分析程序设计
- 编译原理 实验总结及实现分析 递归下降与算符优先原理
- 编译原理实验2-递归下降分析–表达式求值
- 编译原理实验3——递归下降分析
- 编译原理实验2-递归下降分析法
- 编译原理 递归下降分析 的应用
- 编译原理实验二——语法分析(预测分析)
- 编译原理及实践(Compiler Construction Principles and Practice)——简单的递归下降程序计算器
- 哈工大编译原理实验2——语法分析
- 递归下降法的语法分析器-3-编译原理
- 编译原理语法分析器递归下降法求助
- 递归下降法的语法分析器-3.1-编译原理
- 【编译原理】自顶向下的语法分析之递归下降分析法
- 编译原理---递归下降分析法
- 编译原理-递归下降分析器
- 递归下降法的语法分析器-3.1-编译原理
- 编译原理学习笔记05——(识别孙悟空72变之魔鬼特训—递归下降分析程序构造)——2014_1_20
- 编译原理--递归下降语法分析源代码(C Language)
- 编译原理-递归下降语法分析器(Java)
- 哈工大软件学院编译原理实验2——语法分析