我试着用欧芹来匹配一个词。我所使用的语法只有在我为泛型词制定规则时才起作用。但是,我想知道为什么它不能像Allen Short的演示和示例代码这里(http://bit.ly/1025Qxo)和这里(http://bit.ly/17wzUYg)所显示的那样工作。在
在他的守则中,他有:
rule = (expr1 -> returnval) | -> []
但我唯一的办法是:
^{2}$我的代码是:
import parsley
grammar = r"""
myword = "hello"
myrule = (myword:word -> word) | -> []
"""
MyPar = parsley.makeGrammar(grammar,{})
print MyPar("hello").myrule() # works, returns myword
print MyPar("bye").myrule() # doesn't work, throws exception
我让它发挥作用的唯一方法是使用内置的'letter'变量为一个通用单词字符串制定一个规则。在
import parsley
grammar = r"""
myword = "hello"
anyword = <letter+>
myrule = (myword:word -> word) | anyword -> []
"""
MyPar = parsley.makeGrammar(grammar,{})
print MyPar("hello").myrule() # works
print MyPar("bye").myrule() # works, returns empty list
任何帮助都将不胜感激。非常感谢。在
保罗
我想你误解了规则应该符合什么。在
这将尝试匹配两个选项中的任何一个:
(myword:word -> word)
尝试匹配myword
并返回它-> []
尝试匹配nothing(一个空字符串,不是任何内容),并返回一个空列表所以你得到的行为是意料之中的。
如果你想匹配任何一个单词,我想你的第二个代码就是这样做的。在
相关问题 更多 >
编程相关推荐