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?
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%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.
Tags und Links c bison flex-lexer