2010-12-10 15 views

Antwort

11

x+++++y wird als x ++ ++ + y und nicht als x ++ + ++ y geparst. Nach Maximal Munch principleder tokenizer sollte bis zum Hinzufügen eines weiteren Zeichen Zeichen aus der Quelldatei lesen Sie weiter bewirkt, dass die aktuelle Token zu stoppen Sinn machen“ kompilieren

x++ ++ +y sollte nicht (in C und C++), weil die Post-Inkrementoperator ++ erfordert ein lvalue als ein Argument und gibt ein rvalue zurück.

+0

Dies gilt für alle Sprachen, die gierig/längste Übereinstimmung verwenden Regexes für Tokenization - das sollte die meisten von ihnen sein (eigentlich kann ich nicht an eine denken, die nicht). – delnan

+0

* "' x ++ ++ + y' sollte nicht kompiliert werden "* Und tatsächlich, es tut es nicht (auf' gcc' sowieso): 'error: lvalue erforderlich als Inkrementoperand' Wow, ich war erleichtert, das zu sehen. –

+0

Leider sind nicht alle Formen von "+++++++++" nicht kompilierbar. MSVC akzeptiert zumindest einige von ihnen und dann weiß WTF was damit. Es gibt diesen kleinen, hauseigenen Nutzen, der einem Praktikanten immer gegeben wurde (nicht meine Entscheidung). Es ist Scheiße wie überall drin. –