如何最好地重用Lua解析器?

5

我知道如何在其他语言中嵌入Lua,但我只想重用解析器来解析代码并将结果作为抽象语法树(AST)返回。在Lua平台上最简单的方法是什么?

谢谢!


2
Lua解析器不会生成AST——源代码会在一次遍历中从文本转换为字节码。 - Seth Carnegie
那是否意味着我想要的是不可能的?解析器无法被重复使用吗? - CharlesS
1
你想用AST做什么? - lhf
@SethCarnegie:重复使用词法分析器可能仍然足以生成程序结构的描述。然后,OP可以根据此构建AST。 - André Caron
@Seth Carnegie:虽然Lua解析器不能生成AST,但为什么不能重构它以生成AST呢?毕竟,该解析器对Lua的模型最准确。 - Ira Baxter
1
@IraBaxter:“为什么不能剖析并弯曲它以产生一个?”谁说不能?这并不意味着这将是一个特别富有成效的过程,或者使用任何可用工具将语法转换为解析器会更快吗?就像Lua没有复杂的语法规则一样。 - Nicol Bolas
1个回答

2

1
为什么v2生成C++,而v3生成C? - Seth Carnegie
2
一个有趣的问题。v2 有几个目标,包括 C++、Java 和 C#。v3 支持 C、Java、C#、Python 和 Objective C。虽然添加 Python 和 Objective C 的原因可能很明显,但为什么放弃了 C++ 却不是那么清楚。ANTLR 的一位维护者多次表示,他会为 ANTLR v3 编写一个 C++ 目标,但从未实现。也许其他人没有尝试是因为饼干湿了(http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx)。为什么 v2 的 C++ 目标在 v3 中“消失”了呢?这是因为他们重新设计了目标 API,使其更容易添加语言。 - John Zwinck
@PhoenixX_2:我已经更新了链接。ANTLR的开发人员似乎在一段时间前破坏了他们网站上的许多链接。 - John Zwinck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接