2010-12-23 4 views
1

Bitte versuche ich das Yyleng einer übereinstimmenden Zeichenfolge von meiner (.l) Datei an die (.y) Datei zu übergeben. Hier ist ein Beispiel der Ausgabe:Wie kann ich das Yyleng einer übereinstimmenden Zeichenfolge von Lex an Yacc senden?

In der Lex Datei:

<state1>.+ { fprintf(yyout, "%d", yyleng); } 

Im Yacc Datei:

/* Ich muss die Methodik kennen, um eine bestimmte zu erhalten yyleng in die yacc-Datei. Soll ich globale Variablen verwenden? Oder gibt es einen spezifischen Weg, um mit diesem Problem umzugehen? *

Vielen Dank im Voraus für Ihre Hilfe! ~ Irgendwelche Vorschläge werden sehr geschätzt.

+0

See bei Duplikat [Frage] (http://stackoverflow.com/questions/4514075/how-to-pass-the- yytext-from-the-lex-file-to-yacc) (fragt nach 'yytext' anstelle von' yyleng'): –

Antwort

3

yyleng ist eine globale Variable übergeben; deklariere es in deiner Grammatikdatei und benutze es.

Flex verwendet:

typedef size_t yy_size_t; 
extern yy_size_t yyleng; 

Lex verwendet:

extern int yyleng; 
+0

Vielen Dank für Ihre Hilfe! Bitte, wenn ich mehr über yytype, yyleng und andere lernen möchte, empfiehlst du mir irgendwelche spezifischen freien on-line-Betriebsmittel (besonders wenn es irgendwelche für Anfänger gibt)? – CompilingCyborg

+1

Ich habe Lex und Yacc aus den Handbüchern von [UNIX 7th Edition] (http://plan9.bell-labs.com/7thEdMan) gelernt - zu einer Zeit, als das erst 5 Jahre alt war. Ich habe viel mehr aus dem O'Reilly Buch "Lex and Yacc" gelernt (1. und 2. Auflage - die neue (dritte) Ausgabe heißt [Flex and Bison] (http://oreilly.com/catalog/9780596155988)) . Ich finde, dass Google hilfreich ist, wenn ich nach "yacc tutorial" suche - die meisten Tutorials scheinen auch Lex zu umfassen und/oder sind auch für Flex und Bison. –

+0

Ich schätze Ihre Zeit und Hilfe sehr! ~ Danke, dass du dir die Zeit genommen hast und meine grundlegende Frage beantwortet hast :) – CompilingCyborg

1

definieren Sie besitzen yytype und alle Werte über

+0

Danke für Ihre Hilfe! ~ Ich werde mein Bestes versuchen, um dies selbst zu erforschen. – CompilingCyborg

Verwandte Themen