- 6
- 0
- 约4.43千字
- 约 10页
- 2019-01-27 发布于广东
- 举报
实验编译原理作业一.doc
实验报告
实验Fl期: 年 月 H 星期
实验项目名称
实验项目类型
□演示型 □验证型 □基本训练型 □综合型 □设计型 □提高型
实验指导教师
实验地点
是否分组
小组其他成员
一、实验目的及要求
二、实验使用的主要设备(含软件系统)
三、 实验操作过程及内容
⑴无符号实数词法分析的思想。
对构成源程序的字符串从左至右逐个字符地对源程序进行扫描,产生单词序列,并用语 言的词法规则识别出一个个具有独立意义的单词符号.
⑵ 无符号实数的文法和根据文法生成的状态转换图(即有穷门动机)。 将G [〈无符号数>]文法转换成有穷自动机:
构造状态矩阵;将有穷自动机的状s, S2……Sn及输入的字a, a2……am构成一个n*m 的矩阵。
入 状态、\
d
■
e
8
+/-
0
1
2
4
1
1
2
4
z
2
3
3
3
4
z
4
6
5
5
6
6
6
z
Z
再写一个程序,把状态矩阵用二维数组表示。程序通过输入的字符转换状态,从而可 以识别出单词。
木程序的关键在状态表和缓冲区的运用。首先定义了一个布尔型函数ReadALine把输 入的字符串送到缓冲区中;然后定义了布尔型函数Run和Getchar实现对输入字符串的正 确性判断,更改Run函数可以改变程序功能:如可将状态表改变成识别“偶数”的冇限自 动机的状态表。
⑶程序处理的流程图
无符号实数的流程图开始 丿结束
无符号实数的流程图
开始 丿
结束
代码实现:
include std I i b. h //引入库函数
include std i o. h //引入基本的库函数
#include〈string. h //引入字符串的库函数
//状态表相关存储信息:
#def ine STATE_NUMBER 7 //状态数目
#def ine CHAR_NUMBER 4 //输入字符的种类:.;d ; e/E ; +/-
#define DOT 0 //输入数字在状态表中位于第0列
#define DIGIT 1 //小数点位于状态表的第1歹IJ
#define E 2 //E位于状态表的第2列
#define AD 3 //+/-运算符位于状态表的第3列
//State □ □为状态表,以整数组形式存放,0,1,2, 3, 4,5,6表示状态,-1表示没有此状态 int State [STATE_NUMBER][CHAR_NUMBER] =
{
{1,2,3,-1},
{-1,4,-1,-1],
{1,2,3,-1},
{-1,5,-1,6},
{一1,4, 3, -1},
1-1,5,-1,-1),
{-1,5,-1,-1}
};
int Q[STATE_NUMBER]二{0, 0, 1,0, 1, 1,0}; 〃终态标志:0 非终态,1 终态。
i nt i ndex=0; //错误坐标
//缓冲区:
//输入缓冲区:由专门函数操作(ReadALineO , GetChar 0)
#def ine BUFFER_S I ZE 1000 //表达式缓冲区大小
char Buffer[BUFFER_SIZE]; //表达式缓冲区,以’\0表示结束
int ipBuffer二0; //表达式缓冲区当前位置序号
char ch; //存放取得的一个字符
//函数声明:
int Run (); 〃对存储在缓冲区的一行字符串(以*结束)进行运行
void Ini t () ; //全局初始化
int ReadALineO ; //从键盘读一行(没有空格),存于表达式缓冲区Buffer []中
char GetChar (); //从缓冲区取一个字符,返回该字符的同时将它存于全局变量ch中
//主程序:
void ma i n ()
{
InitO ;
whi I e (ReadALineO) //读一行成功,对它进行判断
{
i f (Run 0) //对该行进行运行,看是否能被接受?
pr i ntf(The number i s r i ght!\n\rT);
e I se
{
pr i ntf (,zThe number i s error ! \n,z);
pr intf C错误位置在第%01个字符! \n\n, index) ; //显示错误位置
}
}
}
//对存储在缓冲区的一行字符串(以结束)进行运行
//返回:如果是无符号定点实数,返回true;否则返回:false
int Run()
{
int S二0; //S存放运行时的当前状态,目前为初态
i ndex二0;
while (GetChar () !二*)
{
i ndex++;
if (ch = O ch = 9) //数字
S二State[S] [DIGIT]; //将状态转换成输入数字后的状态
el
您可能关注的文档
- 实现智慧停车,至少需要四大核心技术.doc
- 实现最大程度减少维修的桥梁用耐大气腐蚀钢板及其应用技术.doc
- 实用临床医师.doc
- 实用卫生统计学课程2012秋.doc
- 实用型项目管理saas软件大盘点.doc
- 实用的行政部工作计划书及打算.doc
- 实用英语乘飞机旅行英语100句(英汉对照).doc
- 实用资料推荐健身俱乐部会所管理手册.doc
- 实用资料推荐汪氏蜂蜜行销策划案.doc
- 实用资料推荐金矿主竖井施工组织设计.doc
- 2026辽宁省面向西安交通大学选调应届优秀大学毕业生备考题库及一套答案详解.docx
- 传统文化在当代社会中的传承与融合.pptx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库及答案详解(最新).docx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库完整参考答案详解.docx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库及答案详解(考点梳理).docx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库及答案详解一套.docx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库及完整答案详解.docx
- 2026辽宁省面向西南财经大学选调应届优秀大学毕业生备考题库及答案详解(易错题).docx
- 2025年教师考试重点难点突破.docx
- 水利工程智能管理关键技术研究.docx
原创力文档

文档评论(0)