对于编译器中的一个项目,我在语法分析器中有一个问题,当我在符号表中添加一个符号时,我在 yylineno 中总是采用相同的值...
我一开始是这样做的:
%{
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;
%}
当我在符号表中添加一些东西时,在语法中:
IE
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 作为值......
有任何想法吗?