내 문법 수 있습니다 :플렉스/렉스 - 어떻게 변수가 선언 알고
C의 → 아이디 : = E // 지정 값/변수 표현 (VAR)
C → 인쇄 (ID) // 인쇄 변수 (VAR)이 그것을 수행하려면
값, 내 렉스 파일은 다음과 같습니다
목록에서 변수의 인덱스를 반환 get_var_index[a-z]{
yylval.var_index=get_var_index(yytext);
return VAR;
}
, 그것이 생성 한 후 존재하지 않는 경우 하나. 작동 중!
문제는 다음
- 매번 변수는 그 변수에 대한 색인을 작성하는 파일 렉스에 일치한다.
- 나는 '인쇄의 (a)' '는이'선언되지 않은 전화를하는 경우보고해야하고, 인쇄 (a)는 항상 'A'에 인덱스를 생성하기 때문에 그런 일이 없을 것. *
어떻게 해결할 수 있습니까? Yacc에 파일의
조각 :
%union {
int int_val;
int var_index;
}
%token <int_val> INTEGER
%token <var_index> VAR
...
| PRINT '(' VAR ')'{
n_lines++;
printf("%d\n",values[$3]);
}
...
| VAR {$$ =values[$1];}