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

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

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

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

北邮大三上编译原理语法分析实验报告.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)画出状态图得

化简得

(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