Wie kann ich eine C-Zeichenfolge (char *) mit flex / bison analysieren?

8

In meinem Programmierprojekt möchte ich Kommandozeilenattribute mit flex / bison analysieren. Mein Programm heißt so:

%Vor%

Ist es möglich, diese Zeichenfolge mit flex / bison zu analysieren, ohne sie in eine Datei zu schreiben und diese Datei zu analysieren?

    
Philipp Riegger 25.11.2010, 17:43
quelle

5 Antworten

4

Siehe diese Frage String-Eingabe zum Flex-Lexer

    
epatel 25.11.2010, 18:00
quelle
2

Ich denke, dass Sie etwas Ähnliches erreichen können (ich habe eine ähnliche Sache gemacht), indem Sie fmemopen verwenden, um einen Stream aus einem char* zu erstellen, und ersetzen Sie das dann durch stdin

So ähnlich (ich bin mir nicht sicher, ob es voll funktionsfähig ist, da ich tatsächlich versuche, verfügbare syscalls zu behalten, aber es wäre etwas Ähnliches)

%Vor%     
Jack 25.11.2010 17:58
quelle
2

Hier ist ein komplettes Flex-Beispiel.

%Vor%     
Tad Carlucci 28.03.2016 00:51
quelle
0

ein anderes Beispiel. Dieser definiert das Makro YY_INPUT neu:

%Vor%     
Jake 30.05.2016 18:51
quelle
-1

Die Antwort ist "Ja". Siehe die O'Reilly-Veröffentlichung mit dem Titel "lex & amp; yacc", 2. Auflage von Doug Brown, John Levine, Tony Mason. Siehe Kapitel 6, Abschnitt "Eingabe von Strings".

Ich habe auch gerade bemerkt, dass es einige gute Anweisungen in der Sektion "Input from Strings", Kapitel 5 von "flex and bison" von John Levine gibt. Achten Sie auf die Routinen yy_scan_bytes (char * bytes, int len), yy_scan_string ("string") und yy_scan_buffer (char * base, yy_size_t size). Ich habe selbst nicht von Saiten gescannt, werde es aber bald versuchen.

    
Kevin Jensen 07.08.2015 13:52
quelle

Tags und Links