我有和here (nested function calls)一样的问题
我还想把函子限制为许多给定单词(a,b,c)中的一个
所以法律是:
a(dd, ee)
b(a(1))
但不是:
^{pr2}$我可以使用以下方法之一实现:
functor1 = Literal('a') | Literal('b') | Literal('c')
functor2 = Word('a') | Word('b') | Word('c')
functor3 = Keyword('a') | Keyword('b') | Keyword('c')
functor4 = Combine(Keyword('a') | Keyword('b') | Keyword('c'))
第一个很简单,但rest对我来说太模糊了(尤其是当Word有param asKeyword,但它的代码不使用Keyword类,反之亦然)。在
请比较一下。在
OR列表是否作为联合收割机工作?在
下面是一些用于比较pyparsing表达式的测试代码。在
印刷品:
^{pr2}$您应该能够进行以下观察:
Literal
将匹配给定字符串,即使它只是 一根更大的绳子。Word
将匹配一组字符 由其构造函数字符串中的字母组成。Keyword
将 仅当给定字符串不是较大单词的一部分时才匹配它 (后跟空格或非单词字符)Combine
没有 在这个例子中什么都可以做。Combine
的目的是将多个匹配标记合并到一个字符串中。例如,如果您将社会保险号定义为:然后分析“555-66-7777”将得到
您很可能希望将其作为单个字符串,因此通过将解析器表达式包装在
Combine
中来组合结果:相关问题 更多 >
编程相关推荐