OperatorPrecedenceParser
을 사용하여 기호가없는 연산자 (예 : AND
, OR
)를 대/소문자를 구분하지 않고 구문 분석 할 수 있습니까?OperatorPrecedenceParser를 사용하여 대/소문자를 구분하지 않는 연산자 구문 분석
3
A
답변
3
OperatorPrecedenceParser에는 비 기호 연산자의 대/소문자 일치를 지원하는 기본 제공 지원이 없습니다.
그러나 기호가없는 연산자가 짧거나 몇 가지 철자 변형 (예 : 모두 소문자, 모두 대문자, 첫 번째 문자 대문자 만 ...)을 지원해야한다면 간단히 모든 변형을 추가 할 수 있습니다. 연산자를 지원해야합니다. (물론 수동이 아닌 약간의 도우미 기능을 사용하여 변형을 추가 할 수 있습니다.)
2
연산자가 있는지 여부를 확인하는 방법은 PeekOp
인 것처럼 보입니다. 문자의 똑같은 동일성 (및 CharStream.Match
)에 의존하기 때문에 대소 문자를 구분하지 않는 방법이나 언급이 없습니다.
항상 연산자의 다양한 가능한 버전을 수동으로 추가 할 수 있습니다. 예 :
Add("or");
Add("oR");
Add("Or");
Add("OR");
마지막으로 또 다른 옵션은 이렇게하는 도우미 메서드를 만드는 것입니다.
+1 도우미 기능이 최선의 방법이라고 생각합니다. 감사. – Daniel
이것은 질문과 관련이 없지만 킬러 라이브러리에 감사드립니다. – Daniel