【发布时间】:2013-03-13 02:25:51
【问题描述】:
我不知道为什么会得到这些结果。
++
+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 ();
}
}
【问题讨论】:
标签: syntax-error yacc lex flex-lexer