"one or more" 使用 LL 解析器

"one or more" with LL parser

假设我的语法是:

file = line, {line}
line = ..., "\n"

如果我想为该语法构建一个 LL 解析器,我应该如何实现 "one or more line"?

我正在考虑将语法更改为:

file = line
line = ..., "\n", nl
nl = line
   | <end of file>

我的行会嵌套。这是解决问题最elegant/efficient的方法吗?

关闭。通常就像这样:

file = line, morelines
morelines = e | line, morelines
line = ..., "\n"

其中 e 是 epsilon 或空符号