我一直在嘗試一段時間,通過使用bison和lex實現語法分析器。bison/lex YYSTYPE聲明爲struct
我有一個yylval類型重新聲明的問題,我解釋我自己。
我有4個文件:lexico.l,parser.y,funcionesTabla.c,funcionesTabla.h
第一個,包含了野牛/ yacc的 最後兩對法 第二個規格,規格,是一組處理符號表的方法。
我在funcionesTabla.h:
typedef enum {
entero,
real,
caracter,
arrayEntero,
arrayReal,
arrayCaracter,
matrizEntero,
matrizReal,
matrizCaracter,
desconocido,
no_asignado
} dtipo ;
typedef struct{
int atrib ;
char *lexema ;
dtipo tipo ;
} atributos;
#define YYSTYPE atributos
我試了下:
從parser.y,在規則中,試圖訪問yylval.tipo,沒問題。
從lexico.l,令牌規則中,試圖訪問yylval.lexema(或任何屬性),和gcc說我:
lexico.l: In function ‘yylex’:
lexico.l:93: error: request for member ‘lexema’ in something not a structure or union
make: *** [lex.yy.o] Error 1
什麼建議嗎?
非常感謝,並對我的英語感到抱歉。