2016-05-23 4 views
2

Ich versuche, einen kleinen Lexer zu schreiben, und ich habe eine kleine FrageC++ Lexer

Betrachten Sie die folgende Zeichenfolge

cout << "hello world ; 

Beachten Sie, dass es nicht die " am Ende hat. sollte ich alles nach dem ersten " ein String und sagen, dass es eine fehlende " am Ende ist oder ignorieren die anfängliche " (sagen, dass es nicht mit einem anderen " endet) und PROCEDE die Token hello, world bis zum Ende zu analysieren der Linie?

Sorry, wenn es ein bisschen mehrdeutig scheint.

+0

Was denkst du? Denkst du, dass es notwendig ist, dass du 'Hallo',' Welt' usw. in Token nimmst? Warum würden Sie sie benötigen? –

+0

Wenn ich die Zeile analysierte, würde ich tun, was andere Compiler tun: Erzeuge einen Fehler, der "unterminated string constant" sagt –

+0

Da ist unbekannt, ob die Absicht war "Hallo Welt"; ',' "Hallo Welt;"; oder irgendeine andere Möglichkeit, es ist meiner Meinung nach, dass Sie das anfängliche '' 'verarbeiten müssen und alles, was folgt, bis das abschließende' "' auftritt (und in diesem Fall wurde es nie angetroffen). –

Antwort

1

Vielleicht ist der beste Weg, Clang zu bekommen, kompilieren Sie Ihren Code und sehen Sie, was es Ihnen als Fehler meldet. Im Quellcode von Clang haben Sie zwei separate Dateien, die alle möglichen lexikalischen und syntaktischen Fehler enthalten, so dass Sie prüfen können, ob Sie ein lexikalisches Problem oder ein Parsing-Problem melden. Sie müssen nicht jedes Mal auf den Tausenden Seiten des C++ - Standards suchen. Clang implementiert den Standard :)

Verwandte Themen