Bison Compilerbau
-
Hallo ich versuche hier eine Vorlage für Bison zu kompilieren und bekomme immer wieder die selbe Fehlermeldung.
gcc -Wall -Wno-unused -g -o parser.tab.o -c parser.tab.c
%{ /* * parser.y -- SPL parser specification */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "common.h" #include "utils.h" #include "scanner.h" #include "parser.h" %} %union { NoVal noVal; IntVal intVal; StringVal stringVal; } /* Token deklaration */ /*Tokens ohne zusätzlichen Werte noVal */ /*Schlüsselwörter*/ %token <noVal> ARRAY ELSE IF OF PROC REF TYPE VAR WHILE /*Datentypen*/ %token <noVal> int /*Anweisungen*/ %token <noVal> LPAREN RPAREN LBRACK RBRACK LCURL RCURL /*Ausdrücke*/ %token <noVal> EQ NE LT LE GT GE ASGN COLON COMMA SEMIC PLUS MINUS STAR SLASH /*Tokens mit einem zusätzlichem Wert*/ /*Bezeichner*/ %token <intVal> INTLIT /*Integer Bezeichner mit einem int-Wert*/ %token <stringVal> IDENT /*Eigene Bezeichner Funktionsnamen,eigene Typen etc. mit einem String Wert*/ %start program %% program : ARRAY { printf("Hallo"); } ; %% void yyerror(char *msg) { error("%s in line %d", msg, yylval.noVal.line); }
Und hier die Fehlermeldung:
/usr/share/bison++/bison.cc:468: error: expected identifier or ‘(’ before numeric constant /usr/share/bison++/bison.cc:471: error: expected identifier or ‘(’ before numeric constant /usr/share/bison++/bison.cc:545: error: expected identifier or ‘(’ before numeric constant make: *** [parser.tab.o] Fehler 1
Ich hoffe mir kann jemand damit helfen.
-
Was soll
%token <noVal> int
machen? Sieht komisch aus.
-
Compilerbau,Bison,
damit erstell ich eine define Anweisung für ein Token.
Mit noVal gib ich an in welcher Struktur das Token zu finden ist.
Glaub ich zu mindestens.Naja mein Problem hat sich mit der Neuinstallation erledigt.
Danke an alle die mir Helfen wollten.
-
Da käme dann sowas wie
#define int 260
raus, das macht nicht viel Sinn, würde aber eventuell deinen Fehler erklären.
-
Bashar schrieb:
Da käme dann sowas wie
#define int 260
raus, das macht nicht viel Sinn, würde aber eventuell deinen Fehler erklären.%token <noVal> INT
-
Bashar schrieb:
Da käme dann sowas wie
#define int 260
raus, das macht nicht viel Sinn, würde aber eventuell deinen Fehler erklären.%token <noVal> INT