
ParleParser::precedence는 연산자 우선순위를 계산하는 데 사용되는 함수입니다.
우선순위를 계산하는 알고리즘은 Shunting-yard 알고리즘입니다.
Shunting-yard 알고리즘은 연산자 우선순위를 계산하는 데 사용되는 알고리즘으로, 다음과 같이 작동합니다.
1. 연산자 우선순위를 정의합니다. 일반적으로 덧셈과 뺄셈은 곱셈과 나눗셈보다 우선순위가 낮습니다.
2. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다.
3. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다.
4. 수식에서 괄호를 만날 때마다, 스택에 괄호를 추가합니다.
5. 수식에서 괄호를 닫을 때마다, 스택에서 괄호를 꺼내서 수식에 추가합니다.
예를 들어, 간단한 수식 2+3*4를 해석할 때, 우선순위를 계산하는 과정을 살펴보겠습니다.
1. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4)
2. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *)
3. 수식에서 괄호를 만날 때마다, 스택에 괄호를 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
4. 수식에서 괄호를 닫을 때마다, 스택에서 괄호를 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
5. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
6. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
7. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
8. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
9. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
10. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
11. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
12. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
13. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
14. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
15. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
16. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
17. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
18. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
19. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
20. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
21. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
22. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
23. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
24. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
25. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
26. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
27. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
28. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
29. 수식에서 연산자를 만날 때마다, 우선순위가 낮은 연산자를 스택에 넣습니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
30. 수식에서 연산자를 만날 때마다, 우선순위가 높은 연산자를 스택에서 꺼내서 수식에 추가합니다. (스택: [], 수식: 2+3*4, 연산자: *, 괄호: )
31.
2025-03-29 07:08