【问题标题】:Using Parboiled to generate an AST (Java)使用 Parboiled 生成 AST (Java)
【发布时间】:2014-05-04 05:14:41
【问题描述】:

我使用 Parboiled library 为 Java 创建了一个 PEG。
我基于this example

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

我的问题是如何使用库来做到这一点?

在 Google 上浏览了一下并查看了 Github 上的示例后,我发现您打算使用 push、pop、swap 等来创建 AST,但我不知道该怎么做这与我的解析器。我的解析器与 Java 解析器非常相似,如果您能帮助我了解它在 Java 解析器中的工作原理,我可以将其改编为我的解析器。

【问题讨论】:

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


    【解决方案1】:

    基本上 PEG 解析器会保存一个包含值的堆栈,您可以在匹配输入时推送和弹出值。您将把值(AST 节点)压入堆栈,当解析完成时,您会从解析器中获取 AST 的根节点。

    https://github.com/sirthias/parboiled/blob/master/examples-java/src/main/java/org/parboiled/examples/calculators/CalculatorParser4.java为例如何使用push和pop。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      相关资源
      最近更新 更多