나는 통해하고 있어요 차량 기지 알고리즘 위키 피 디아에 의해 설명 된대로.
연산자를 처리 할 때 알고리즘에 대한 설명은 다음과 같습니다.
토큰이 연산자 인 o1이면 다음을 수행하십시오.
운영자 스택 맨 위에 운영자 토큰 o2가 있고
o1 is left-associative and its precedence is less than or equal to that of o2, or o1 is right associative, and has precedence less than that of o2,
그런 다음 운영자 스택에서 출력 큐로 o2를 팝하십시오.
o1을 운전자 스택에 밀어 넣습니다.
그러나 다음 예제를 제공합니다.
입력:
sin max 2 3 / 3 * 3.1415
알고리즘이 /
토큰에 도달 할 때 발생하는 설명은 다음과 같습니다.
Token | Action | Output (in RPN) | Operator Stack
...
/ | Pop token to output | 2 3 max | / sin
...
그들은 기능 토큰을 진열 max
오프 stack
와에 넣어 queue
. 그들의 알고리즘에 따르면, 이것은 함수 토큰이 연산자이고 연산자보다 우선 순위가 낮다는 것을 의미하는 것 같습니다 /
.
이것이 사실인지 아닌지에 대한 설명은 없습니다. 따라서 Shunting-yard
알고리즘의 경우 함수의 우선 순위는 무엇입니까? 함수가 오른쪽 또는 왼쪽으로 연결되어 있습니까? 아니면 위키 백과가 불완전하거나 정확하지 않습니까?
sin( max( 2 3) / 3 * 3.1415)