欢迎来到天天文库
浏览记录
ID:35627182
大小:49.50 KB
页数:13页
时间:2019-04-03
《编译原理课程设计--词法自动机》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、编译原理课程设计一、使用词法分析,语法分析将布尔表达式转换为逆波兰式二、LL(1)语法分析程序设计要求(1)对输入文法,它能判断是否为LL(1)文法,若是,则转(2);否则报错并终止;(2)输入已知文法,由程序自动生成它的LL(1)分析表;(3)对于给定的输入串,应能判断识别该串是否为给定文法的句型。三、设计题目:词法自动机设计要求:用C语言或其它高级语言对PASCAL子集编制一个一遍扫描的小型编译程序对词法分析,完成识别语言单词的任务。对语法分析,若输入串是文法的句子,则输出语法分析成功,否则,给出错误的行号,错误的性质。语法描述:文法:<程序>→begin
2、<语句串>end<语句串>→<语句>{;<语句>}<语句>→<赋值语句>
3、<条件语句>
4、<循环语句><赋值语句>→<变量>:=<表达式><条件语句>→if<条件>then<语句><循环语句>→while<条件>do<语句><条件>→<表达式><关系符><表达式><表达式>→<项>{+<项>
5、—<项>}<项>→<因子>{*<因子>
6、/<因子>}<因子>→<变量>
7、<无符号整数>
8、(<表达式>)<无符号整数>→<数字>{<数字>}<变量>→<标识符><标识符>→<字母>{<字母>
9、<数字>}<关系符>→<
10、<=
11、>
12、>=
13、=
14、<><字母>→a
15、b
16、c
17、...
18、x
19、
20、y
21、z<数字>→0
22、1
23、2
24、...
25、9<界符>→,
26、;
27、(
28、)
29、......四、设计题目:有限自动机的运行设计目的:1、 理解有限自动机的作用2、 利用转态图和状态表表示有限自动机编译原理课程设计一、使用词法分析,语法分析将布尔表达式转换为逆波兰式二、LL(1)语法分析程序设计要求(1)对输入文法,它能判断是否为LL(1)文法,若是,则转(2);否则报错并终止;(2)输入已知文法,由程序自动生成它的LL(1)分析表;(3)对于给定的输入串,应能判断识别该串是否为给定文法的句型。三、设计题目:词法自动机设计要求:用C语言或其它高级
30、语言对PASCAL子集编制一个一遍扫描的小型编译程序对词法分析,完成识别语言单词的任务。对语法分析,若输入串是文法的句子,则输出语法分析成功,否则,给出错误的行号,错误的性质。语法描述:文法:<程序>→begin<语句串>end<语句串>→<语句>{;<语句>}<语句>→<赋值语句>
31、<条件语句>
32、<循环语句><赋值语句>→<变量>:=<表达式><条件语句>→if<条件>then<语句><循环语句>→while<条件>do<语句><条件>→<表达式><关系符><表达式><表达式>→<项>{+<项>
33、—<项>}<项>→<因子>{*<因子>
34、/<因子>}<因子>→
35、<变量>
36、<无符号整数>
37、(<表达式>)<无符号整数>→<数字>{<数字>}<变量>→<标识符><标识符>→<字母>{<字母>
38、<数字>}<关系符>→<
39、<=
40、>
41、>=
42、=
43、<><字母>→a
44、b
45、c
46、...
47、x
48、y
49、z<数字>→0
50、1
51、2
52、...
53、9<界符>→,
54、;
55、(
56、)
57、......四、设计题目:有限自动机的运行设计目的:1、 理解有限自动机的作用2、 利用转态图和状态表表示有限自动机3、 以程序实现有限自动机的运行过程设计内容:(注:题目详细要求)利用状态表和有限自动机的运行原理编制程序,使得程序能够识别一
58、个输入串是否为一个有效的符号串,具体可以选择下面之一:无符号定点实数、自然数、整数、十六进制数或其它自己定义的符号串。设计思想:本程序实现对无符号定点实数的判断,正确接受,否则不接受。本程序的关键在状态表和缓冲区的运用。首先定义了一个布尔型函数ReadALine把输入的字符串送到缓冲区中;然后定义了布尔型函数Run 和Getchar实现对输入字符串的正确性判断,更改Run函数可以改变程序功能:如可将状态表改变成识别“偶数”的有限自动机的状态表。附录:(完整代码)有限自动机#include #include //状态表相关存
59、储信息:#define STATE_NUMBER 4 //状态数目#define CHAR_NUMBER 2 //输入字符的种类: d 和 .#define DIGIT 0 //输入数字在状态表中位于第0列//State[][]为状态表,以整数组形式存放,0,1,2,3表示状态,-1表示没有此状态int State[STATE_NUMBER][CHAR_NUMBER]= {{1,-1},{1,2}, {3,-1}, {3,-1}};int Q[STATE_NUMBER] = {0,1,0,1}; //终态标志:0非终态,1终态。/
60、/缓冲区://输入缓冲区:由专门函数操
此文档下载收益归作者所有