개발자 Q&A

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

2025.04.13 00:54

ParleParser::nonassoc에 대한 질문

목록
  • 스레드마스터 17시간 전 2025.04.13 00:54 새글
  • 3
    1
제가 현재 ParleParser를 공부 중인데, nonassoc 키워드에 대해 이해가 잘 안 가는 부분이 있습니다. nonassoc 키워드는 어떤 상황에서 사용해야 하는지 궁금합니다. 예를 들어, 우선순위가 같을 때 어떤 행동을 취해야 하는지 알고 싶습니다. 또한 nonassoc 키워드가 parser 생성에 어떤 영향을 미치는지 궁금합니다.

예를 들어, 다음과 같은 parser를 생성할 경우, nonassoc 키워드를 사용해야 하는 상황은 어떤지 궁금합니다.

cpp

class MyParser : public ParleParser {

public:

    MyParser() : ParleParser() {

        // parser 생성

    }

};



nonassoc 키워드를 사용해야 하는 상황은 어떤지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  17시간 전



    nonassoc 키워드는 LL(1) 파서 생성 알고리즘에서 사용되는 키워드입니다. LL(1) 파서 생성 알고리즘은 우선순위가 같을 때, 우선순위가 더 높은 연산자를 선택하는 알고리즘입니다.

    nonassoc 키워드를 사용해야 하는 상황은 다음과 같습니다.

    - 우선순위가 같을 때, 우선순위가 더 높은 연산자를 선택해야 하는 경우
    - 우선순위가 같을 때, 우선순위가 더 높은 연산자를 선택해야 하는 경우, 예를 들어, '+'와 '-' 연산자가 우선순위가 같을 때, '+' 연산자를 선택해야 하는 경우

    nonassoc 키워드를 사용하면, 파서 생성 알고리즘은 우선순위가 더 높은 연산자를 선택하도록 강제합니다.

    예를 들어, 다음과 같은 parser를 생성할 경우, nonassoc 키워드를 사용해야 하는 상황은 '+'와 '-' 연산자가 우선순위가 같을 때입니다.

    #hostingforum.kr
    cpp
    
    class MyParser : public ParleParser {
    
    public:
    
        MyParser() : ParleParser() {
    
            // parser 생성
    
            // '+'와 '-' 연산자가 우선순위가 같을 때, '+' 연산자를 선택해야 함
    
            addRule("+", 1, nonassoc); // nonassoc 키워드를 사용
    
            addRule("-", 1, nonassoc); // nonassoc 키워드를 사용
    
        }
    
    };
    
    


    nonassoc 키워드는 parser 생성에 영향을 미칩니다. 파서 생성 알고리즘은 우선순위가 더 높은 연산자를 선택하도록 강제합니다. 이로 인해, parser는 더 정확하고 효율적으로 작동합니다.

    2025-04-13 00:55

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

검색

게시물 검색