Code: Select all
a b(c);
Wenn Sie die Definition kontextfreier Sprachen nachschlagen, erfahren Sie im Grunde, dass alle Grammatikregeln linke Seiten haben müssen, die aus genau einem nichtterminalen Symbol bestehen. Kontextsensitive Grammatiken hingegen erlauben beliebige Zeichenfolgen von terminalen und nicht-terminalen Symbolen auf der linken Seite.
Beim Durchsuchen von Anhang A von „Die Programmiersprache C++“ konnte ich keine einzige Grammatikregel finden, die auf der linken Seite etwas anderes als ein einzelnes nicht-terminales Symbol enthielt. Das würde bedeuten, dass C++ kontextfrei ist. (Natürlich ist jede kontextfreie Sprache auch kontextsensitiv in dem Sinne, dass die kontextfreien Sprachen eine Teilmenge der kontextsensitiven Sprachen bilden, aber darum geht es nicht.)
Ist C++ also kontextfrei oder kontextsensitiv?
Mobile version