발생하는 것은 이러한 추천했습니다 : 문제는 그러나 일부 키워드가 발생하는 식 문법과 마지막 시간에 맞게 어떻게 문자열과 일치하는 표현 문법을 작성하려는
words at the start ONE|ANOTHER wordAtTheEnd ---------^-------- ----^----- --^-- A: alphas B: choice C: alphas
입니다
은 포함 할 수 있습니다 B의 키워드 "ONE"또는 "ANOTHER"이므로 마지막 선택 키워드가 발생하면 B과 일치해야합니다. 여기에 예제 :choice = pp.Or([pp.Keyword("ONE"), pp.Keyword("OTHER")])('B')
start = pp.OneOrMore(pp.Word(pp.alphas), stopOn=choice)('A')
end = pp.Word(pp.alphas)('C')
expr = (start + choice) + end
하지만이 : 문자열
ZERO ONE or TWO are numbers ANOTHER letsendhere
내가 OneorMore
표현은 "stopOn
"- 키워드를 시도 pyparsing
와
A: "ZERO ONE or TWO are numbers"
B: "ANOTHER"
C: "letsendhere"
필드로 해석되어야한다 작동하지 않습니다. 샘플 문자열이 들어 나는 ParseException
를 얻을 :이 말이
Expected end of text (at char 12), (line:1, col:13)
"ZERO ONE or >!<TWO are numbers ANOTHER text"
때문에 choice
하지 마지막 발생의 첫 발생에 stopOn
중지됩니다. 어떻게 대신 마지막 발생에 멈추는 문법을 작성할 수 있습니까? 어쩌면 context-sensitive grammar에 갈 필요가 있을까요?
문제 대한 파싱, 당신은이 같은 도우미 메서드를 작성할 수 : "pp.Or (pp.Keyword ("ONE "), pp.Keyword ("OTHER "))'- 키워드 ("OTHER ")는"ANOTHER "의"OTHER "와 일치하지 않으며, 또는 표현식이 아니라 2 개의 표현식. – PaulMcG
물론 그렇습니다! 그냥 샘플을 생성했을 때 미끄러졌습니다. 문제가 해결되었습니다. 감사. – halloleo