LR分析Word格式文档下载.doc

上传人:b****1 文档编号:13105608 上传时间:2022-10-05 格式:DOC 页数:11 大小:144KB
下载 相关 举报
LR分析Word格式文档下载.doc_第1页
第1页 / 共11页
LR分析Word格式文档下载.doc_第2页
第2页 / 共11页
LR分析Word格式文档下载.doc_第3页
第3页 / 共11页
LR分析Word格式文档下载.doc_第4页
第4页 / 共11页
LR分析Word格式文档下载.doc_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

LR分析Word格式文档下载.doc

《LR分析Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《LR分析Word格式文档下载.doc(11页珍藏版)》请在冰豆网上搜索。

LR分析Word格式文档下载.doc

5.F→(E)

6.F→ID

该文法的LALR

(1)分析表如下:

分析表

状态

动作Action表(Yy_action)

转移Goto表(Yy_goto)

#

ID

+

*

S

E

T

F

-

S1

S2

3

4

5

1

R6

2

6

A

S7

R2

S8

R4

S9

7

10

8

11

9

R5

R1

R3

SN=移进并转移到状态NA=accept接受

RN=按第N条产生式进行规约-=error转移

(2)LR分析器总控程序框架如下:

push(0);

advance();

while(Action[tos][sym]!

=accept)

if(Action[tos][sym]==’-’)error();

elseif(Action[tos][sym]==SN){

push(N);

}

elseif(Action[tos][sym]==RN{

act(N);

pop(产生式N的右部的符号个数);

push(Goto[新tos][产生式N的左部符号]);

accept();

上述算法中的有关函数与符号的意义如下:

accept():

返回成功状态,LR分析器停止工作;

act(N):

执行利用产生式N的归约的动作,通常为产生代码;

advance():

丛输入流读下一单词到sym;

error():

出错处理;

pop(N):

从栈顶弹出N个符号(状态);

push(N):

把状态N压入状态栈;

sym:

当前输入的单词符号;

tos:

栈顶状态号。

(3)存放LR分析表的数据结构

①实现方法一:

用一个二维整数数组表示

数组元素为表示动作的整数。

数组的行下标为状态号,列下标用来表示终结符与非终结符的整数表示。

数组元素可作如下约定:

正整数:

表示移进动作,如S6用数6表示;

负整数:

表示归约动作,如R5用数-5表示;

0:

表示接受,通常为按产生式0归约;

状态号也用整数表示;

用不可能是状态号的较大的整数表示错误转移。

请将上述LALR

(1)分析表用这种表示方法,完成LR分析器的程序设计,并添加输出状态栈内容的功能。

用上述表达式文法G的一个句子作为输入,进行测试。

②实现方法二:

采用压缩表示法

动作Action表的每一行用一个数组表示,数组的第一个元素是本数组中存放的数偶个数,第二个元素到最后一个元素都以[终结符,动作]的数偶的形式存放。

再用一个以状态号为下标的下标数组,每个元素含一个指向数偶数组的指针。

若数组元素的值为NULL,则表示从此状态无转移弧发出。

若分析表有几行相同,则只需保存一行,其它元素则都指向存放这一行表的数组即可。

转移Goto表也按同样方式组织,只是这个行数组的数偶为[非终结符,下一状态号]。

每个行数组Yyan表示动作表Yy_action的一行,每个行数组Yygn表示转移表Yy_goto的一行。

假定上述表达式文法G中终结符及非终结符的整数值为:

终结符:

#ID+*()非终结符:

SETF

整数值:

012345整数值:

0123

Yy_action数组是以状态号为下标的下标数组,每个元素含有指向数组Yyan的指针;

下标数组Yy_goto的每个元素含有指向数组Yygn的指针。

表达式文法G的LALR

(1)分析表的具体压缩表示如下:

Yy_action

.

4,2

1,1

Yya000

5,-6

3,-6

2,-6

0,-6

Yya001

0,0

2,7

Yya003

5,-2

2,-2

0,-2

3,8

Yya004

5,-4

3,-4

2,-4

0,-4

Yya005

5,9

Yya006

5,-5

3,-5

2,-5

0,-5

Yya009

5,-1

2,-1

0,-1

Yya010

5,-3

2,-3

0,-3

Yya011

Yyg000

3,5

2,4

1,3

NULL

1,6

Yyg002

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

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

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

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