首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Treetop中的复数词匹配

Treetop中的复数词匹配
EN

Stack Overflow用户
提问于 2012-09-21 21:57:52
回答 1查看 161关注 0票数 1

有没有办法使用Treetop以编程方式匹配多个单词。语言gem将复数形式的单词,但如何将其插入到解析器中。

下面是我想要做的一个例子:

代码语言:javascript
复制
#!/usr/bin/env ruby
require 'treetop'
require 'linguistics'
include Linguistics::EN
Treetop.load_from_string DATA.read

parser = RecipeParser.new

p parser.parse('cans')

__END__
grammar Recipe
   rule units
      unit &{|s| plural(s[0].text_value) }  
   end
   rule unit
      'can'
   end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 08:05:31

一般来说,语言gem不能将任意的Treetop规则定义复数形式--它们不是字符串。

使用语义谓词,您的recipe.treetop文件可以在一个数组中定义所有有效的单数unit字符串,将它们复数,然后创建一条规则,将有问题的标记与这些复数单元中的每一个进行比较:

代码语言:javascript
复制
require "linguistics"

grammar Recipe
  rule units
    [a-zA-Z\-]+ &{ |u|
      Linguistics.use(:en)
      singular_units = [ "can" ]

      singular_units.
        map(&:en).
        map(&:plural).
        include?(u[0].text_value)
    }
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12532010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档