개발자 Q&A

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

2025.04.30 02:59

ParleParser::nonassoc에 대한 질문

목록
  • Kotlin도령 14시간 전 2025.04.30 02:59 새글
  • 5
    1
저는 현재 ParleParser::nonassoc에 대해 이해를 못하겠는데요.
ParleParser::nonassoc는 어떤 역할을 하는지 궁금합니다.
nonassoc 키워드는 어떤 경우에 사용하는지 알려주세요.
그리고 nonassoc를 사용했을 때 parser의 동작이 어떻게 달라지는지 설명해 주세요.

    댓글목록

    profile_image
    나우호스팅  14시간 전



    ParleParser::nonassoc는 LL(1) 파서에서 사용되는 키워드입니다. LL(1) 파서는 왼쪽 연관(L)과 우선순위(1)가 있는 파서입니다.

    nonassoc 키워드는 연관되지 않은 연산자(예: 비교 연산자)가 우선순위가 다른 연산자(예: 산술 연산자)와 함께 사용될 때 사용됩니다.

    예를 들어, 다음과 같은 문법이 있다고 가정해 보겠습니다.

    #hostingforum.kr
    
    
    E -> E + T
    
    E -> E - T
    
    T -> T * F
    
    T -> T / F
    
    F -> ( E )
    
    F -> id
    
    


    이 문법에서 '+'와 '-'는 우선순위가 같지만, '*'와 '/'도 우선순위가 같습니다. 그러나 '+'와 '*'는 우선순위가 다르므로, '+'와 '*'를 함께 사용할 때 '+'가 우선순위를 가집니다.

    이러한 경우, nonassoc 키워드를 사용하여 '+'와 '*'를 함께 사용할 때 '+'가 우선순위를 가질 수 있습니다.

    #hostingforum.kr
    
    
    E -> E + T
    
    E -> E - T
    
    T -> T * F
    
    T -> T / F
    
    F -> ( E )
    
    F -> id
    
    %nonassoc +
    
    %nonassoc *
    
    


    nonassoc 키워드를 사용했을 때 parser의 동작이 어떻게 달라지는지 설명하면, parser는 '+'와 '*'를 함께 사용할 때 '+'가 우선순위를 가집니다. 예를 들어, 다음과 같은 입력이 있을 때 parser는 '+'가 우선순위를 가집니다.

    #hostingforum.kr
    
    
    E -> E + T
    
    E -> E - T
    
    T -> T * F
    
    T -> T / F
    
    F -> ( E )
    
    F -> id
    
    %nonassoc +
    
    %nonassoc *
    
    E -> E + T * F
    
    


    parser는 '+'가 우선순위를 가지는 '+'와 '*'를 함께 사용할 때 '+'가 우선순위를 가집니다.

    2025-04-30 03:00

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

검색

게시물 검색