なぜこれらの結果が得られるのかわかりません。
++
+add
+syntax error 2
++
+add
+syntax error 4
++ は私の入力であり、lex は各文字をエコーし、yacc は + を取得するたびに追加を出力します。それは私にこのエラーを1つおきに与えています+それは取得します。入力方法に関係なく、すべての + で Enter キーを押しても同じ結果が得られます。
レックス
%{
#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 ();
}
}