Necesito usar flex y bison para analizar algún código.bison YYSTYPE: tratando de usar char *
El tipo predeterminado de YYSTYPE es int
, aunque nunca lo haya declarado así. ¿Es eso un defecto de bison?
Me ayudaría mucho pasar cadenas de nuevo. Leí esto: How to solve Bison warning "... has no declared type" Parece un buen enfoque. (Todavía no necesito todo el poder de una unión, solo la parte char *, pero también podría usar la unión porque podría ser útil más adelante).
No funciona para mí. Me sale estos errores:
y:111.37-38: $1 of `ConstExpression' has no declared type
y:113.34-35: $1 of `ConstFactor' has no declared type
y:114.35-36: $1 of `ConstFactor' has no declared type
y:119.34-35: $1 of `Type' has no declared type
y:109.23-48: warning: type clash on default action: <str> != <>
y:115.23-27: warning: type clash on default action: <str> != <>
[...more of the same snipped...]
Estas son las declaraciones de mi archivo y
gramática:
%union {
char *str;
}
%type<str> ConstExpression ConstFactor Type
Aquí es una línea de mi archivo .l
:
[a-zA-Z]+[a-zA-Z0-9]* { yylval.str = strdup(yytext); return yident;}
¿Qué más necesito Qué hacer para resolver los errores?
¿crees en serio la gente puede depurar el archivo de gramática sin verlo ? –
@Kinopiko, ¿en serio lo rechazaste porque no se limitó a pegar toda su tarea y decir "Muéstrame el código"? ¿Te habría matado haber dicho "Necesito más información, publique el archivo completo de la gramática" o algo así? – steveha
@Kinopiko, cuando publique la información que ha solicitado, ¿podrá deshacer su voto? Eso solo parece duro. – steveha