Kann Bison UTF-8-Zeichen parsen?

8

Ich versuche, einen Bison-Parser für UTF-8-Zeichen zu erstellen. Ich möchte nicht, dass der Parser die Unicode-Zeichenwerte tatsächlich interpretiert, aber ich möchte, dass er die UTF-8-Zeichenfolge als eine Folge von Bytes analysiert.

Im Moment erzeugt Bison den folgenden Code, der problematisch ist:

%Vor%

Das Problem besteht darin, dass viele Bytes der UTF-8-Zeichenfolge einen negativen Wert haben und Bison negative Werte als EOF interpretiert und stoppt.

Gibt es einen Weg dazu?

    
Martin Cote 01.06.2009, 14:46
quelle

3 Antworten

8

bison ja, flex nein. Als ich einmal einen Bison-Parser brauchte, um mit UTF-8-kodierten Dateien zu arbeiten, schrieb ich meine eigene yylex -Funktion.

edit : Um zu helfen, habe ich eine Menge der Unicode-Operationen verwendet, die in glib (es gibt einen gunicode Typ und einige Datei- / Stringmanipulationsfunktionen, die ich nützlich fand).

    
eduffy 01.06.2009, 14:50
quelle
4

flex ist hier das Problem, Sie sollten sich vielleicht zlex ansehen .

    
chaos 01.06.2009 15:00
quelle
0

Das ist eine Frage von vor vier Jahren, aber ich stehe vor denselben Problemen und möchte meine Ideen teilen.

Das Problem ist, dass Sie in UTF-8 nicht wissen, wie viele Bytes gelesen werden sollen. Wie oben vorgeschlagen, können Sie Ihren eigenen Lexer verwenden und entweder ganze Zeilen lesen oder 4 Bytes jedes Mal lesen. Entpacken Sie dann das UTF-8-Zeichen und lesen Sie weitere Bytes, um erneut zu 4 Bytes zu vervollständigen.

    
quelle

Tags und Links