本项目为《编译原理》课程作业,旨在设计并实现一个词法分析器。通过该项目,我们掌握了正则表达式定义语言规则、有限状态自动机构建及C++程序实现的技术。
所使用的开发环境是Windows 10 和 Python (PyCharm) 环境,请注意,在 main.py 文件里有一个定义函数的地方,如果没有该位置可能会导致程序错误,建议注释掉。
本课题的目标是创建一个词法分析程序,使用DFA(确定性有限自动机)来实现。这个程序有两个输入:1)包含一组三型文法规则的文本段落件;2)需要识别字符串的源代码文本段落件。 程序输出是一个token表,该表由五种类型组成:关键词、标识符、常量、限定符和运算符。
项目简介如下:
词法分析器读取三型文法,并将其转换为一个起点与终点的NFA(非确定性有限自动机),然后使用子集构造方法将 NFA 转换为 DFA。之后,创建DFA的索引表,在后续扫描代码时,程序会把每个单词带入DFA的索引表进行状态转换。如果到达终态,则说明该词符合文法要求,并输出token列表(三元组:所在行号、类别和 token 内容)。若出错则输出另一种形式的三元组(行号, 对错判定,token内容),并将生成的token列表写入txt文件供任务二中的LR(1)语法分析器使用。同时结果也会被保存到result.txt 文件中以便查看。