Ist C++ kontextfrei oder kontextsensitiv?C++

Programme in C++. Entwicklerforum
Anonymous
 Ist C++ kontextfrei oder kontextsensitiv?

Post by Anonymous »

Ich höre oft Behauptungen, dass C++ eine kontextsensitive Sprache sei. Nehmen Sie das folgende Beispiel:

Code: Select all

a b(c);
Ist das eine Variablendefinition oder eine Funktionsdeklaration? Das hängt von der Bedeutung des Symbols c ab. Wenn c eine Variable ist, dann definiert a b(c); eine Variable mit dem Namen b vom Typ a. Es wird direkt mit c initialisiert. Aber wenn c ein Typ ist, dann deklariert a b(c); eine Funktion namens b, die ein c akzeptiert und ein a zurückgibt.

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post