我正在尝试使用pyparsing编写简化的正则表达式解析器(除了串联之外,还支持*
和|
运算符)。下面是我的语法迄今:使用pyparsing解析正则表达式
from pyparsing import alphas, Word, Forward
regular_expression = Forward()
character = Word(alphas, max=1)
group = '(' + regular_expression + ')'
star = (character | group) + '*'
# A 'concat_expression' is any string concat of the above
# String concat with a 'concat_expression' also produces a 'concat_expression'
concat_expression = Forward()
concat_expression << ((character | group | star | concat_expression) +
(character | group | star))
or_expression = regular_expression + '|' + regular_expression
regular_expression << or_expression | concat_expression
我得到无限递归当我尝试解析简单的表达式(如regular_expression.parseString("a")
)。我的连接定义有什么问题吗?
仅供参考,我在尝试改编this语法。