2016-11-29 12 views

답변

0

pyparsing에서 작성한 내용은 PLY로 잘 번역되지 않으므로 잘 해석 할 수 없기 때문입니다. nestedExpr은 "실제로 무엇이 들어 있는지 알지 못하지만 () (또는 {} '또는 []'또는 무엇이든)으로 둘러싸여 있고 중첩 될 수있는 양식의 표현식을 빠르게 정의하는 도우미입니다. C와 같이 '{}'로 구분 된 언어를 구문 분석하여 간단한 함수 정의를 type_spec + identifier + parameter_spec + nestedExpr('{', '}')으로 정의하는 것이 편리합니다. '&'및 '|'을 포함하도록 콘텐츠를 정의한다고 가정하면 연산자, 당신이 정말로 구문 분석하려는 것 같아 부울 표현, 괄호 그룹화에 대한 지원 작업의 우선 순위를 무시 포함.

pyparsing 위키의 예제 페이지에있는 simpleBool.py 예제는 부울 식 구문 분석을 지원하는 몇 가지 테스트 사례와 표현식을 보여줍니다. BUT 도우미 메서드 infixNotation을 사용합니다.이 메서드는 파서 정의 단계를 대부분 숨기므로 다시 PLY로 직접 변환하기가 어렵습니다. 이 예제는 참, 거짓과 같은 부울 리터럴 구문 분석과 "아닌"연산자에 대한 지원을 추가하는 등 부울 식을 구문 분석하는 데 필요한 것이 무엇인지 명확히하는 데 도움이 될 수 있으므로이 예제를 참조하십시오. 또한, 그것은 당신에게 무료 테스트 케이스의 무리를 줄 것이다 - 자신을 도와주세요!

PLY가 예상하는 것과 비슷한 더 명확한 문법을 ​​보려면 pyparsing의 fourFn.py 예제를 살펴보십시오. infixNotation 도우미보다 먼저 실행되므로 다양한 작동 우선 순위가 명시 적으로 작성됩니다. (산술 연산 우선 순위 구현의 이러한 형태의 우아함은 주로 처음에 응용 프로그램을 파싱하는 데 관심이 있습니다.)