编译原理-自底而上的语法分析法

1.自底向上的分析法(移进-归约分析):就是对输入符号串从左向右进行扫描,逐步进行“归约”,知至归约到文法的开始符符号。

2.体系结构:

移进:无句柄的时候移进。

归约:有句柄的时候归约。

接受:acc,分析成功。

出错

3.LR分析法(一种有效的自底向上的分析法,可以用于大多数的上下无关的文法)

规范归约的关键问题就是寻找句柄。而分析表其中的核心,包括goto表和action表(LR分析法不同的分类也是有这个确定的)。

拓广文法:目的是是文法的只有一个标识符作为左部的产生式,从而使构造出来的分析器有唯一的接收状态。

活前缀:不包括句柄右边符号的前缀(不一定包括句柄)

可归约前缀:包含句柄的活前缀就是可归约前缀。

项目:移进项目:后继是终结符号,如:A->.(A)

   待约项目:后继是非终结符号,如:A->(.A)

     归约项目:后继项目是空,如:A->(A).

   接受项目:A'->A.,一个特殊的归约项目。

特别:A->空串的项目个数为1,即A->.。

4.构造活前缀的有限自动机:

项目集的闭包运算:p95。

项目集之间额转化函数go:简单来说就是现在所有的项目中找到带有需要的项目当作J,然后对J求闭包运算。p95

LR(0)项目集规范规范族的构造:简单的来说就是文法开始符号进行闭包运算作为I(0),对于I(0)中的依次项目进行go运算作为I(i)。

具体实例:p97~p101。

 5.SLR(1)分析法:

解决的是由于SR(0)分析法出现了“移进-归约冲突”或“归约-归约冲突”的问题。即基本的操作与SR(0)是没有什么区别的,对于“移进-归约冲突”要求出所以的非终结符的follow,看是否满足SLR(1)分析法的要求,满足的话就就移进一位,这是跳转的就要看移进这个项目之后形成的新项目是第一个,就移进或归约到哪一个。

 6.SR(1)分析法:基本操作和SR(0)一样就是在求项目的规范族不同而已。p109~p111

 

posted @ 2017-05-15 15:58  freeflying  阅读(854)  评论(0)    收藏  举报