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