我一直在尝试了一段时间,通过使用野牛和以法实施语法解析器。
我有一个的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
任何建议?
非常感谢提前,并且,我的英语很抱歉。