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文法を適応しようとしています。