我正在尝试使用 Parsley 匹配一个单词。我使用的语法仅在我为通用词制定规则时才有效。但是,我想知道为什么它不能像 Allen Short 的演示文稿和示例代码在这里 ( http://bit.ly/1025Qxo ) 和这里 ( http://bit.ly/17wzUYg )中显示的那样工作.
在他的代码中,他有:
rule = (expr1 -> returnval) | -> []
但我让它工作的唯一方法是:
rule = (expr1 -> returnval) | (expr2) -> []
这是我的代码:
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
我让它工作的唯一方法是使用内置的“字母”变量为通用单词字符串制定规则。
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
任何帮助,将不胜感激。谢谢你。
保罗