문제

다음에서 허용되는 솔루션과 관련하여: SO:expression_evaluator

부정에도 작동하는 버전을 제공할 수 있는 사람이 있나요?같은 것들

((!(0 or !1) and !((0 or 1 or 1) and !1))

일도 해야 합니다.

0이나 1을 부정하는 것은 괜찮지만 전체 그룹(괄호 시작 부분에!가 있음)을 부정하는 작업에는 사용할 수 없습니다.

*expr == '(' 블록의 eval에서 돌아온 후 tmp를 부정하려고 시도했습니다.만약에 !전화하기 전에 보았지만 작동하지 않았습니다.

도움이 되었습니까?

해결책

해당 답변의 코드는 약간 임시입니다. 구문 분석은 잘 이해 된 분야이며 발명이 필요하지 않습니다. 다른 답변 중 하나는 재귀 적 하강 구문 분석을 조사하는 것이 좋습니다. 나는 그 추천을 두 번째로한다.

다른 팁

설명된 알고리즘 여기 단항 연산자(피연산자가 하나인 연산자)와 함수를 처리할 수 있습니다.

나는 한때 이를 임베디드 시스템의 명령줄 콘솔에 대한 기호 변수를 지원하는 완전한 C 표현식 평가기의 기초로 사용했습니다.첨부된 예제 코드를 사용하지 않고, 오히려 제 목적에 맞게 처음부터 다시 작성했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top