this처럼 표현식 평가 프로그램을 진행하고 있습니다. 내 문제는 내가 작업 우선 순위를 처리하는 방법을 알아낼 수 없다는 것입니다. 이 때문에, 지금표현식 평가
Evaluate("3 * 5")
:
Evaluate("2 + (3 * 5)")
자체가이 방법을 다시 호출합니다 : 나는하고, 발견했을 때, 다음과 같이 그 내부의 발현을 해결 괄호의 안쪽 부부를 찾기 위해 재귀를 사용 괄호가 아닌 경우 결과를 계산하고 다른 시간을 호출합니다.
Evaluate("2 + 15")
Ok, 반환 값은 예상대로 17입니다. 그러나 Evaluate("2 + 3 * 5")
으로 전화하면
Evaluate("2 + 3 * 5")
Evaluate("5 * 5")
분명히 잘못되었습니다.
기본적으로 왼쪽에서 오른쪽으로 작업을 해결하고 있습니다. 먼저 수행해야하는 작업을 어떻게 선택할 수 있습니까? 나는 모든 작업을 둘러싼 두 개의 괄호를 추가하려고 생각했지만 너무 좋아 보이지 않는다.
그래서 전체 식을 먼저 구문 분석해야합니까? 다른 방법이 있습니까?
[간단한 식 파서를 쓰기]의 중복 가능성 (http://stackoverflow.com/questions/4582398/writing-a-simple-equation-parser) –