PetitParser:如何与令牌集匹配

问题描述 投票:2回答:2

在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 ...

smalltalk pharo petitparser petitparser2
2个回答
0
投票

我建议对集合中的每个元素使用解析器:


0
投票

其他更笨拙且效率较低的选项是使用自定义块:

© www.soinside.com 2019 - 2024. All rights reserved.