我不明白为什么我会得到这些结果。
++
+add
+syntax error 2
++
+add
+syntax error 4
++是我的输入,lex会回显每个字符,yacc会在得到+时打印add。它每隔一次都会给我这个错误。无论我如何输入,如果我在每个+上点击回车键,我都会得到相同的结果。
法
%{
#include "y.tab.h"
int chars = 0;
%}
%%
"+" {ECHO; chars++; return ADD;}
. {ECHO; chars++;}
\n {ECHO;}
%%
yacc公司
%{
#include <stdio.h>
extern int chars;
void yyerror (const char *str) {
printf ("%s %d\n", str, chars);
}
%}
%token ADD
%%
symbol : ADD {printf ("add\n");}
;
%%
int main () {
while (1) {
yyparse ();
}
}