Как рекурсивные правила приводят к конфликтам в YACC? - PullRequest
0 голосов
/ 10 ноября 2019

Рассмотрим рекурсивные строки правил здесь. Когда входными токенами являются AA, есть ли здесь конфликт уменьшения сдвига? Я полагаю, что это так, поскольку после первого токена A указатель будет находиться в начале в первом туле и после строк во втором правиле. Когда появляется второй токен А, первое правило может быть уменьшено или второе правило может быть смещено. Так что я считаю, что здесь есть конфликт уменьшения сдвига, верно?

   /* print-int.y */
        %token INTEGER NEWLINE A B
        %%
        lines:  A | lines A 
         ;
         ;
        %%
        #include "lex.yy.c"
        yyerror(char *s) { printf("%s", s); }
        main() {
         return yyparse();
        }

Кроме того, если токен былне А, а правило гласит: rule2 : A;, будет ли еще конфликт, иными словами, должны ли конфликты происходить на токенах, могут ли они происходить и на правилах?

...