Java Level 1 - Ableitung

Neue Frage »

Auf diesen Beitrag antworten »
newsys Java Level 1 - Ableitung

Hallo allerseits,

ich habe eine Frage zum Thema Ableitung eines Quelltextes in Java.

Wir haben die Aufgabe einen vorgegebenen Quelltext abzuleiten....Problem ist, dass ich dies noch nie gemacht habe und nun ein Beispiel suche. Im Internet (Google) habe ich leider nichts gefunden.

Kann mir jemand ein Beispiel zeigen? Oder ein Link geben?

Vielen Dank im vorraus
 
Auf diesen Beitrag antworten »
Tobias

Was ist denn "Quelltext ableiten"?
Auf diesen Beitrag antworten »
newsys

Hier ist mal die Aufgabe:

3.1.1 Die gegebene EBNF (siehe auch JavaLevel01-Syntax.pdf im CommSy) zeigt die Syntax für eine vereinfachte Variante von Java (Java Level 1). Auf den ersten Aufgabenblättern be-schränken wir uns auf diese Untermenge des Java-Sprachumfangs.Die Notation entspricht der üblichen Notation für die Java-Syntax in der „offiziellen“ Sprachdefinition. Überprüft den folgenden Quelltext auf seine syntaktische Korrektheit, indem ihr ihn, ausge-hend von der Regel für das Startsymbol CompilationUnit, konstruiert. Dabei werden die links stehenden Nichtterminale durch eine der hinter dem Doppelpunkt stehenden Zeilen ersetzt. Diesen Vorgang nennt man Ableitung; er wird jedes Mal implizit durchgeführt, wenn der Com-piler einen Quelltext übersetzt. Beispiel für den Beginn einer Ableitung (die Terminale des abgeleiteten Quelltextes sind zur Übersichtlichkeit unterstrichen):

CompilationUnit -> NormalClassDeclaration
-> class Identifier ClassBody
-> class Vertrag ClassBody
-> class Vertrag { { ClassBodyDeclaration } }

Hinweis: Ein Identifier ist ein Bezeichner (ein Name wie „Vertrag“ in diesem Beispiel) und ist aus Sicht der Grammatik ein terminales Symbol (nicht weiter ableitbar). Das gleiche gilt für Li-terale wie den int-Wert 512 oder den String "Banane".
Leitet den folgenden Quelltext vollständig in der angegebenen Weise ab:

class Vertrag

{ private int _vertragsnummer; public int gibVertragsnummer()
{
if (_vertragsnummer > 0)
return _vertragsnummer;
}
}

Benutzt einen beliebigen Texteditor, damit ihr bei einem Fehler leichter korrigieren könnt. Bei jedem Ableitungsschritt solltet ihr nur genau eine Ersetzung vornehmen: Entweder ersetzt ihr ein Nichtterminal durch eine seiner möglichen Alternativen oder ihr ersetzt Metasymbole wie die geschweiften Klammern der EBNF.

Ich würde halt ganz gerne mal ein anderes vollständiges Beispiel sehen...
Auf diesen Beitrag antworten »
Crotaphytus

Ein einfaches Beispiel für Binärzahlen mit optionalem Dezimalteil (damits etwas interessanter wird):

Binary = 0 | 1{Bin}[.{Bin}1]
Bin = 0|1

Dann hier die Ableitung der Zahl 101.01 (Ersetzungen jeweils von Links nach Rechts:

Binary -> 1{Bin}[.{Bin}1] > 1BinBin[.{Bin}1] -> 10Bin[.{Bin}1] -> 101[.{Bin}1] -> 101.{Bin}1 -> 101.Bin1 -> 101.01
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »