pyparsing에서 작성한 내용은 PLY로 잘 번역되지 않으므로 잘 해석 할 수 없기 때문입니다. nestedExpr
은 "실제로 무엇이 들어 있는지 알지 못하지만 ()
(또는 {}
'또는 []
'또는 무엇이든)으로 둘러싸여 있고 중첩 될 수있는 양식의 표현식을 빠르게 정의하는 도우미입니다. C와 같이 '{}'로 구분 된 언어를 구문 분석하여 간단한 함수 정의를 type_spec + identifier + parameter_spec + nestedExpr('{', '}')
으로 정의하는 것이 편리합니다. '&'및 '|'을 포함하도록 콘텐츠를 정의한다고 가정하면 연산자, 당신이 정말로 구문 분석하려는 것 같아 부울 표현, 괄호 그룹화에 대한 지원 작업의 우선 순위를 무시 포함.
pyparsing 위키의 예제 페이지에있는 simpleBool.py 예제는 부울 식 구문 분석을 지원하는 몇 가지 테스트 사례와 표현식을 보여줍니다. BUT 도우미 메서드 infixNotation
을 사용합니다.이 메서드는 파서 정의 단계를 대부분 숨기므로 다시 PLY로 직접 변환하기가 어렵습니다. 이 예제는 참, 거짓과 같은 부울 리터럴 구문 분석과 "아닌"연산자에 대한 지원을 추가하는 등 부울 식을 구문 분석하는 데 필요한 것이 무엇인지 명확히하는 데 도움이 될 수 있으므로이 예제를 참조하십시오. 또한, 그것은 당신에게 무료 테스트 케이스의 무리를 줄 것이다 - 자신을 도와주세요!
PLY가 예상하는 것과 비슷한 더 명확한 문법을 보려면 pyparsing의 fourFn.py 예제를 살펴보십시오. infixNotation
도우미보다 먼저 실행되므로 다양한 작동 우선 순위가 명시 적으로 작성됩니다. (산술 연산 우선 순위 구현의 이러한 형태의 우아함은 주로 처음에 응용 프로그램을 파싱하는 데 관심이 있습니다.)