
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