武汉理工-编译原理-词法分析实验

352 阅读1分钟

实验内容:

【问题描述】基于DFA的词法分析程序的实现问题的一种描述是:

编写一个程序,输入一个确定的有穷自动机(DFA),输出词法分析程序代码,该代码功能与DFA识别功能等价。

【基本要求】设置DFA初始状态X,终态Y,过程态用数字表示:0 1 2 3………

【测试用例】

测试数据:  

(1)DFA:

 X X-a->0 X-b->X

              Y Y-a->0 Y-b->X

0 0-a->0 0-b->2

2 2-a->0 2-b->Y

(2) abb;ba

输出结果应为:(1)scanner.cpp

(2)pass;error

实验基本算法设计:

通过先输入一个确定的有穷自动机,将自动机经过处理之后保存到字符串数组中,数组中的每一项存储一条产生式的初态、过程态、转移后的状态三个状态,随后在DFAFC函数中对输入字符串进行判断,判断初态是否能由输入字符串的第一个字符转移到下一个状态,若可以则将得到的下一个状态作为下一次循环的初态,若不行,则退出循环,判断输入字符串的下一个字符。若可以达到终态,则返回pass不行则返回error.

具体代码:

image.png

image.png