Ich versuche, Flex gegen einen Puffer einzusetzen, der immer wieder aufgefüllt wird.
Ich habe mehrere Threads, die mit ihren eigenen unabhängigen Kopien des Puffers arbeiten.
In psuedo sieht es in meinem Hauptprogramm etwa so aus:
while(forever)
{
-fill buffer buf-
buf[length+1] = '\0';
buf[length+2] = '\0';
yy_scan_bytes(&buf, length+2);
yylex();
}
wo mehrere Threads diese Schleife ausführen und alle ihre Kopie von buf besitzen.
Ich habe eine Regel in meiner Lex-Datei, die wie folgt aussieht:
<<EOF>> {yyterminate(); yy_delete_buffer(YY_CURRENT_BUFFER);}
in dem Versuch, nach dem Durchlauf des Puffers aufzuräumen.
Ich bin mir nicht sicher, ob ich das richtig mache, da dies mein erster Versuch ist, einen Flex-Scanner in Verbindung mit einem anderen Programm zu verwenden. Wäre es besser, wenn ich die gesamte Pufferverarbeitung innerhalb von Flex durchführen würde und sie mit einer externen Erklärung in meinem Hauptprogramm verknüpfen würde?
Danke