Chomsky Normal form
-
Hey,
ist es möglich die grammatik von C in chomsky normal form zu schreiben???
TIA,
CHris
-
Wenn sie kontextfrei ist schon. Aber ich bin nicht sicher ob die C Grammatik kontextfrei ist.
-
-
htveriner schrieb:
Also wenn das wirklich die vollständige C Grammatik ist, dann ist sie kontextfrei. Möglich wäre es, z.B. in dem man die ganzen kontextsensitiven Bereiche nicht in der Grammatik sondern durch Sonderregeln behandelt.
-
Die reine ANSI C Grammatik ist kontextfrei,
allerdings gibt es diverse Compiler, die aus C eine kontextsensitive Grammatik machen, z.B. der Keil-CompilerDie ANSI C Grammatik die in der Yacc-kompatiblen Beschreibung unter http://www.lysator.liu.se/c/ANSI-C-grammar-y.html zu erhalten ist, dürfte allerdings nicht ausreichen, um "normale" C Quellen zu parsen, da kaum noch jemand exakt nach ANSI programmiert...
-
paddy@work schrieb:
Die reine ANSI C Grammatik ist kontextfrei, ...
Aber das Gleichheitszeichen z. B. kann Teil einer Zuweisung oder eines Vergleichs sein.
mfg
v R
-
und was ist mit dem *-Operator? Der hängt doch auch vom Kontext ab?!?
MfG
GPC
-
virtuell Realisticer schrieb:
paddy@work schrieb:
Die reine ANSI C Grammatik ist kontextfrei, ...
Aber das Gleichheitszeichen z. B. kann Teil einer Zuweisung oder eines Vergleichs sein.
mfg
v RKennst Du Max Munch?
Erst werden mal Tokens gebildet. Die werden nach dem maximum-munch-Prinzip gebildet. Es werden also immer so viele Zeichen wie möglich zusammen betrachtet. Aus "= " wird ASSIGN, aus "==" wird COMPARE, aus "===" wird demnach COMPARE ASSIGN, nicht etwas ASSIGN COMPARE oder gar ASSIGN ASSIGN ASSIGN. Daher rühren übrigens auch die Probleme mit templates in C++ >> wird immer als op>> gelesen und nicht als zwei aufeinanderfolgende schließende "template-Argumentliste Ende".Erst danach kommt das eigentliche parsen.