newsys
Jungspund
Dabei seit: 04.11.2007
Beiträge: 15
|
|
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...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von newsys: 04.11.2007 16:42.
|
|