Delphi的解析器生成器?

5

有没有人可以推荐一个能够生成win32 Delphi代码的解析器生成器?我试图创建一种简单的领域特定语言。

5个回答

5

1
大多数用于Delphi的Coco/R实现都非常过时。我更新了DCocoR以使其与Delphi XE2兼容,源代码在这里:http://code.google.com/p/dcocor/。 - Ville Krumlinde
@VilleKrumlinde 那已经是10年前的事了。它现在还很强大吗? - theking2
@theking2 项目已经迁移至这里:https://github.com/VilleKrumlinde/dcocor。我仍然在最新版本的Delphi中使用它。如果您在使用过程中发现任何问题,请在GitHub页面上创建一个问题。 - Ville Krumlinde

5

你的DSL有多复杂?

我创建了一个解析器(使用Delphi语言)来支持我们使用的一些内部COM生成工具,这个解析器是为新的Delphi RIDL语言创建的。

我的方法是使用ANTLR玩弄语法规则,直到我有了一个可以解析各种测试文件的东西。然后,我手工编写了一个递归下降解析器(基于ANTLR生成的Java代码)。在项目中,我还使用了Castalia Delphi Parser,所以我的词法分析器也是基于它构建的。

手动编写递归下降解析器实际上非常简单(但很繁琐:-))。


这是个好主意。我的DSL相当简单。我也喜欢在ANTLR中进行原型设计的想法。 - dan-gph
假设这是 SQL 语言,那么它有多难? - theking2

4

谢谢。虽然这很老派,但编写DSL已经推动了可接受性的边界。lex/yacc只会让人们惊慌失措。遗憾的是,我可能不得不将我的DSL作为XML语言来完成。 - dan-gph

2

我并没有尝试过这个方法,但我在阅读文档时注意到了这个信息。FastScript在他们的文档中提到(你可以从这里获取),你可以使用他们的解析器来创建你自己的语言,并将其指定在一个XML文件中。这可能会给你一些可以使用的东西。


0

我找到了Antlr For Delphi 3.1.1

SharpPlus Antlr For Delphi Target 3.1.1,一种语言工具,提供了一个框架来构建使用Delphi的识别器、解释器和编译器!

这是一个商业产品。我不知道它的质量如何。


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