语法分析-LL分析表的构造

Posted tthornbirds-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语法分析-LL分析表的构造相关的知识,希望对你有一定的参考价值。

对于一个给定的文法,构造他的LL(1)分析表的步骤:

一:对文法进行等价变换

一般题目给定一个文法,都会存在直接左递归公共前缀:

  (1)首先会对文法消除直接左递归:方法(见“语法分析-消除左递归”)

  (2)然后需要对已经消除左递归的文法进行消除公共前缀:方法:

技术图片

二:求出每个产生式的predict集合

产生predict集合的方法(见“语法分析-First,Follow,Predict三集合求法”)

三:画LL(1)分析表

技术图片

四:注意事项

有些文法不是LL(1)文法,所以下面给出判断一个文法是否是LL(1)文法的三个条件:

1)文法不含左递归 像这个样子A->Ab是不允许的(存在左递归)
2)对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。
即对于A->α1|α2|…|αn
要求FIRST(αi)∩FIRST(αj)=Ø (i≠j)
3)对于文法中的每个非终结符A,若它存在某个候选首符集包含ε,则
FIRST(A)∩FOLLOW(A)=Ø

 

2)和3)可以简述为,同一非终结符对应的不同产生式的predict集相交为空。

以上是关于语法分析-LL分析表的构造的主要内容,如果未能解决你的问题,请参考以下文章

编译原理:LL文法 语法分析器(预测分析表法)

编译原理 LL语法分析器的设计与实现

编译原理 LL语法分析器的设计与实现

编译原理 LL语法分析器的设计与实现

编译原理 LL语法分析器的设计与实现

编译原理-第四章 语法分析-4.6 简单LR技术