我正在解释器上工作,但我遇到了一些问题。重复的词法分析器,错误分段错误
在我的lex:
<INITIAL>\{ {BEGIN(BLOC);}
<BLOC>[^}]*\} {BEGIN(INITIAL);strncpy(yylval.sval, yytext, MAXVARSIZE);
temp = strlen(yylval.sval);
yylval.sval[temp-1] = '\0';
return BLOCK;}
法返回块{}
之间,在我的野牛解析器,我设置了弹性缓冲:
ifs:
IF PAREOPEN condition PARECLOSE BLOCK {if($3 > 0){scan_string($5);}}
;
[...]
void scan_string(const char* str)
{
yy_switch_to_buffer(yy_scan_string(str));
}
int main(int argc, char *argv[]) {
yyin = stdin;
do {
printf("aqui2\n");
yyparse();
} while(!feof(yyin));
}
但后来野牛产生分段错误。我想恢复缓冲区为原来的yyin
。
这里没有递归。 – EJP