我目前正在尝试为编程语言编写一个(非常)小的解释器/编译器。我已经设置了语言的语法,现在我需要写下语言的语法。我打算使用 LL(1) 解析器,因为经过一番研究,它似乎是最容易使用的。
我是这个领域的新手,但根据我收集到的信息,强烈建议使用 BNF 或 EBNF 形式化语法。然而,似乎并非所有语法都适合使用 LL(1) 解析器来实现。因此,我想知道以 LL(1) 形式编写语法的正确(或推荐)方法是什么。
谢谢你的帮助,查理。
PS:我打算使用 Haskell 的 Parsec 库编写解析器。
编辑:另外,根据 SK 逻辑,Parsec 可以处理无限前瞻(LL(k) ?) - 但我想这个问题仍然代表这种类型的语法。