编译原理第4章4_第1页
编译原理第4章4_第2页
编译原理第4章4_第3页
编译原理第4章4_第4页
编译原理第4章4_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、 对于算符优先分析法,它虽然是一种自下而上的语法分析方法,但它并不是一种规范归约一种规范归约的分析方法。 这是因为在算符优先文法中,仅在终结符号之间定义优先关系而未对非终结符定义优先关系,从而无法使用优先关系表去识别由单个非终结符组成的可归约串,这也就是说,算符优先分析法不是用句柄来刻画可归约串,而是用最最左素短语左素短语来刻画可归约串的。1. 最左素短语最左素短语 所谓句型的素短语素短语是指这样一种短语,它至少包含一个终结符,并且除自身之外,不再包含其它的素短语。句型最左边的素短语称最左素短语最左素短语。例如,有文法 G E E E + T | T T T * F | F F (E) | i

2、d 求该文法句型T + T * F + id的素短语和最左素短语。2. . 识别句型最左素短语的方法识别句型最左素短语的方法 由算符文法的定义可知,算符优先文法的任何句型都没有相邻的两个非终结符。其句型总可以表示成:$ N1a1 N2a2 Nnan Nn+1$ 其中每个Ni为非终结符或空, ai为终结符(1in)对算符优先文法G有如下定理: 一个算符优先文法G的任何句型的最左素短语是满足下列条件的最左子串:Ni ai Ni+1 ai+1 aj Nj+1 ai-1 ai.根据最左素短语的定理,最左素短语中的终结符号具有相同的优先关系,并且,由于最左素短语中的符号是当时最先要归约的串,其优先关系先

3、于最左素短语之外的符号,所以我们使用一个用于存放文法符号的先进后出栈,并利用优先关系表,可以确定最左素短语是否已形成来决定分析器的动作。 3. 3. 算符优先分析程序的设计算符优先分析程序的设计基本思想:$t1t3tj+1t2tjti+1tn$符号栈优先关系ti 尾头最左素短语3. 3. 算符优先分析程序的设计算符优先分析程序的设计 .= =.aj aj+1ai ai aj-1 aj=.=.下面给出算符优先分析算法。 输入:输入符号串W和优先关系表。 输出:若W是正确的句子,则接收, 否则输出错误信息。 方法:执行下图算法。栈置初值 K 1, SK $ 当前输入符号读入aSK是终结符?j K

4、Y j K1NS j 是终结符?Q S j , j j-1YS j+1SK是最左素短语K j+1 , SK NY.结束Y K=2 且 a =$?NSK aK K+1YerrorNj j-1NS j a ?.S j a ? 或 S j a ?N.=.YS j Q?.=.归约id$移进$.归约$.$=.结束$id+ id $移进.$ N+id $移进.归约 由于算符优先分析法跳过了所有单非产生式之间的归约,这样算符优先分析比规范归约要快得多,这既是优点也是缺点。由于忽略非终结符在归约过程中的作用,可能导致把本来不是句子的输入串误认为是文法句子。 设有算符优先文法A A;D | DD D(E) | FF a | (A)E E+A | A 该文法对应的算符优先关系表如下表所示。 ; a + ( ) $ ; a + ( ) $.=.=.对输入串(aa)进行算符优先分析当文法有n个终结符时,优先矩阵需占(n+1)2个存储单元优先函数的引用是一种内存占用少并便于使用的方法,当文法有n个终结符时,只需2(n+1)个存储单元1、优先函数f和g的定义当a) b时, f(a) g(b);f,g分别称为栈内优先函数和栈外优先函数;把优先关系表用优先函数来记录,称作优先关系表的线性化。不是所有的优先关系表都能线性化;且若存在优先函数,不唯

温馨提示

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

评论

0/150

提交评论