이것은 실제적인 것보다 "원칙적으로"더 많은 질문입니다. Yacc이 프로덕션을 줄이는 순서이며 정의 된 렉서 (lexer)에서 새 토큰을 읽습니다. I는이 토큰 세트 다음 한 경우 즉, :축소 순서는 Yacc에 정의되어 있습니까?
INTEGER_BEGIN
INTEGER_VALUE
LESS_THAN
INTEGER_BEGIN
INTEGER_VALUE
이 같은 작품의 세트가 지정되면, 하나의 일에 INTEGER BEGIN INTEGER_VALUE
을 감소하기 전에 Yacc에, 그것의 의미 내에서, 렉서에서 LESS_THAN
토큰을 읽을 수 :
expr : expr LESS_THAN expr
| integer
integer : INTEGER_BEGIN INTEGER_VALUE
의미 론적 동작으로 정의 된 경우 변경 사항을 적용 하시겠습니까?
이런 일이 발생했는지 알 수있는 방법이 있습니까? –
http://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html에는 기본 감소의 의미에 대한 자세한 설명이 나와 있으며, 언급 한대로 렉서의 지연된 호출이 발생합니다. –
일부 버전의 bison에서는 동작에서'if (yychar == YYEMPTY)'를 검사하여 기본 감소 상태인지 확인할 수 있습니다 (미리보기가 읽혀지지 않았 음). –