语法分析编程简说_第1页
语法分析编程简说_第2页
语法分析编程简说_第3页
语法分析编程简说_第4页
语法分析编程简说_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于用LR1方法编程数据结构的简述首先在文法处理中,程序就建立了一个非终极符和终极符得数组比如输入文法:S’S,SL=R,SR,L*R,Lid,RL非终极符有:

S’,S,

L,R那么有这样一个数组:stringnoter[]={“S’”,”S”,”L”,”

R”},这样就可以用0表示S’,1表示S,2表示L,……同样地终极符也是如此处理

文法推导式的表示:类似地要建立一个文法表,比如stringwenfa[]={“S’S”

,“SL=R”

,“SR”

,“L*R”,“Lid”

,“RL”},那么可以用1表示SL=R这个文法推导式LR0项目的表示:推得文法推导式后,然后对每一个文法推导式生成LR0项目,比如SL=R可以生成如:S.L=R,SL.=R,SL=.R,

SL=R.

的LR0项目,相应地要建立一个stringLR0Table[]={…..”S.L=R”,“SL.=R”,“SL=.R”,“SL=R.”……..

}这样就可以用数字表示相应的LR0项目了。比如:2对应S.L=R

即LR0Table[2]=“S.L=R

注意的是:.

应该用一个特殊的字符来表示,或者在程序中特殊处理,否则文法推导式中要是有.会出错。LR1项目可以表示为:数字_数字,例如可以用0_1其中用0可以在LR0Table中找到S.S,用1可以在终极符中找到#,那么0_1就表示S.S,#这样在LR1项目集族的建立过程中就能建立这样一个LR1项目的数组,例如:stringLR1Table[]={“0_1”,”0_2”,……}

这样对每一个元素都能得到相应的LR1项目。注意的是:因为LR1项目的个数是不定的,所以要加入特殊的处理,比如先根据建立一个比较大的缓冲,最后再生成最后的LR1项目数组,或者用动态存储技术。

LR1项目集的表示:从上我们可以看出用数字表示LR1项目,那么就可以用一个数字串表示LR1项目集,比如有一个LR1项目集是:(1)S.S,#

(2)S.L=R,#

(3)S.R,#

这样就可以用一个0_3_5来表示LR1项目集,比如用3可以从LR1项目数组中找到5_1,然后再用5可以在LR0项目数组中找到S.L=R,用1在终极符中找到#。注意:LR1项目集数组中的数字串一定要是用升序表示,这样有利于处理。相应地会有一个LR1项目集数组,那么也就可以用一个数字表示相应的LR1项目集。这样分析表就可以建立了用一个二维数组表示:intfxAction[][];

用数字表示移入或规约还有出错状态定义如下:〉=0的表示移入

-1表示出错文法推导式的编号相反数减10即为规约

例如fxAction[0][3]=20表示LR1项目集状态0

3表示终极符id

2表示移入的LR1项目集假若fxAction[0][3]=-11那么-11+10再取相反数为1即表示规约1推导式

谢谢大家人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论