记一次编译原理实验:
如果有问题或者建议可以留言,欢迎交流,不定时回复。
一.实验目的:
- 理解有穷自动机的作用;
- 利用五元组、状态图和矩阵表表示有穷自动机;
- 以程序实现有穷自动机的运行过程。
二.实验内容
所给自动机如图所示:
三.实验要求:
1.给出自动机的五元组形式及矩阵表示。
2.模拟 DFA 的识别算法
3.设计相应的例子进行测试。
功能要求:输入一个单行无空格的字符串(以“#”号结束),如果该字
符串是一个合法的输入,则显示“接受”,否则显示“不接受”。
四.实验步骤
1.给出自动机的五元组形式及矩阵表示。
2.写出编程思路、源代码;
3.写出上机调试时发现的问题,以及解决的过程;
4.写出你所使用的测试数据;
五.程序及运行结果(或实验数据记录及分析)
五元组:M=(K,&,F,S,Z) K={0,1,2,3},&={a,b},F={f(0,a)=1,f(0,b)=0,f(1,a)=1,f(1,b)=2,f(2,a)=1,f(2,b)=3,f(3,a)=1,f(3,b)=0},S={0},Z={3}
矩阵表示:
I Ia Ib
0 1 0
1 1 2
2 1 3
3 1 0
实现思路:
用stat来存储状态,检测每次输入的字符并作出相应的状态转移。
实验代码:
//class DFA is class to describe the DFA in image.
public class DFA {
private int[][] array = {
{
1, 0}, {
1, 2}, {
1, 3},