문제

내 임무는 앱 (불행히도 C에서)을 작성하는 것입니다.이 픽스 (con on c에서)는 변수, 단백질 및 이진 연산자와 함께 표현식을 읽고 메모리에 저장 한 다음 평가하는 것입니다. 또한 정확성 검사를 수행해야합니다.

예를 들어:

3*(a+b)-(-2-78)*2+(0*a)

모든 값을 얻은 후에는 프로그램이 계산해야합니다.

문제는 :이 작업을 수행하는 가장 좋은 방법은 무엇입니까? (최적화 및 검증 포함)

나무의 기초로 선택할 수있는 표기법은 무엇입니까?

표현을 나무로 표현해야합니까? 그렇다면 쉽게 최적화 할 수 있습니다 (0 또는 smth else를 반환하는 노드 만 삭제).

건배,

도움이 되었습니까?

해결책

위의 Greg Hewgill의 의견에 제안 된 링크에는 필요한 모든 정보가 포함되어 있습니다.

자신의 글쓰기를 고집한다면

  • 재귀 하강 파서 아마도 손으로 그것을하는 가장 간단한 방법 일 것입니다.
  • 그렇지 않으면 Bison과 같은 도구를 사용할 수 있습니다 (C에서 작업하기 때문에). 이 튜토리얼 Flex and Bison (또는 Lex/YACC)과 함께 일하는 것으로 본 것입니다.

당신은 또한 검색 할 수 있습니다 "표현 평가자" CodeProject에서 - 주제에 관한 많은 기사가 있습니다.

나는 얼마 전에 M4 프로그램의 Expression Evaluator를 발견했습니다. 코드를 연구하여 작동 방식을 확인할 수 있습니다. 제 생각에는 이 링크 Google Codesearch에는 내가 본 버전이 있습니다.

다른 팁

귀하의 질문은 솔루션에 제시되는 요구 사항에 대한 질문을 암시합니다.

불행히도 c

따라서 여기서 몇 가지 제안은 허용되지 않을 수 있습니다. 그럼에도 불구하고, 나는 이것이 해결해야 할 상당히 복잡한 문제이며 당신이 많이 C 코드에 링크하여이를 수행 할 수있는 적절한 기존 라이브러리를 찾는 것이 좋습니다. 이는 코드가 작동하는 데 필요한 시간과 노력을 줄이고 지속적인 유지 보수 노력을 줄일 수 있습니다. 물론, 당신은 라이센스에 대해 생각해야하지만, 좋은 구문 분석/평가 라이브러리가 "거기에"좋은 일을 할 수있는 좋은 일을 할 수 있다면 놀랄 것입니다.

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