解析重复的字符

Paw*_*wel 2 python parsing lepl

我很擅长解析(显然).我正在使用LEPL库来解析一些标记语言.

我对这段代码有疑问(为了清楚起见,我省略了细节).

from lepl import *

a = Literal('a')[0:,...] # 0 or more, join the result
b = Literal('b')

c = (a | b)[0:]

print c.parse("abaabaaab")
Run Code Online (Sandbox Code Playgroud)

最后一行应该给我['a','b','aa','b','aaa','b']

没有错误,但它挂起(无限递归可能?).有人能指出我正确的方向吗?

编辑

我可以这样做

from lepl import *

a = Literal('a')
b = Literal('b')

c = (a | b)[0:]

print c.parse("abaabaaab")
Run Code Online (Sandbox Code Playgroud)

但是a不会被分组.

小智 7

我很确定,在你的第一个例子中,你想要的

a = Literal('a')[1:]
Run Code Online (Sandbox Code Playgroud)

[0:]在你的语法中有两次重复,解析器确实会遇到无限的回溯.