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

语法分析-LL(1)分析表的构造

时间:2020-08-03 23:12:54      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:cap   技术   width   jpg   语法分析   16px   follow   round   递归   

对于一个给定的文法,构造他的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(1)分析表的构造

标签:cap   技术   width   jpg   语法分析   16px   follow   round   递归   

原文地址:https://www.cnblogs.com/TThornBirds-Blog/p/13429064.html

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