生成Delphi代码,用于解析具有给定BNF格式的文件。

8
有没有Delphi的解析器代码或解析器组件,或者可以接受BNF(Backus-Naur Form)符号作为输入并生成用于解析的Delphi(或pascal)代码的程序?
这是因为我将尝试完美地解析遵循各种版本GEDCOM标准(用于家谱)的数据集,并且需要在达到标记时从一个状态处理文件。我希望有一个自动化程序可以为我设置基本的pascal代码以进行状态处理。
否则,我将不得不手动构建状态结构。
我确实看到了以下问题(TinyPG看起来不错,但我需要Delphi代码): 给定BNF语法,输出C#的解析器生成器? 如果没有这样的工具,是否有其他可用的工具可以使此任务更轻松?
1个回答

6
我向您推荐GOLD解析系统。 GOLD语法基于Backus-Naur形式和正则表达式。 资源 引擎

Delphi引擎特别在此列出这里

Rob van den Brink的这个对象Pascal可能会引起兴趣。

引用:

Rob van den Brink更新了他的Object Pascal编程语言引擎。他的实现使用程序模板创建一个完整的程序。这种方法直接将解析表嵌入源代码中。因此,您无需加载已编译的语法表文件。下载包含一个程序模板以及几个示例。
使用GOLD的示例项目
GOLD非常强大,它被用作dcu2pas的解析引擎,后者是一个Delphi编译单元(dcu文件)反编译器,托管在这里(bitbucket.org)。请注意,它是用编写的。

1
我非常喜欢GOLD解析系统,特别是它的编辑器和调试器。不幸的是,Delphi引擎的实现已经有十年之久了,Rob van den Brink的代码中的Readme.txt文件显示“2002年4月24日”。这比Delphi Unicode早了7年。 - Cosmin Prund
是的,它们已经有些老旧了,但是可以进行改进。最近的C#引擎实现正在使用尖端构造。Matthias Piepkorn的D(Digital Mars D)引擎受到那些Delphi引擎的启发,我认为它真的非常出色。Delphi社区是时候重新拿回其中最好的部分并开始跟上步伐了。 - menjaraz
1
这看起来正是我希望找到的工具。谢谢你指出它! - lkessler
3
@Cosmin,我已经重新设计了一个更近期的Delphi实现来支持GOLD,并且在它适应V5之后可能会发布它。 - Uwe Raabe
@UweRaabe,那太好了。 - Cosmin Prund

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