LL(1)语法以及第一和第二组

问题描述 投票:0回答:1

我认为以下内容实际上是LL(1),但我不确定100%。我们是否能够证明这是LL(1)语法,然后,给出的第一和第二组是否正确?我不太确定如何真正地了解以下内容。

语法

expr :: =术语{addop术语}术语:: =因子{mulop factor}因子:: =变量|无符号号| (expr)变量:: =标识符addop :: = + | --mulop :: = * | /

第一组

First(expr)=标识符,无符号数字,(First(Term)=标识符,无符号数字,(First(Factor)=标识符,无符号数字,(First(变量)=标识符First(addop)= +,-First(mulop)= *,/

跟随组

Follow(Expr)= First(term)跟随(期限)=首要(因子)不明白该如何做以下套组的套组Follow(Factor)= First(“)”)=)关注(可变)跟随(addop)跟随(mulop)

parsing compiler-construction context-free-grammar
1个回答
0
投票

第一组是正确的。

关注组:

FOLLOW(A) of non-terminal A is the set of terminal symbols that can follow in the derivation sequence

FOLLOW(expr):检查它在生产右侧出现的位置。它是有因子:=(expr),当我们在推导中采用此乘积时,expr之后是),而expr是起始符号。

   FOLLOW(expr)={),$}

类似地,

   FOLLOW(term) = FIRST(addop) U FOLLOW(expr) = {+,-,),$}
   FOLLOW(factor) = FIRST(mulop) U FOLLOW(trem) = {*,/,+,-,),$}
   FOLLOW(addop) = FIRST(term) = {identifier,unsigned number,(}
   FOLLOW(multop) = FIRST(factor) = {identifier,unsigned number,(}
   FOLLOW(Variable)= FOLLOW(factor) = {*,/,+,-,),$}

其中$是输入的结尾。

语法为LL(1)。前一组因子是不相交的,我们不需要检查以下组,因为没有ε产生。

© www.soinside.com 2019 - 2024. All rights reserved.