3
对于编译器中的一个项目我在语法分析器中遇到了一个问题, 当我在符号表中添加符号时,我总是使用yylineno中的相同值...yylineno在yacc文件中始终具有相同的值
我这样做在开始时:
%{
int yylex(void);
int yyerror(char* yaccProvidedMessage);
extern int yylineno; //i declare yylineno from the lexical analyzer
extern char *yytext;
extern FILE *yyin;
int scope=0;
int max_scope;
%}
,并在语法,当我去到符号表中添加了一句:
即
lvalue: ID {
printf("<-ID");
add_data_to_symbol_table((char*)($1),scope,yylineno);
printf("lineNO:%d",yylineno);
}
;
在输出的时候我给不同的线路输入 它不承认新线
if(x<=2)
{
if(t<1)
{
k=2;
}
}
的LINENO永远不会改变,总是有1作为价值...
什么想法?