北邮大三上编译原理语法分析实验报告.docx

上传人:b****3 文档编号:27169595 上传时间:2023-06-27 格式:DOCX 页数:15 大小:465.54KB
下载 相关 举报
北邮大三上编译原理语法分析实验报告.docx_第1页
第1页 / 共15页
北邮大三上编译原理语法分析实验报告.docx_第2页
第2页 / 共15页
北邮大三上编译原理语法分析实验报告.docx_第3页
第3页 / 共15页
北邮大三上编译原理语法分析实验报告.docx_第4页
第4页 / 共15页
北邮大三上编译原理语法分析实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

北邮大三上编译原理语法分析实验报告.docx

《北邮大三上编译原理语法分析实验报告.docx》由会员分享,可在线阅读,更多相关《北邮大三上编译原理语法分析实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

北邮大三上编译原理语法分析实验报告.docx

北邮大三上编译原理语法分析实验报告

 

编译原理

第四章语法分析

 

班级:

09211311

学号:

姓名:

schnee

 

1.消除左递归……………………………………………………………………………………………………………………….2

2.画状态转移图………………………………………………………………………………………………………………3

3.编程实现递归调用自顶向下分析……………………………………………………………………….3

1.构造识别所有活前缀的DFA…………………………………………………………………………………………………………….6

2.构造LR分析表…………………………………………………………………………………………………………………….7

3.编程实现算法4.3,实现自底向上LR分析…………………………………………………………………………………..8

4.运行结果截图………………………………………………………………………………………………………………………….11

 

1.实验题目和要求

题目:

语法分析程序的设计与实现。

实验容:

编写语法分析程序,实现对算术表达式的语法分析。

要求所分析算术表达式由如下的文法产生。

实验要求:

在对输入表达式进行分析的过程中,输出所采用的产生式。

法1:

编写递归调用程序实现自顶向下的分析。

法2:

编写LL

(1)语法分析程序,要求如下。

(1)编程实现算法4.2,为给定文法自动构造预测分析表。

(2)编程实现算法4.1,构造LL

(1)预测分析程序。

法3:

编写语法分析程序实现自底向上的分析,要求如下。

(1)构造识别所有活前缀的DFA。

(2)构造LR分析表。

(3)编程实现算法4.3,构造LR分析程序。

法4:

利用YACC自动生成语法分析程序,调用LEX自动生成的词法分析程序。

 

2.递归调用预测分析实现自顶向下分析(法1)

(1)消除文法左递归。

文法改写为:

 

(2)画出状态图得

0

1

2

E:

T

E

E

T

3

4

5

6

E:

+-

7

8

9

T:

F

T

T

F

10

T:

*

/

11

13

12

14

15

16

17

E

idnum

F:

化简得

0

3

6

+-

T

E:

7

8

13

*/

F

T:

14

15

16

17

E

idnum

F:

(3)预测分析程序的实现

1说明

定义函数error()为错误处理子程序。

定义函数forward_pointer()为指向输入串的指针前进一位的相关子程序。

定义字符cur_token为当前记号,即语法分析时的终结符。

对应三个非终结符,各定义一个子程序。

主函数从开始符出发。

②源程序

 

3.LR实现自底向上分析(法三)

(1)构造识别所有活前缀的DFA。

构造扩展文法

FIRST和FOLLOW集如下

E

T

F

FIRST

id,(,num

id,(,num

id,(,num

FOLLOW

$,),+,-

$,),+,-,*,/

$,),+,-,*,/

构造识别所有活前缀的DFA如下

(2)构造LR分析表。

(1)

(4)

(7)

(2)

(5)

(8)

(3)

(6)

(9)

状态

action

goto

+

-

*

/

id

num

$

E

T

F

0

s4

S6

S5

1

2

3

1

s7

s8

acc

2

r3

r3

s9

s10

r3

r3

3

r6

r6

r6

r6

r6

r6

4

r7

r7

r7

r7

r7

r7

5

s4

s6

s5

11

2

3

6

r9

r9

r9

r9

r9

r9

7

s4

s6

s5

12

3

8

s4

s6

s5

13

3

9

s4

s6

s5

14

10

s4

s6

s5

15

11

s7

s8

s16

16

12

r1

r1

s9

s10

r1

r1

13

r2

r2

s9

s10

r2

r2

14

r4

r4

r4

r4

r4

r4

15

r5

r5

r5

r5

r5

r5

16

r8

r8

r8

r8

r8

r8

 

(3)编程实现算法4.3,构造LR分析程序。

(4)运行结果截图:

1输入符号串为id+id,即记号流为404时的运行结果

2输入符号串为(id+id)*num/(id-num),即记号流为token={6,4,0,4,7,2,5,3,6,4,1,5,7};时的运行结果

3错误处理示例,输入符号串为id+),即记号流为407时的运行结果

教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。

教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1