0
我創建語法與pyPEG2解析這樣的語句如:pyPEG2給出錯誤的結果
一個喜歡B,而乙不喜歡A,A憎恨B和A熱愛d而B愛C^
這裏是我下面的代碼:
import pypeg2 as pp
class Person(str):
grammar = pp.word
class Action(pp.Keyword):
grammar = pp.Enum(pp.K('loves'), pp.K('hates'))
class Separator(pp.Keyword):
grammar = pp.Enum(pp.K(','), pp.K('\n'), pp.K('but'), pp.K('and'), pp.K('while'))
relation = Person, Action, Person
class Relations(pp.Namespace):
grammar = relation, pp.maybe_some(Separator, relation)
然而,當我嘗試做以下操作:
>>> love = pp.parse('A loves B but B hates A , B loves C, Relations)
我得到:
Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
love = pp.parse('A loves B but B hates A , B loves C', Relations)
File "/home/michael/.local/lib/python3.5/site-packages/pypeg2/__init__.py", line 669, in parse
raise parser.last_error
File "<string>", line 1
es B but B hates A , B loves C
^
SyntaxError: expecting Separator
>>>
如果我改變說法爲這一個:
>>> love = pp.parse('A loves B but B hates A and B loves C', Relations)
沒有錯誤,但最後一個塊錯過了一些原因:
>>> pp.compose(love)
'A loves B but B hates A'
所以我在做什麼錯誤的方式,文檔描述得很好,但卻無法真正發現我在那裏犯的錯誤。
希望有人可以幫助。提前致謝!!!