コンパイラの 1 つのプロジェクトで、シンタックス アナライザーに 1 つの問題があります。シンボル テーブルにシンボルを追加しようとすると、常に 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;
%}
そして、シンボルテーブルに何かを追加するときの文法では:
すなわち
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 を持ちます...
何か案は?