개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.29 07:07

ParleParser::precedence에 대한 질문

목록
  • NativeScript도사 3일 전 2025.03.29 07:07
  • 2
    1
제가 ParleParser::precedence에 대해 공부하고 있는데, precedence를 어떻게 계산하는지 이해가 잘 안 가네요.

ParleParser::precedence는 연산자 우선순위를 계산하는 데 사용되는 함수 인가요?

그렇다면, 우선순위를 계산하는 알고리즘은 무엇인가요?

예를 들어, 간단한 수식 2+3*4를 해석할 때, 우선순위를 어떻게 계산해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  3일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 8,117건 / 17 페이지

검색

게시물 검색