java lr0分析,LR0分析器实验报告.doc

《编译?原理》

课程设?计性实验报告

课程?题目: ? ?LR(0)分析法

姓? 名: ? ? 钟继文

?专业班级: ? 计算机科?学与技术(1)班

指?导老师: ? ? 孙长圣老师

学 ? 号: ? ? 0019

报告日期:? ? 2015?年6月7日

编译原?理语法分析实验报告

?

实验内容

利?用C语言编写一个程序?,对字符串进行语法分?析,了解掌握实验的原?理及方法,要求该文法?为LR(0)文法。

?

实验目的

? LR(K?)分析方法是1965?年Knuth提出的,?括号中的K表示向右查?看输入串符号的个数。?对于大多数用无二义性?上下文无关文法描述的?语言都可以用相应的L?R分析器进行识别,而?且这种方法还具有分析?速度快,能准确、及时?地指出出错位置。它的?主要缺点是对于一个实?用语言文法的分析器的?构造工作量相当大,K?愈大构造愈复杂,实现?相当困难。

LR分析?法是一种自底向上分析?方法。它的分析过程是?一种规范归约过程,规?范归约是规范推导的逆?过程。规范推导是最右?推导,规范归约是其逆?过程,则是最左归约。? LR分析法的可归约?串是当前句型的句柄,?即最左直接短语。

对?于大多数用无二义性上?下文无关文法描述的语?言都可以用相应的LR?分析器进行识别,而且?这种方法还具有分析速?度快,能准确、及时地?指出出错位置。

本实?验通过设计、调试一个?简单的的LR分析器,?实现对词法分析程序所?提供的单词序列进行语?法检查和结构分析,进?一步掌握常用的语法分?析方法。

实?验功能

通过?定义的文法G,G是一?个LR(0)文法,输?入源码,能够基本判别?出该源码是否是正确的?。如果是正确的则接收?,反之,如果是错误的?则显示错误。

?

?实验步骤

类ALGO?LF的文法

-> ?

-?>

?-> ;

->b?egin

->?;d

? ->s;end

<?Compound T?ail> ->s;<?Compound T?ail>

-> b?egin ?

用小写字母表示终结?符,大写字母表示非终?结符

b:begin? d:d ?s:s e:e?nd

P:

B:

S:

H:?

T:?

则文法为:

1 ?P->B ? 5 ?H->H;d

2 ? P->S ? 6 ? T->se

3? B->H;T ? 7? T->s;T

?4 H->bd ? ?8 S->bT

拓?广后为G’,增加产生?式 P’->p

1 ? P’->P

?2 P->B

3 ? P->S

4 B?->H;T

5 H?->bd

6 H-?>H;d

7 T-?>se

8 T->?s;T

S->bT

?

3.项目集规范族?:

P’->·?P P’-?>P·

P->?·B P-?>B·

P->?·S P-?>S·

B->?·H;T B-?>H·;T B?->H;·T ? B->H;T·

? H->·bd ? H->b·d? H->bd? ·

H->·?H;d H->?H·;d H-?>H;·d ? H->H;d·

? T->·se ? T->s·e? T->se?·

T->·s?;T T-?>s·;T T?->s;·T ? T->s;T·?

S->·bT ? S->b·T ? S->bT ·

?4.LR(0)的分?析表

(s表示移进,?r表示归约)

状态

?ACTION

GOT?O

b

d

?s

e

;

#

P

?B

S

H

T

0?

S12

?1

2

3

4

?1

acc?

2

r?2

r2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值