本压缩文件包含编译技术课程第三次实验的所有相关材料和说明文档,旨在通过实践加深学生对词法分析、语法分析等核心概念的理解与应用。
第三次上机任务—求first集合[大连理工大学 软件学院]【编译技术上机 求First集】【代码有思路+注释】【代码完美运行,界面清晰易懂;包含附加题完美运行代码:求Follow集】目的:熟练掌握自上而下的语法分析方法,并能用程序实现。要求:例如. 使用的文法如下:
E -> TE
E -> E + TE
T -> FT
T -> T * FT
F -> (E)
F -> id
编写First函数,实现其求解过程。
提示:
1. 非终结符为 大写字母;或 后面带’的大写字母
2. 终结符为 小写字母和符号(+、*)
3. 推导符号为 或->
4. 用end结束文法。
5. 不针对特定文法,编写求first函数。
有余力的同学可进一步考虑如下扩展:
1 编写提取左因子的算法。
2 编写消除左递归的算法。
3 编写Follow函数,实现其求解过程。
运行结果:
非终结符 First集合
-------------------------
E | { id, ( }
-------------------------
T | { id, ( }
-------------------------
F | { id, ( }
-------------------------
E | { +, # }
-------------------------
T | { *, # }
非终结符 Follow集合
------------------------------
E | { ), $ }
------------------------------
T | { +, ), $ }
------------------------------
F | { +, *, ), $ }
------------------------------