Sind die Grammatiken moderner Programmiersprachen kontextfrei oder kontextsensitiv?

8

Sind die Sprachen C ++, C # oder Java kontextfrei oder kontextsensitiv?

    
Adam Lee 11.03.2012, 04:24
quelle

1 Antwort

6

C ++ ist seit der Vorlage weder kontextfrei noch kontextsensitiv System ist Turing-vollständig und zu bestimmen, ob ein Stück C ++ - Code legal ist C ++ ist unentscheidbar hart. Zum Beispiel könnte ich eine Vorlagenklasse definieren, die ein TM in einer Zeichenfolge simuliert und dann eine Konstante mit dem Wert 1 erstellt, wenn die Maschine akzeptiert, und 0, wenn dies nicht der Fall ist. Wenn ich das täte, wäre der folgende Code legal, wenn das TM bei der gegebenen Eingabe anhält:

%Vor%

Da, wenn das TM ablehnt, wird ein Array der Größe 0 erstellt, was nicht erlaubt ist.

Weder C # noch Java sind kontextfrei, da die Überprüfung, ob eine Variable korrekt und konsistent in einem bestimmten Bereich verwendet wird, nicht kontextfrei ist (der Beweis ist komplex und beruht auf Ogden's Lemma ). Ich bin mir jedoch nicht sicher, ob sie kontextsensitiv sind oder nicht.

Hoffe, das gibt eine teilweise Antwort auf Ihre Fragen!

    
templatetypedef 11.03.2012, 05:33
quelle