GCC dit “erreur de syntaxe avant de constante numérique” dans le fichier d'en-tête généré à partir de bison
Quand je compile mon .y fichier avec les bisons de l'analyseur.y-d -t et de l'inclure l'analyseur.onglet.h fichier dans mes fichiers flex, gcc dit "erreur: erreur de syntaxe avant de constante numérique." C'est le référencement de la ligne 32, qui est la première ligne de l'enum de yytokentype.
enum yytokentype {
BREAK = 258,
... }
L'erreur est sur la ligne "BREAK = 258." Honnêtement, je ne sais pas pourquoi ce qui se passe--je voudrais vraiment utiliser le générés yylval et j'en ai besoin de ce fichier d'en-tête. Même si j'ai déclaré yytokentype comme ça dans mon flex fichier, j'obtiens la même erreur. De ce que j'aurais fait de mal?
Je devine qu'il y a une redéfinition de
BREAK
quelque part au-dessus de l'erreur de la ligne. Le -E
drapeau de gcc est bon pour obtenir ces problèmes.OriginalL'auteur Kizaru | 2010-08-13
Vous devez vous connecter pour publier un commentaire.
Est
BREAK
défini quelque part dans votre code? J'obtiens une erreur similaire à partir de la suite de toy exemple:Construire exemple:
#define
parce que du point-virgule.Yep... C'est la question. J'ai vérifié tous mes #comprend et il l'a trouvé dans l'un d'eux. Merci pour l'aide pour les deux de vous.
oups, devrait avoir copié/collé au lieu de retaper. Fixe maintenant.
OriginalL'auteur Carl Norum
Sans doute la RUPTURE est déjà défini quelque part dans le flex du fichier de sortie, donc après le pré-processeur exécute une instruction comme 99 = 258 ou quelque chose. Essayez de regarder à la sortie de
cpp yy.lex.c
ougcc -E yy.lex.c
. J'ai regardé un flex de fichier de sortie, mais n'a pas trouvé de BRISER n'importe où, seulement YY_BREAK.OriginalL'auteur