Advertisement

编译原理手写词法分析器

阅读量:

首先绘制DFA的结构图

第二题(得分1.00)

完成第二题的DFA绘制后,觉得若再套用一层循环会显得过于复杂,因此一时之间不敢贸然动手。后来参考了题解,发现其中采用goto语句编写出的答案结构清晰,令人一目了然。

此前学习的C语言教材中曾明确指出应避免使用goto语句:“在结构化程序设计中通常不推荐使用goto语句,以免导致程序流程混乱,从而增加理解与调试的难度。”因此,在决定是否采用该方法时曾犹豫了一段时间。最终在向老师咨询后确认使用goto语句编写词法分析器是可行的。其主要原因在于,通过该语句可以更直观地与DFA状态图相对应,而如果采用for循环嵌套的方式则显得较为繁琐。

确定思路后,我选择了STL中的set容器用于识别字符类型,并将goto语句对应于DFA中的直线路径。然而在完成代码编写后发现仅有一组数据能够正确运行。究其原因在于最初的DFA设计存在缺陷。由于该部分为自行设计,修改起来相对便捷,并且最终顺利解决了问题。相较于第一题出现Bug时自己却无法修正的情况而言,这次处理过程要顺利得多。

未能妥善解决的问题包括:

  1. 题目未对报错信息的具体书写方式作出明确规定

全部评论 (0)

还没有任何评论哟~