编写Treetop规则以按任何顺序解析输入

时间:2014-07-21 09:52:55

标签: ruby-on-rails ruby treetop

我正在寻找一种编写Treetop规则的方法,它可以按任何顺序查找某些值。所以:

rule top
  # ?
end    

rule gender
  ('women'/'men') / ''
end

rule age_under
  ('under' age) / ''
end

rule age
  [0-9]+
end

我想解析这些输入:

"women under 10"
"under 10 women"
"under 10"
"women"

我怎样才能做到这一点?感谢

1 个答案:

答案 0 :(得分:1)

以下是以任何顺序解析的示例。唯一的麻烦是你必须手工处理重复,因为Treetop没有无序 - 非重复元素的规则。

rule top
 ((gender / age_under) ' '?)*
end

rule gender
 'women' / 'men'
end

rule age_under
 'under ' age
end

rule age
 [0-9]+
end