编译原理之最左推导和最右推导

原创 2005年05月30日 20:55:00

符号串的最左推导及最右推导

 

需求分析

 

1)输入一个文法,可以有多个非终结符号,每个非终结符号可有多条规则。

 

2)输入要分析的符号串

 

3)分别采用最左推导和最右推导进行符号串的分析,请输出推导过程。

 

文法为:

E->CB

C->c

B->b

 

假如有个要分析的字符串为EB

最左推导的分析为

1         CBB

2         cBB

3         cbB

4         cbb

最右推导的分析为

1         Eb

2         CBb

3         cBb

4         cbb

 

 

1 输入文法

2 输入要分析的字符串

3 选择适当的文法

4 判断是否要分析的字符串已经分析完

N

5  输出分析结果并结束

1 输入文法

2 输入要分析的字符串

3 选择适当的文法

4 判断是否要分析的字符串已经分析完

N

5  输出分析结果并结束

Y

详细设计

1.界面设计

利用VC++的MFC的单对话框做模板,输入文法和要分析的字符串分别用一个Text来输入,输出的最左推导和最右推导结果在ListBox,一个按钮来确认

 

2.模块算法(伪代码)

(1)   最左推导

while(这不是最后一个字符)

{
if(
这是一个非终结符号)

   文法分析字符串

把字符串放进链表头

   输出当前分析的字符串

else

   指向后一个字符

}

(2)   最右推导

while(这不是最后一个字符)

{
if(
这是一个非终结符号)

   文法分析字符串

把字符串放进链表尾

   输出当前分析的字符串

else

   指向前一个字符

}

 

3)何为非终结符号

      E->CD

      可以看出凡是在箭头左边的为非终结符号

4)分析文法表

     例如E->C

         C->c

      由此可见:

->左边的为非终结符号,->右边的为要分析的文法

 

最左推导和最右推导,语法树,二义性文法

※最左推导和最右推导 (每一步替换最左边的非终结符/每一步替换最右边的非终结符),最右推导称为规范推导。最右推导对应于最左规约(规范规约) 例: 文法: S--->AB A--->a|t ...

编译原理学习笔记08——(没有国你什么都不是之FOLLOW ME—推导笔记06的FOWLOW集)——2014_1_24

好像中了教科书的套了,越来越循规蹈矩了。

编译原理学习笔记07——(寻找带头大哥—推导上节笔记的FIRST集)——2014_1_23

这节笔记和上节笔记,和下节笔记都是为了预测分析表而准备的。编译原理难看来是有道理的,逻辑性很强,一步走错,则。。。 这节笔记引入了公式,是为了解释后面的推导过程。 ...

编译原理--文法分类和推导树

引言:上篇博客简单介绍了一下文法的基础知识,这篇博客重点介绍文法的分类和推导树。  1956年,Noam Chomsky根据对产生式所施加限制的不同行,把分发分为了四种类型,并定义了相应...

编译原理(2)-----文法推导

文法推导
  • ha_qjq
  • ha_qjq
  • 2016年11月07日 16:40
  • 1089

UESTC 1019 SSRaligun酱的魔法符文 用记忆实际区间最左min1最右max1来减小时间复

用记忆实际区间最左min1最右max1,来减小时间复杂度 但注意min1要初始化为你们可能的最大值或比最大值大一点,而max1则是最小值或比最小值小一点,这些也是要注意的吧,不小心漏掉,到时候出...

Hdu 5775 Bubble Sort(Multi 4 L 给你一个1到n的排列,然后按照冒泡排序的移动方式,问每个i 能移动到的最左位置和最右位置的差是多少)

传送门:Hdu 5775 Bubble Sort

hdu - 1506 dp ,找最左最右边界

A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec...

Adaboost 算法的原理与推导

  • 2017年10月31日 13:52
  • 1.23MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译原理之最左推导和最右推导
举报原因:
原因补充:

(最多只允许输入30个字)