ruby - Ruby 中的语法解析

标签 ruby regex parsing grammar

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

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

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


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

最佳答案

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

关于ruby - Ruby 中的语法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359906/

相关文章:

ruby - 如何搜索和替换 Nokogiri 节点?

ruby-on-rails - Heroku 应用程序崩溃

c# - 如何选择首选(但特定)正则表达式匹配而不是默认(但通用)正则表达式匹配?

parsing - 如何使用 Parsec 通过特定字符串分隔字符串

regex - 正则表达式是否用于构建解析器?

ruby-on-rails - Rails 中的 byebug 入门

regex - Word 不以数字或星号和数字开头(正则表达式)

ruby - 有没有办法对波浪字符使用正则表达式匹配?

c# - DateTime.Parse 今天(2012 年 3 月 1 日)失败! o_0

ruby-on-rails - 如何在 Ruby/Rails 中匹配和替换模板标签?