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作爲價值...
什麼想法?