- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 根据最左素短语的定理,最左素短语中的终结符号具有相同的优先关系,并且,由于最左素短语中的符号是当时最先要归约的串,其优先关系先于最左素短语之外的符号,所以我们使用一个用于存放文法符号的先进后出栈,并利用优先关系表,可以确定最左素短语是否已形成来决定分析器的动作。 * 由于算符优先分析法跳过了所有单非产生式之间的归约,这样算符优先分析比规范归约要快得多,这既是优点也是缺点。由于忽略非终结符在归约过程中的作用,可能导致把本来不是句子的输入串误认为是文法句子。 * 当然,算符优先分析的这种局限性可以从技术上加以弥补。 4.4.5 优先函数的构造 ⑶重复执行步骤⑵直到过程收敛。重复过程中,若f(a)或者g(b)的值大于2n,则表明该优先关系表不存在优先函数。 + * i ( ) + * i ( ) . . . . . . . . . . . = . . . . . . . . . . eg. + * i ( ) f 0 0 0 0 0 g 0 0 0 0 0 1 2 2 2 1 3 4 4 1 3 1 2 3 2 3 4 5 5 4 4 优先函数 优先关系表 4.4.5 优先函数的构造 方法二:Bell有向图法 ⑵对每个结点赋予一个数,该数数值等于从该结点出发所能到达的结点(包括自身在内)的个数;对任意终结符a所构造的两个结点fa和ga,赋给结点fa的数作为函数f(a)的值,赋给结点ga的值作为函数g(a)的值; ⑶对构造出来的优先函数进行检查,看是否与原有的优先关系表矛盾。若没有矛盾,则即为所求;否则不存在优先函数。 ⑴对每个终结符a(包括$),构造两个结点fa和ga;对于任意终结符a和b,依照如下规则构造结点之间的有向边:如果a b或者a b,则从结点fa引一条有向边指向结点gb;如果a b或者a b,则从结点gb引一条有向边指向结点fa。 . . = . = . 4.4.5 优先函数的构造 + * i ( ) + * i ( ) . . . . . . . . . . . = . . . . . . . . . . 优先函数 优先关系表 f+ g) g( gi g* g+ f) f( fi f* f+: f+, g+, f(, g); + * i ( ) f g g+: g+,f(,g); f*: f*, g*, f+,g+,f(,g); g*: g*,f+,g+,f(,g); fi: fi, g*,f+,g+,f(,g); gi: gi,f*, g*,f+,g+,f(, g); f(: f(, g); g(: g(,f*, g*,f+,g+,f(, g); f): f), g*,f+,g+,f(,g); g): f(, g); 4 3 6 5 6 7 2 7 6 2 4.4.6 算符优先分析法的局限性 设有算符优先文法 A → A;D | D D → D(E) | F F → a | (A) E → E+A | A 返回 4.4.6算符优先分析法的局限性 该文法对应的算符优先关系表如下表所示。 ; a + ( ) $ ; a + ( ) $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . = . 4.4.6算符优先分析法的局限性 对输入串(a+a)归约过程: (a+a) ? (N+a) ? (N+N) ? (N) ? N 因此,从该文法推导不出(a+a)。 即输入串(a+a)不是文法句子。 ? ? ? ? 返回产生式 * 也就是说,这种分析过程本质上是一种穷举试探过程,是反复使用不同规则,谋求匹配输入串的过程。 试探发生回溯。 * 上述自上而下为输入串W建立语法树的过程,实际也是设法为输入串建立一个最左推导序列:S?aAb?adb。 由于对输入串从左向右进行扫描,使用最左推导,才能保证按从左到右扫描顺序匹配输入串。 根据以上分析,不难看出,非确定的自上而下分析法即是带回溯的自上而下分析法, 实际上是一种穷举的试探方法,其分析效率极低,代价很高,在实用的编译程序中是不常用的。我们通常使用确定的自上而下分析法进行语法分析。 但确定的自上而下分析法对语言的文法有一定的限制条件,那就是要求描述语言的文法是无左递归的和无回溯的。 * 用非终结符A去匹配输入串时,使当前句型的最左非终结符仍然为A。 也就是说,在没有读进任何输入符号的情况下,又重新要求A去进行新的匹配。于是,造成无穷循环。 * 改写以后的形式和
文档评论(0)