필자는 pyparsing을 사용하여 단순화 된 정규 표현식 파서를 작성하려고합니다 (결합 외에도 *
및 |
연산자 만 지원). 여기 내 문법은 지금까지의 : 나는 시도하고 간단한 표현 (예를 들어, regular_expression.parseString("a")
를) 구문 분석 할 때파이핑을 사용하여 정규 표현식 구문 분석
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
나는 무한 재귀를 얻고있다. 연결에 대한 내 정의에 문제가 있습니까?
참고로 나는 this 문법을 적용하려고합니다.