2016-11-04 2 views
-1

Ich bin auf einem lex und yacc Programm arbeiten, auf meine devise MAC OS ..Fehler beim Kompilieren lex und yacc in Mac OS

wenn ich versuche, die folgendes zu tun:

gcc sample.tab.c lex.yy.c -ly -ll 

es zeigt mir eine Menge Fehler und am Ende ..

fatalen Fehler: zu viele Fehler emittiert wird, stoppen jetzt [-ferror-limit =]

des Fehlers appea einige rs:

./sample.tab.h:44:6: error: expected identifier 
    if = 260, 
    ^
./sample.tab.h:46:6: error: expected identifier 
    else = 262, 
    ^
./sample.tab.h:48:6: error: expected identifier 
    while = 264, 
    ^
./sample.tab.h:53:6: error: expected identifier 
    return = 269, 

Konnte mir jemand dabei helfen ??

Danke ..

+0

[MCVE] bitte. Es gibt einfach nicht genug Informationen hier. – rici

Antwort

0

Sie können nicht C Schlüsselwörter als Namen für Nicht-Terminals verwenden. Aus diesem Grund ist es üblich, ALL-CAPS als nicht-terminale Namen zu verwenden. So können Sie Flex-Datei könnten gehören

while { return WHILE; } 
return { return RETURN; } 

und wenn Sie Bisons können Sie Aliase erklären:

%token WHILE "while" 
%token RETURN "return" 

Erlauben Sie Regeln zu schreiben wie:

whileStatement: "while" '(' expression ')' statement 
+0

danke !!!! es funktioniert weiß –

Verwandte Themen