编译时LL1语法

时间:2013-02-06 05:33:17

标签: compiler-construction programming-languages

我对LL1语法有疑问。如果我们有这样的语法:

<S>::=<A>
<A>::=<A> car cat | epsilon

第一个<A>可以是什么?它只是epsilon吗?如果它只是epsilon,那么语言不能是LL1!我很困惑......

1 个答案:

答案 0 :(得分:0)

 First(A) = {epsilon, car}

如果A是非终端而A:α是生产,那么 添加到First(A)。如果A:epsilon是一个产品,那么添加epsilon 到第一(A)。

如果A:α1α2α3...αm是生产,则将First(α1)加到 首先(A)。如果α1导出epsilon,则将First(α2)加到First(A)。如果 α1和α2都得到epsilon,将First(α3)加到First(A), 等等。