![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
文章平均质量分 79
馋雪山丘
这个作者很懒,什么都没留下…
展开
-
自顶向下语法分析方法:消除左递归
直接左递归形如A->Aβ,A∈非终结符,β∈终结符∪非终结符。消除直接左递归一般形式:A->Aα1|Aα2|...|Aαm|β1|β2|...|βn其中,αi(1≤i≤m)不等于ε,βj(1≤j≤n)不以A开头,消除直接左递归改写为:A->β1A'|β2A'|...|βnA'A'->α1A'|α2A'|...|αmA'|ε例如:文法:S->SaS->b消除直接左递归:S->bS'原创 2017-10-18 10:27:14 · 2180 阅读 · 0 评论 -
自顶向下语法分析方法:提取左公共因子
若文法中含有形如A->αβ|αγ的产生式,就会使FIRST集相交,就满足不了LL(1)文法的充分必要条件。可以做下面的等价变换: A->αβ|αγ A->α(β|γ) A->αA' 引入新的终结符A' A'->β|γ一般形式:A->αβ1|αβ2|...|αβnA->α(β1|β2|...|βn)A->A'A'->β1|β2|...|βn例子:文法的产生式为:S->aSbS原创 2017-10-18 09:58:49 · 4540 阅读 · 1 评论 -
自顶向下语法分析方法:LL(1)文法的判别
例子:文法G[S]为S->AB|bC A->ε|b B->ε|aD C->AD|b D->aS|c第一步,求出能推出ε的非终结符首先建立一个以文法的非终结符为上界的一维数组,其数组元素为非终结符,对应每一非终结符有一个标志位,用以记录能否推出ε。如下表 非终结符 S A B C D 初值 未定 未定 未定 未定 未定 第1次扫描 是原创 2017-10-17 17:03:55 · 3020 阅读 · 1 评论