结合课堂上学习的理论知识,通过 C++实现语法分析器,了解语法分析的
原理。掌握语法分析程序设计的原理和构造方法。
实验环境:
Vc++;
二. 实验要求
(一)对于如下的文法,试编写调试一个语法分析程序:
E → E+T | T
T → T*F | F
F → P^F| P
P→ ( E ) | i
要求和提示:
(1) 可选择一种你感兴趣的语法分析方法(LL(1) 、算符优先、递归下降、
SLR(1)等)作为编制语法分析程序的依据。
(2) 对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构
造所给文法的机内表示。
(3) 能进行分析过程模拟。如输入一个句子,能输出与句子对应的语法树,
能对语法树生成过程进行模拟;能够输出分析过程每一步符号栈的变化
情况。
(二)First 集和 Follow 集生成算法模拟
【问题描述】
设计一个由给定文法生成 First 集和 Follow 集并进行简化的算法动态模拟。
(算法参见教材)
【基本要求】
动态模拟算法的基本功能是:
(1) 输入一个文法 G;
(2) 输出由文法 G 构造 FIRST 集的算法;
(3) 输出 First 集;
(4) 输出由文法 G 构造 FOLLOW 集的算法;
(5) 输出 FOLLOW 集。
【测试数据】
i
i
)
)
(
(
*
*
+
+
F
F
的
的
first
first
集
集
T
T
的
的
first
first
集
集
E
E
的
的
first
first
集
集
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1