当前位置:文档之家› 编译原理实验报告二

编译原理实验报告二

编译原理实验报告
题目构造识别字符串的自动机学院
专业
班级
学号
学生姓名
指导教师
西安思源学院教务处制
二〇一年
实验二构造识别符号串的自动机
一、实验目的
1 掌握形式语言与自动机的概念
2 了解正规集及有穷自动机的关系
3 能构造识别相应符号串的自动机
4 能构造词法分析程序所识别的各类单词的自动机
二、实验环境
Microsoft Visual C++ 6.0
三、实验内容
1 用高级语言编写程序:该程序能接受C++所有的标识符。

2 用高级语言编写程序:该程序能接受C++所有的常数(整数和定点小数)。

3 用高级语言编写程序:该程序能接受C++的所有保留字。

4 用高级语言编写程序:该程序能接受C++的所有界符、运算符。

四、设计说明
void main()
{ void find_word();
void show_all();
void Input();
Input();
cout<<"运行结果如下"<<endl;
find_word();
show_all();
}
void find_word()
{
for(int i=0;i<2000;i++)
{
if(ch[i]=='+'||ch[i]=='-'||ch[i]=='*'||ch[i]=='/'||ch[i]=='&'||ch[i]=='%'|| ch[i]=='#'||ch[i]=='!'||ch[i]=='['||ch[i]==']'||ch[i]=='{'||ch[i]=='}'||ch[i]== '<'||ch[i]=='>'||ch[i]=='('||ch[i]==')')
{
c[t]=ch[i];
t++;
k++;
j++;
}
else if(ch[i]==' '||ch[i]=='\t')
{
b[k]=' ';
a[j]=' ';
j++;
k++;
}
else if(ch[i]<='z'&&ch[i]>='A'||ch[i]<='@'&&ch[i]>=':')
{
a[j]=ch[i];
k++;
j++;
}
else
if(ch[i]<='9'&&ch[i]>='0'||ch[i]=='.')
{
b[k]=ch[i];
j++;
k++;
}
}
}
void show_all()
{
cout<<endl;
cout<<"符号是";
for(i=0;i<j;i++)
{
cout<<c[i];
}
cout<<endl;
cout<<"单词是 ";
for(i=0;i<j;i++)
{
cout<<a[i];
}
cout<<endl;
cout<<"数字是 ";
for(i=0;i<k;i++)
{
cout<<b[i];
}
cout<<endl;
}
void Input()
{
cout<<"请进行输入操作"<<endl;
char fp;
while( fp!='$')
{
fp=getchar();
ch[i]=fp;
i++;
}
}
分析代码
#include <iostream.h>
#include <stdio.h>
char ch[2000];
char a[2000];
char b[2000];
char c[2000];
int i,j,k,t;
void main()
运行结果:
五、实验总结
对编译原理这门课有了进一步的了解,掌握了一些基本的方法和技能对实验有了进一步的认识。

相关主题