我无法弄清楚为什么我会得到这些结果。
++
+add
+syntax error 2
++
+add
+syntax error 4
++ 是我的输入,而 lex 会回显每个字符,并且 yacc 打印在它获得 + 时添加。它每隔一个+就给我这个错误。不管我如何输入,如果我在每个 + 上按回车,我都会得到相同的结果。
法
%{
#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 ();
}
}