编译原理实验二;语法分析.doc

上传人:b****1 文档编号:261315 上传时间:2022-10-08 格式:DOC 页数:18 大小:551.50KB
下载 相关 举报
编译原理实验二;语法分析.doc_第1页
第1页 / 共18页
编译原理实验二;语法分析.doc_第2页
第2页 / 共18页
编译原理实验二;语法分析.doc_第3页
第3页 / 共18页
编译原理实验二;语法分析.doc_第4页
第4页 / 共18页
编译原理实验二;语法分析.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

编译原理实验二;语法分析.doc

《编译原理实验二;语法分析.doc》由会员分享,可在线阅读,更多相关《编译原理实验二;语法分析.doc(18页珍藏版)》请在冰豆网上搜索。

编译原理实验二;语法分析.doc

福州大学数学与计算机科学(软件)学院

编译原理

——语法分析器

成员:

杨霞030802107

王日日030802139

方艳丽030802102

实验二:

语法分析实验

一、实验目的

根据给出的文法编制LR

(1)分析程序,以便对任意输入的符号串进行分析。

本次实验的目的主要是加深对LR

(1)分析法的理解。

二、实验内容

对已给语言文法,构造LR

(1)分析表,编制语法分析程序,要求将错误信息输出到语法错误文件中,并输出分析句子的过程(显示栈的内容)

LR

(1)分析法的功能是利用LR

(1)分析表,对输入符号串自下而上的分析过程。

LR

(1)分析表的构造及分析过程。

三.实验文法

:

:

=

:

:

=

:

:

=const;|ε

:

:

==

|,=

:

:

=var;|ε

:

:

=|,

:

:

=procedure;;|ε

:

:

=:

=

|call|beginend

|ifthen|whiledo

:

:

=|;

:

:

=odd|

:

:

==|<>|<|>|<=|>=

:

:

=|

|

:

:

=+|-

:

:

=|

:

:

=*|/

:

:

=||(

18

文法缩略版:

P->S

S->BD

B->varH;

H->id|H,id

D->i=E|call(k)|if(k)DelseD|while(K)doD

K->ERE

R-><|>|>=|<=|<>|==

E->EOT|T

T->TQF|F

O->+|-

Q->*|/

F->id|nunber|(E)

:

:

=P

:

:

=S

:

:

=B

:

:

=H

:

:

=D

:

:

=K

:

:

=E

:

:

=T

:

:

=F

实验环境:

windowsmicrosoftvisualc++

实验原理:

构造项集

Setofltemsclosure(I)

{

repeatforeachA®a.Bb,ainJandeachprodutcion

B®gofGsuchthatB®.g,eachoffirst(ba)isnotinJ:

ADDB®.g,btoI

until…nomoreitemscanbeaddedtoI

returnI

}

Setofltemsgoto(I,X):

{

IfIisasetofLR

(1)itemsandXisagrammarsymbol(terminalornon-terminal),thengoto(I,X)isdefinedasfollows:

IfA.X,ainI

theneveryiteminclosure({AX.,a})willbeingoto(I,X).

}

Voiditems()

{

Cis{closure({S’®.S,$})}

repeatthefollowingsuntilnomoresetofLR

(1)itemscanbeaddedtoC.

foreachIinCandeachgrammarsymbolX

ifgoto(I,X)isnotemptyandnotinC

addgoto(I,X)toC

简略分析表:

0

1

2

3

4

5

6

7

8

9

10

11

12

20

21

22

23

24

25

id

num

call

if

else

while

do

*

>

@

D

H

K

E

T

F

0

 

 

 

 

 

 

 

 

 

 

 

r4

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

acc

 

 

 

 

 

 

2

S5

 

S6

S7

 

S8

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

S20

S21

 

 

 

 

 

 

 

S22

 

 

 

 

 

17

18

19

12

S23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

S20

S21

 

 

 

 

 

 

 

S22

 

 

 

 

30

34

18

19

14

S20

S21

 

 

 

 

 

 

 

S22

 

 

 

 

25

34

18

19

15

S16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

 

 

r7

 

 

 

 

 

 

r7

 

 

 

 

 

 

18

 

 

 

 

r12

 

 

S39

r12

 

r12

r12

 

 

 

 

 

 

19

 

 

 

 

r15

 

 

r15

r15

 

r15

r15

 

 

 

 

 

 

20

 

 

 

 

r16

 

 

r16

r16

 

r16

r16

 

 

 

 

 

 

21

 

 

 

 

r17

 

 

r17

r17

 

r17

r17

 

 

 

 

 

 

.. 

.. 

.. 

.. 

 ..

.. 

 ..

.. 

.. 

 .

 .

 

 

 

 

 

 

 

38

 

 

 

 

r13

 

 

S39

r13

 

r13

r13

 

 

 

 

 

 

39

S20

S21

 

 

 

 

 

 

 

S22

 

 

 

 

 

 

 

42

40

 

 

 

 

 

 

 

 

 

 

S41

 

 

 

 

 

 

 

41

 

 

 

 

r18

 

 

r18

r18

r18

 

r18

 

 

 

 

 

 

42

 

 

 

 

r14

 

 

r14

r14

r14

 

r14

31

 

 

 

 

 

43

S5

 

S6

 

 

S8

 

 

 

 

 

 

 

 

 

 

 

 

实验流程图:

实验结果:

输入:

输出:

输入的字符串以结束@

bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@

栈符号输入动作

0bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

03bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

0310bi,i,i;f(i>i)i=n*n+new(i>n)di=i+i@根据H->i规约

039bH,i,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

03915bH,i,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

0391516bH,i,i;f(i>i)i=n*n+new(i>n)di=i+i@根据H->H,i规约

039bH,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

03915bH,i;f(i>i)i=n*n+new(i>n)di=i+i@移入

0391516bH,i;f(i>i)i=n*n+new(i>n)di=i+i@根据H->H,i规约

039bH;f(i>i)i=n*n+new(i>n)di=i+i@移入

0392

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

当前位置:首页 > 小学教育 > 小学作文

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

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