2

讨论为 ANTLR 创建新语言目标的过程在哪里?尽管由于可用目标的数量,这似乎是 ANTLR3 的一些常识,但我没有看到源代码中捆绑了任何文档,也没有在 Google 中找到任何明显的地方。

我希望找不到任何关于 ANTLR4 的此类文档,但我根本没有看到任何此类文档。

4

3 回答 3

1

ANTLR 3 和 ANTLR 4 的过程完全不同。

  • 蚂蚁3
    • 大多数处理由 ANTLR 工具执行,因此运行时非常简单。
    • 多个目标的源代码存储为主 ANTLR 3 存储库的一部分。
  • 蚂蚁4
    • 大多数处理是由 ANTLR 运行时执行的,因此运行时是看似少量的复杂、精细、对性能极为敏感的源代码。即使对哈希码或数据结构的选择稍作改变,也可能意味着速度或内存使用量的 O(n³) 或更差的差异。
    • 目标是独立开发和维护的,根本不存储在主 ANTLR 4 存储库中。

可以从C# 目标的源代码控制历史中推断出一种方法,但可能不是唯一的方法。除此之外,您应该对 Java 和您的目标语言中可用和使用的数据结构有很好的理解。运行时算法对哈希码的计算方式和用于在映射中存储对象的方式极为敏感,因此需要准确保留 Java 目标的行为语义,即使这意味着生成的代码看起来不一样像Java目标一样。

于 2013-10-29T22:55:04.930 回答
0

在撰写本文时,还没有关于如何创建新 ANTLR 目标的指南。Sam Harwell,ANTLR4 的共同作者,C# target的作者,已经开始记录如何创建一个新的 target,但它还没有完成(还没有完成)。

对编写新目标感兴趣的人可以查看 C# 是如何实现的(当然还有原始的 Java 目标)。但要意识到这绝不是一项微不足道的任务!

于 2013-10-29T22:54:00.250 回答
-1

也许有人可以制作一个 Jython 桥,这样我们至少可以轻松获得 Python?

于 2013-10-31T17:57:03.833 回答