Compiler construction 编译中的LL1语法

Compiler construction 编译中的LL1语法,compiler-construction,programming-languages,Compiler Construction,Programming Languages,我有一个关于LL1语法的问题。如果我们有这样的语法: <S>::=<A> <A>::=<A> car cat | epsilon ::= :=汽车猫|ε 第一个可以是什么?只是ε?如果只是ε,那么语言就不可能是LL1!我很困惑 First(A) = {epsilon, car} 如果A是非终端,A:Aα是产物,那么 将a添加到第一个(a)。如果A:epsilon是一个产品,那么添加epsilon 首先(A) 如果A:α1α2α3。。。αm是

我有一个关于LL1语法的问题。如果我们有这样的语法:

<S>::=<A>
<A>::=<A> car cat | epsilon
::=
:=汽车猫|ε
第一个
可以是什么?只是ε?如果只是ε,那么语言就不可能是LL1!我很困惑

 First(A) = {epsilon, car}
如果A是非终端,A:Aα是产物,那么 将a添加到第一个(a)。如果A:epsilon是一个产品,那么添加epsilon 首先(A)

如果A:α1α2α3。。。αm是一个乘积,首先将(α1)加到 第一(A)。如果α1导出ε,则将第一个(α2)加到第一个(A)上。如果 α1和α2都导出ε,将第一个(α3)加到第一个(A)上, 等等