Ruby 中的语法解析

Grammar parsing in Ruby

我面前有一项任务依赖于解释文本的结构——准确地说,是一本单语词典。该字典有相当复杂的条目:多达 29 个独特的元素,有些元素嵌套在其他元素中。我正在为字典设计自己的 XML 架构,但我想编写一个程序来自动解析纯文本。

我在 Ruby 方面有一些基本技能,而且我是一个相当有经验的 RegEx 用户,但我认为创建大量 if-树和非常长的 RegEx 公式是可能不是最好的主意。我找到了一些关于 Parsing Expression Grammar、Backus Normal Form 和 W-grammar 的信息,但似乎对它们最适用的内容有些模糊。

我的问题是:哪种方法是解释用自然语言编写的文本的结构的最佳方式?我不想解释语言本身,而是根据使用的字符和关键字以及它们的邻域将每个条目分成几个部分。您会推荐哪些宝石和资源?


编辑: here's an example 字典中一个比较简单的词条(波兰语)。我想做的是标记每个元素(感官、解释、搭配、标签标记等)。如您所见,我正在寻找一种有效的方法来以树状形式包含大量案例。 另一个问题是我想要有很多捕获,因为我想将 XML 中的段标记为从大到小。

这看起来是一个很适合 Treetop 的问题。我认为我没有足够的信息来确定它会起作用,但是能够将正则表达式组合成一个更大的结构,在这个结构中可以管理 29 个元素中的每一个,并且它们的信息 extracted/represented 使用任何 Ruby 的适当功能,似乎是您需要的那种功能集。