간단한 수식 파서를 구현해야합니다. 제가하고있는 일은 먼저 postfix notation을 만들고 나서 evaluating the postfix string을 만듭니다. 안타깝게도이 알고리즘에서는 대괄호 (2 + 3) *를 사용할 수 없습니다. 대괄호를 허용하도록 알고리즘을 확장하는 방법을 아는 사람은 누구입니까? 사전에브래킷이있는 수식 파서
감사합니다,
프랭크
간단한 수식 파서를 구현해야합니다. 제가하고있는 일은 먼저 postfix notation을 만들고 나서 evaluating the postfix string을 만듭니다. 안타깝게도이 알고리즘에서는 대괄호 (2 + 3) *를 사용할 수 없습니다. 대괄호를 허용하도록 알고리즘을 확장하는 방법을 아는 사람은 누구입니까? 사전에브래킷이있는 수식 파서
감사합니다,
프랭크
후위 표기법의 요점은 당신이 더 쉽게 식을 계산할 수 있도록 중위 표기법으로 괄호를 제거하는 것입니다. 현재 알고리즘이 삽입 식에 대괄호를 허용하지 않으면 잘못된 알고리즘을 사용하고있는 것입니다.
중첩 버전에 대괄호가있는 경우에도 shunting yard algorithm은 중급어에서 후미어로 변환 할 수 있습니다.
대신에 산술 표현식의 문법은 매우 간단하며 표현식을 평가하는 재귀 적 파생어를 쉽게 구현할 수 있습니다.
문법은 다음과 같이 보일 것입니다 :
는<expression> ::= <term> <add_sub> <expression>
<term> ::= <factor> <mul_div> <term>
<factor> ::= '(' <expression> ')' | <number>
<add_sub> ::= '+' | '-'
<mul_div> ::= '*' | '/'
(당신이 당신의 필요에 따라 소수점 값, 분수 등을 떠, 정수로 정의해야합니다)
위의 문법을 담당 대괄호 및 연산자 우선 순위
안녕하세요 블라드, 내가 사용한 알고리즘은 "벗겨진 다운"shunting 마당입니다. 위키피디아의 정보를 통해 나는 그것을 적절하게 적용 할 수있었습니다. 많은 감사합니다! – Aaginor