
nonassoc는 LL(1) 파서를 구현할 때 사용하는 키워드입니다. LL(1) 파서는 문법의 우선순위를 기반으로 파싱을 수행하는 파서입니다.
nonassoc를 사용하면, 해당 토큰의 우선순위를 정의할 수 있습니다. 예를 들어, '+'와 '-'의 우선순위를 정의할 때, '+'는 '+'와 '+'의 결합을 허용하고, '-'는 '-'와 '+'의 결합을 허용하지 않습니다.
우선순위와 결합 순서의 규칙은 다음과 같습니다.
- '+'와 '-'의 우선순위는 '+'가 '-'보다 높습니다.
- '*'와 '/'의 우선순위는 '*'가 '/'보다 높습니다.
- '+'와 '*'의 결합은 '+'가 '*'보다 높습니다.
- '-'와 '*'의 결합은 '-'가 '*'보다 높습니다.
nonassoc를 사용할 때, 우선순위와 결합 순서를 정의하는 규칙을 반드시 지켜야 합니다. 그렇지 않으면, 파서가 올바르게 동작하지 않을 수 있습니다.
예를 들어, '+'와 '-'의 우선순위를 정의할 때, '+'를 '+'와 '+'의 결합을 허용하고, '-'를 '-'와 '+'의 결합을 허용하지 않도록 정의할 수 있습니다.
#hostingforum.kr
c
%left '+' '-'
%right '*' '/'
위의 예제에서, '+'와 '-'의 우선순위는 '+'가 '-'보다 높습니다. '+'는 '+'와 '+'의 결합을 허용하고, '-'는 '-'와 '+'의 결합을 허용하지 않습니다.
2025-05-05 12:36