我对LL1语法有疑问。如果我们有这样的语法:
<S>::=<A>
<A>::=<A> car cat | epsilon
第一个<A>
可以是什么?它只是epsilon吗?如果它只是epsilon,那么语言不能是LL1!我很困惑......
答案 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), 等等。