五、 心得体会
通过本次专题实验,我更加深入的理解了LL(1)语法分析器的构造以及其程序构造。 由于此种方法是以栈的形式进行语法分析处理,所以其代码量相对于递归下降语法分析少了许多,但也是因为用了栈作为语法处理的数据结构导致其报错信息只能提供错误位置,很难像递归下降那样精准的报出错误信息。在像程序中输入LL(1)分析表时因为有些非终结符是多字符的,所以无法简单的按照单字节对非终结符进行处理。因此我将每个非终结符和终结符用一个字符串表示,在分析表中每个格子都是一个字符串序列,因此免除了许多不必要的处理,使得编写更加容易。
目前该工程已上传至我的Github仓库中。
附录
[1] parse.cpp和parse.h为算符优先分析程序模块 [2] main.cpp为输入输出处理模块 [3] parse.exe为项目生成可执行文件 [4] makefile为项目编译文件
[5] ntable.txt为关键字及标识符对照表配置文件 [6] test1.lexer和test2.lexer为项目测试样例