码迷,mamicode.com
首页 > 其他好文 > 详细

二义性 消除左递归

时间:2015-06-29 22:21:11      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:二义性   消除左递归   编译原理   文法   

书是龙书

编译器中常用的方法可以分为自顶向下和自底向上的。一个是从语法分析树的顶部开始向底部构造语法分析树,一个则是从叶子节点开始,逐渐向根结点构造,这两种分析方法中,语法分析器的输入总是照着从左向右。

 

二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么他就是二义性的。

例如例子id + id * id

 

 技术分享

消除左递归

如果一个文法中有一个非终结符号A使得对某个串存在一个推导A=>Aa 那么这个文法就是左递归

消除办法:

A> Aa1| Aa2|......Aam|β1|β2|βn

其中β都不以A开头,然后将A的产生式替换为

Aβ1A’ |β2A’|.....|βnA

A’ —>a1A’|a2A’|a3A’|.....

 

例子:

 

 技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

二义性 消除左递归

标签:二义性   消除左递归   编译原理   文法   

原文地址:http://blog.csdn.net/hhooong/article/details/46686487

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!