Grammatik für C++-Syntax Parser... Verständnisproblem



  • Hi!

    Ich bin dabei einen Parser zu basteln, der mir C++ Sourcecode parsen soll.
    Ich hab diese Seite gefunden, wo die C++ Syntax beschrieben ist (btw, kennt vielleicht jemand eine ähnliche und vllt bessere Seite?) aber so ganz versteh ich das alles nicht...
    Zum Beispiel 'identifier'. Der ist definiert als Nicht-Nummer ('nondigit') gefolgt von beliebig vielen Nicht-Nummern oder Nummern. Klar. 'Nondigit' ist definiert als Buchstabe oder Unterstrich oder (und das ist mein eigentliches Problem:) 'universal_character_name'. Ein universal_character_name ist demnach doch zum Beispiel '\u0000', oder?! Mein Compiler meckert aber, wenn ich bspw 'namespace \u0000 {/.../}' in meinem Code schreibe. Also irgendwas ist da nicht richtig. Kann mir wer helfen?

    Gruß und Danke



  • vielleicht ist dein Compiler nicht ganz standardkonform oder besagte Syntax ist nicht ganz korrekt. Stumpf der Syntax zufolge müssten identifier auch mit uchar-names erlaubt sein...



  • Ich habs mit dem GCC und dem VC++6 Compiler versucht. Beide schlucken das nicht. Hier hab ich noch weitere Infos gefunden. Offenbar unterstützen die Compiler Universal-character-names einfach nicht... Danke für die Antwort.



  • pumuckl schrieb:

    vielleicht ist dein Compiler nicht ganz standardkonform oder besagte Syntax ist nicht ganz korrekt. Stumpf der Syntax zufolge müssten identifier auch mit uchar-names erlaubt sein...

    Hmm, nein. So wie ich diese Syntaxdefinition verstehe, sind nicht UChar-Namen erlaubt, sondern Namen, die ein Backslash gefolgt von einem "u" und vier Hexdigits (oder einem "U" und acht Hexdigits) erlauben.

    Und das ist natürlich Quatsch, denn dann müsste der Compiler folgenden Code kompilieren:

    int main()
    {
        int \u0000 = 0;
    }
    

    Nun, mein Compiler (GCC) meckert da ("stray '\' in program") ... und ich glaube ihm das mal.

    Es könnte natürlich auch sein, dass ich diese XBNF falsch interpretiere ... dann wäre die aber sehr komisch.



  • Kann auch sein, dass das so ne Geschichte wie mit den Trigraph-Sequenzen ist, die eigentlich keinen so richtig interessieren und daher bei den Compilerbauern ziemlich niedrige Priorität haben.


Anmelden zum Antworten