使用Parboiled生成AST(Java)

时间:2014-05-04 05:14:42

标签: java parsing compiler-construction abstract-syntax-tree parboiled

我使用Parboiled library为Java创建了一个PEG 我的基础是this example

它工作正常,但现在我需要实际创建AST。

我的问题是我如何使用图书馆这样做?

在Google上查看了一下并查看Github上的示例后,我发现您打算使用push,pop,swap等来创建AST,但我无法弄清楚如何做这与我的解析器。我的解析器与Java类似,如果你可以帮助我理解它如何适用于Java,我可以适应我的。

1 个答案:

答案 0 :(得分:1)

基本上PEG解析器使用值保持堆栈,您可以在匹配输入时推送和弹出值。您将推送堆栈上的值(AST节点),当解析完成后,您将从解析器获取AST的根节点。

https://github.com/sirthias/parboiled/blob/master/examples-java/src/main/java/org/parboiled/examples/calculators/CalculatorParser4.java为例,了解如何使用推送和弹出。

检查(非常好!)Parboiled项目的文档。以下是AST创建的部分https://github.com/sirthias/parboiled/wiki/Working-with-the-Value-Stack