
ParleParser::nonassoc 키워드는 LL(1) 파서를 구현할 때 사용하는 키워드입니다. LL(1) 파서는 토큰을 하나씩 읽어와서 문법 분석을 수행하는 파서입니다.
nonassoc 키워드는 문법 분석 중에 우선순위가 다른 두 토큰이 동시에 등장할 때, 우선순위가 낮은 토큰을 우선적으로 처리하도록 합니다. 예를 들어, '+'와 '-'의 우선순위가 '+'보다 낮은 '+'와 '-'의 연산이 '+'와 '-'의 연산 사이에 등장할 때, '+'와 '-'의 연산을 우선적으로 처리하도록 합니다.
nonassoc 키워드를 사용하는 예시 코드는 다음과 같습니다.
#hostingforum.kr
cpp
// 예시 코드
%token NUMBER
%token PLUS MINUS
%left PLUS
%left MINUS
%nonassoc UMINUS
%start E
E:
E PLUS E
| E MINUS E
| NUMBER
| MINUS E %prec UMINUS
;
위 코드에서 `%nonassoc UMINUS`는 MINUS 토큰의 우선순위를 가장 낮게 설정합니다. 따라서, MINUS 토큰이 '+' 또는 '-' 토큰과 함께 등장할 때, '+' 또는 '-' 토큰을 우선적으로 처리합니다.
예를 들어, 다음과 같은 문법 분석이 수행됩니다.
#hostingforum.kr
E: E MINUS E
| NUMBER
이때, MINUS 토큰이 NUMBER 토큰과 함께 등장할 때, NUMBER 토큰을 우선적으로 처리합니다.
2025-03-05 18:04