c语言实现ll 1 分析表,预测分析表【LL(1)分析表】的构造

预测分析表【LL(1)分析表】的构造

算法:

对于G中的每一个产生式, A -> α ,执行以下2步:

1.for  ∀ a ∈ FIRST(α), 将 A -> α 填入 M [A, a ];

1. if(ε ∈ FIRST(α))

∀ a ∈ FOLLOW (A) , 将 A -> ε 填入 M [A, a ];

PS: 这里的 a 包括 #

例子:

文法:

E -> TE'

E' -> +TE' | ε

T -> FT'

T' -> *FT' | ε

F -> (E) | id

解析:

1.E -> TE'

FIRST(TE')={(,id}所以 E -> TE'   填入  M[E, id] 和 M[ E, ( ]

步骤2不满足

2.E' -> +TE'

FIRST(+TE')={+}所以 E' -> +TE'  填入  M[E', +]

步骤2不满足

3.E' -> ε

FOLLOW(E')={ ), # }   所以 E' -> ε 填入 M[E', )]   和 M[E', #]

步骤1不满足

4.T -> FT'

FIRST(FT')={(,id}    所以T -> FT' 填入 M[T, (]    和 M[T, id]

步骤2不满足

5.T' -> *FT'

FIRST(*FT')={*}所以 T' -> *FT' 填入 M[T' , * ]

步骤2不满足

6. T' -> ε

FOLLOW(T')={ +, ), # }   所以 T' -> ε  填入M[T', +]、M[T', )] 和M[T', #]

步骤1不满足

7.F -> (E)

FIRST((E))={(}   所以F -> (E) 填入  M[F, (]

步骤2不满足

8.F ->  id

FIRST(id)={id}   所以 F ->  id 填入 M[F,   id]

步骤2不满足

结果如下:

语法变量

输入符号

id

+

*

(

)

#

E

E -> TE'

E -> TE'

E’

E' -> +TE'

E' -> ε

E' -> ε

T

T -> FT'

T -> FT'

T’

T' -> ε

T' -> *FT'

T' -> ε

T' -> ε

F

F ->  id

F -> (E)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值