重用Lua解析器的最佳方法是什么?

Cha*_*esS 5 c c++ lua parsing programming-languages

我知道如何在其他语言中嵌入Lua,但我想重新使用解析器来解析代码并将结果作为AST提供给我.使用Lua平台最简单的方法是什么?

谢谢!

Joh*_*nck 2

有人已经为 Lua 语言制作了ANTLR语法:

http://www.antlr3.org/grammar/1178608849736/Lua.g

或者,如果您使用 ANTLR v4:

https://github.com/antlr/grammars-v4/blob/master/lua/Lua.g4

我在几个项目中使用了 ANTLR,并取得了良好的效果。如果您需要,它将生成 C (ANTLR v3) 或 C++ (ANTLR v2) 解析器,包括 AST 生成。

  • 有趣的问题。v2 有多个目标,包括 C++、Java 和 C#。v3 支持 C、Java、C#、Python 和 Objective C。虽然他们添加 Python 和 Objective C 的原因可能很明显,但他们放弃 C++ 的原因尚不清楚。一位 ANTLR 维护者多次表示他会为 ANTLR v3 编写一个 C++ 目标,但从未这样做过。也许其他人还没有尝试过,因为cookie是湿的(http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx)。v2 中的 C++ 目标如何从 v3 中“消失”?这是因为他们重新设计了目标 API,以便更轻松地添加语言。 (2认同)