在PetitParser2中,如何匹配一组封闭的令牌,例如月份名称?例如。 (以伪代码)[ :word | MonthNames anySatisfy: [ :mn | mn beginsWith: word ] ] asParser.
PPPredicateSequenceParser
似乎是一种可能,但似乎您必须提前知道字符串的大小。我想我可以像这样:
| monthRules | monthRules := Array streamContents: [ :unamused: | MonthNames collect: [ :e | s nextPut: e asString asPParser. s nextPut: (e first: 3) asPParser ] ]. ^ PP2ChoiceNode withAll: monthRules
但是我想知道是否有内置/直接的东西
在PetitParser2中,如何匹配一组封闭的令牌,例如月份名称?例如。 (以伪代码)[:word |月份命名任何满意:[:mn | mn beginWith:word]] asParser。 PPPredicateSequenceParser ...
我建议对集合中的每个元素使用解析器:
其他更笨拙且效率较低的选项是使用自定义块: