【综合文库】
实验二无符号数的有穷自动机的实现
学时数:4
[实验内容]:
无符号数的有穷自动机的实现。利用状态表和有限自动机的运行原理编制程序,使得
程序能够识别一个输入串是否为一个无符号定点实数。
[实验目的]:
1、理解有限自动机的作用;进一步理解自动机理论。 1、 用状态图和状态表表示有限自动机;
3、以程序实现有限自动机的运行过程;掌握文法转换成自动机的技术及有穷自动机实现的方法。
[实验要求]:
1、 设计要求:利用状态图或状态表相关理论,利用有限自动机理论。
2、 功能要求:输入一个单行无空格的字符串(以“#”号结束),如果该字符串是一个
合法的输入,则显示“接受”,否则显示“不接受”。 3、 输入/输出示例(以无符号定点实数为例):(1)输入:“3.14”,输出:“接受”;(2)输入:“3.1.4”,输出:“不接受”;(3)输入:“3ab”,输出:“不接受”。
[实验提示]:
1、无符号数的BNF描述如下:
0. ? d| .| e
1. ? d| .| e| ε 2. ? d
3. e| d| ε 4. ? d| +| -
5. ? d
6. ? d| ε
2、将G[]文法转换成有穷自动机见图1。
图1
3、构造状态矩阵;将有穷自动机的状S1 S2 ??Sn及输入的字a1 a2 ??am 构成一个n*m的矩阵。
1)根据状态矩阵设计出一个词法分析程序识别无符号数。 2)扫描无符号数,根据文法给出无符号数出错的位置。
[实验报告]:
1、写出无符号数词法分析的思想。
2、画出算法流程图。
3、写出调试程序出现的问题及解决的方法。 4、打印实验报告及程序清单。 5、报告给出测试的结果。
试验示例:有限自动机的运行
程序功能:
利用状态表和有限自动机的运行原理,识别一个输入串是否为一个有效的无符号定点实数。 例: 输入:1# 输出:接受 输入:3.14# 输出:接受 输入:3ab# 输出:不接受 输入:1.2.3
输出:不接受
输入数据要求:不能有空格,以"#"结束(在本程序可以不用"#"结束)。 输出:如果是无符号定点实数,显示“接受”;否则显示“不接受”。
查看全文
false