我一直在尝试一段时间,通过使用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
什么建议吗?
非常感谢,并对我的英语感到抱歉。