© APSIS GmbH , Polling,
2000
Die nichtterminalen Symbole (Syntaxbegriffe)
wurden blau und kursiv gesetzt. Sie enthalten einen Verweis zur Begriffsdefinition. Die
terminalen Symbole werden mit Schreibmaschinenschrift und fett
dargestellt. Metasymbole sind die Definition ::= Option [ ], die Wiederholung { } und die
Alternative |. Die Unterscheidung der letzten drei zu den terminalen Symbolen [ ]
{ } und | ist wichtig.
- Überetzungseinheit
::=
- [ PaketKlausel ] [
ImportKlausel ] { Typvereinbarung }
- PaketKlausel ::=
- package Paketname
;
- ImportKlausel ::=
- import Paketname.*
; |
- import Schnittstellenname
; |
- import Klassenname
;
- Typvereinbarung ::=
- [ Dokumentationskommentar
] Klassenvereinbarung
|
- [ Dokumentationskommentar
] Schnittstellenvereinbarung
|
- ;
- Paketname ::=
- [ Paketname .]
Bezeichner
- Klassenname ::=
- [ Paketname .]
Bezeichner
- Schnittstellenname
::=
- [ Paketname .]
Bezeichner
- Dokumentationskommentar ::=
/** { Zeichen } */
Einige Compiler verlangen, daß sich die Übersetzungseinheit Programm.java
nur eine öffentliche Klasse und zwar mit dem Namen Programm
enthält.
- Klassenvereinbarung
::=
- { Klassenmodifizierer
} class Bezeichner
[ extends Klassenname
] [ implements Schnittstellen
] { Komponentenvereinbarungen
}
- Klassenmodifizierer
::=
- abstract | final |
- public
- Schnittstellen ::=
- Schnittstellenname { ,
Schnittstellenname }
- Komponentenvereinbarungen
::=
- { Komponentenvereinbarung
}
- Komponentenvereinbarung
::=
- [ Dokumentationskommentar
] Methodenvereinbarung
|
- [ Dokumentationskommentar
] abstract AufgeschobeneMethodenvereinbarung
|
- [ Dokumentationskommentar
] native NativeMethodenvereinbarung
|
- [ Dokumentationskommentar
] Konstruktorvereinbarung
|
- [ Dokumentationskommentar
] Variablenvereinbarung
|
- StatischerInitialisator
|
- ;
- StatischerInitialisator
::=
- static Block
- Variablenvereinbarung
::=
- { VariablenModifizierer
}
Typ Variablendeklaration {, Variablendeklaration } ;
- VariablenModifizierer
::=
- public | protected | private |
- static |
- final | transient | volatile
- Variablendeklaration ::=
- Deklaration [
=
Vorbesetzungswert]
- Deklaration ::=
- Bezeichner
- Deklaration [
]
- Vorbesetzungswert ::=
- Ausdruck |
- { } |
- { Vorbesetzungswert
{, Vorbesetzungswert
} }
- Methodenvereinbarung
::=
- { Methodenmodifizierer
} Ergebnistyp Deklaration (
[ Parameterliste ] )
[ throws Ausnahmen
] Block
- Methodenmodifizierer
::=
- public | protected | private |
- static |
- final | synchronized
- NativeMethodenvereinbarung
::=
- { Methodenmodifizierer
} Ergebnistyp Deklaration (
[ Parameterliste ] )
[ throws Ausnahmen
] ;
- Ergebnistyp ::=
- Typ | void
- Parameterliste ::=
- Typ Deklaration { , Typ Deklaration
}
- Ausnahmen ::=
- Ausnahme { ,
Ausnahme }
- Ausnahme ::=
- Klassenname
- Konstruktorvereinbarung
::=
- Konstruktormodifizierer
Klassenname (
[ Parameterliste ] )
[ throws Ausnahmen
]
- Konstruktorrumpf
- Konstruktormodifizierer
::=
- public | protected | private
- Konstruktorrumpf ::=
- { [ Konstruktoraufruf
] LokalAnweisungen
}
- Konstruktoraufruf
::=
- this ( AktuelleParameterliste
)
- super ( AktuelleParameterliste
)
- Anweisung ::=
- ; |
- AusdruckAnweisung ;
|
- return [Ausdruck]
; |
- Verzweigung |
- Wiederholung |
- Ausnahmebehandlung
|
- Block |
- AusdruckAnweisung ::=
- Ausdruck
Als AusdruckAnweisung
sind nur Ausdrücke zulässig, die unmittelbar einen Seiteneffekt hervorbringen: Inkrement
und Dekrement-Ausdrücke, Methoden- und Konstruktoraufrufe sowie Wertzuweisungen.
Verzweigungen
- Verzweigung ::=
- if ( Test
) Anweisung
[else Anweisung
] |
- switch ( Test
) { case Ausdruck :
Anweisung
} [ default : Anweisung
]
- Test ::=
- Ausdruck
ein Boolescher Ausdruck
Wiederholungen
- Wiederholung ::=
- [ Marke : ] while
( Test )
Anweisung
- [ Marke : ] do
Anweisung while
( Test )
;
- [ Marke : ] for
( Anfangswert
; [ Test ] ;
[ Schritt ] )
Anweisung
- break [Marke]
;
- continue [Marke]
;
- Anfangswert ::=
- Typ Variablendeklaration {, Variablendeklaration } AusdruckAnweisung
- Schritt ::=
- Ausdruck {, Ausdruck}
- Marke ::=
- Bezeichner
Ausnahmebehandlung
- Ausnahmebehandlung
::=
- synchronized ( Ausdruck
) Anweisung
|
- try Anweisung
{ Fanger
} [ finally
Anweisung
] |
- throw Ausdruck
;
- Fanger ::=
- catch ( Ausnahme
Bezeichner )
Block
Blöcke
- Block ::=
- { LokalAnweisungen
}
- LokalAnweisungen
::=
- LokalAnweisung
{ LokalAnweisungen
}
- LokalAnweisung
::=
- Typ Variablendeklaration {, Variablendeklaration } ;
|
- Anweisung ;
- Ausdruck ::=
- BedingterAusdruck |
- UnärerAusdruck Zuweisungsoperator Ausdruck
- Zuweisungsoperator
::=
- = | *= | /= | %= | +=
| -= <<= | >>= | >>>=
| &= | ^= | |=
- BedingterAusdruck ::=
- Kurzdisjunktion [ ?
Ausdruck : BedingterAusdruck ]
- Kurzdisjunktion ::=
- Kurzkonjunktion {
||
Kurzkonjunktion
}
- Kurzkonjunktion ::=
- Disjunktion {
&&
Disjunktion
}
- Disjunktion ::=
- Exjunktion {
|
Exjunktion
}
- Exjunktion ::=
- Konjunktion {
^
Konjunktion
}
- Konjunktion ::=
- Gleichheit {
&
Gleichheit
}
- Gleichheit ::=
- Vergleich [
Gleichheitsoperator Vergleich
]
- Gleichheitsoperator
::=
- == | !=
- Vergleich ::=
- Verschiebung [
instanceof
Referenztyp
] |
- Verschiebung Ordnungsoperator Verschiebung
- Ordnungsoperator
::=
- < | <= | >= | >
- Verschiebung ::=
- Addition {
Verschiebungsoperator Addition
}
- Verschiebungsoperator
::=
- << | >> | >>>
- Addition ::=
- Multiplikation {
Additionsoperator Multiplikation
}
- Additionsoperator ::=
- + | -
- Multiplikation ::=
- UnärerAusdruck {
Multiplikaitionsoperator UnärerAusdruck
}
- Multiplikaitionsoperator
::=
- * | / | %
- UnärerAusdruck ::=
- Erzeugung |
- MonadischerOperator UnärerAusdruck |
- InkrementOperator
Primärausdruck |
- Primärausdruck InkrementOperator |
- ( Typ )
UnärerAusdruck |
- MonadischerOperator
::=
- + | - | ! | ~
- InkrementOperator
::=
- ++ | --
- Erzeugung ::=
- new Klassenname
( AktuelleParameterliste)
|
- new Basistyp
{ Dimension } |
- new Klassenname
{ Dimension } |
- Dimension ::=
- [ ]
- [ Ausdruck ]
- Primärausdruck ::=
- [ Klassenname .
]
Bezeichner |
- Literal |
- super | this |
- ( Ausdruck )
|
- Primärausdruck [
Ausdruck ] |
- Primärausdruck (
[AktuelleParameterliste] )
|
- Primärausdruck .
Bezeichner
- AktuelleParameterliste ::=
- Ausdruck { , Ausdruck }
- Typ ::=
- Basistyp |
- Referenztyp
- Basistyp ::=
- boolean |
- byte | short | int | long
|
- float | double |
- char
- Referenztyp ::=
- Klassenname |
- Schnittstellenname |
- Typ [
]
Schnittstellen
- Schnittstellenvereinbarung
::=
- [ Schnittstellenmodifizierer
]
interface Bezeichner
[extends Schnittstellen]
- { Schnittstellenkomponentenvereinbarungen
}
- Schnittstellenmodifizierer
::=
- public
- Schnittstellenkomponentenvereinbarungen
::=
- { Schnittstellenkomponentenvereinbarung
}
- Schnittstellenkomponentenvereinbarung
::=
- [ Dokumentationskommentar
]
AufgeschobeneMethodenvereinbarung
|
- [ Dokumentationskommentar
]
Schnittstellenvariablenvereinbarung
- ;
- AufgeschobeneMethodenvereinbarung
::=
- { Schnittstellenmethodenmodifizierer
}
Ergebnistyp Deklaration (
[ Parameterliste ] )
- [ throws Ausnahmen
] ;
- Schnittstellenmethodenmodifizierer
::=
- public | protected | private
- Schnittstellenvariablenvereinbarung
::=
- { Schnittstellenvariablenmodifizierer
}
Typ Schnittstellenvariablenvereinbarung
{, Schnittstellenvariablenvereinbarung
} ;
- Schnittstellenvariablenmodifizierer
::=
- public | protected | private |
- static
- Schnittstellenvariablenvereinbarung ::=
- Deklaration =
Vorbesetzungswert
- reserviertesWort
::=
- abstract | boolean
| break | byte
| case | catch
| char | class
| const | continue
| default | do
| double | else
| extends | final
| finally | float
| for | goto
| if | implements
| import | instenceof
| int | interface
| long | native
| new | null
| package | private
| protected | public
| return | short
| static | super
| switch | synchronized
| this | throw
| throws | transient
| try | void
| volatile | while
- Bezeichner ::= Buchstabe
{ Zeichen }
- Eine beliebig lange Folge (beginnend mit Buchstabe),
die kein reserviertesWort ist
- Zeichen ::= Buchstabe | Dezimalziffer | AnderesZeichen
- Buchstabe ::=
- UNICODE Buchstabe
- Dezimalziffer ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
- AnderesZeichen ::=
- UNICODE Zeichen
- Literal ::=
- Zahl
- Zeichenkettenliteral
- Zeichenliteral
- true | false
- null
- Zahl ::=
- [ - | +
] [ 0 | 0X ]
{ Ziffer } [ . ]
{ Ziffer } [ E ] Dezimalziffer [ Dezimalziffer ] [ F | D ]
- oder Kleinbuchstaben
- Hexadezimalzahl beginnt mit 0X, kann beliebige Hexadezimalziffer enthalten
- Oktalzahl beginnt mit 0, kann nur Oktalziffer enthalten
- Dezimalzahl beginnt nicht mit 0, kann nur Dezimalziffer enthalten
- Ziffer ::=
- Dezimalziffer | Oktalziffer
| Hexadezimalziffer
- Oktalziffer ::=
- 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
- Hexadezimalziffer ::=
- Dezimalziffer | A | B | C | D | E | F
- oder Kleinbuchstaben
- Zeichenkettenliteral ::=
- " {Zeichen} "
- Zeichenliteral ::=
- ' Zeichen ' | ' Sonderzeichen '
- Sonderzeichen ::=
- \n | \t | \b | \r | \f | \\ | \' | \" | \Oktalziffer Oktalziffer Oktalziffer
- Addition
- Additionsoperator
- AktuelleParameterliste
- Anfangswert
- Anweisung
- AufgeschobeneMethodenvereinbarung
- Ausdruck
- AusdruckAnweisung
- Ausnahmebehandlung
- Ausnahmen
- Basistyp
- BedingterAusdruck
- Bezeichner
- Block
- Deklaration
- Dimension
- Disjunktion
- Dokumentationskommentar
- Ergebnistyp
- Erzeugung
- Exjunktion
- Fanger
- Gleichheit
- Gleichheitsoperator
- Ausnahme
- ImportKlausel
- InkrementOperator
- Klassenmodifizierer
- Klassenname
- Klassenvereinbarung
- Komponentenvereinbarung
- Komponentenvereinbarungen
- Konjunktion
- Konstructormodifizierer
- Konstruktoraufruf
- Konstruktorrumf
- Konstruktorvereinbarung
- Kurzdisjunktion
- Kurzkonjunktion
- Literal
- LokalAnweisung
- LokalAnweisungen
- Marke
- Methodenmodifizierer
- Methodenvereinbarung
- MonadischerOperator
- Multiplikaitionsoperator
- Multiplikation
- NativeMethodenvereinbarung
- Ordnungsoperator
- PaketKlausel
- Paketname
- Parameterliste
- Primärausdruck
- Referenztyp
- Schnittstellen
- Schnittstellenkomponentenvereinbarung
- Schnittstellenkomponentenvereinbarungen
- Schnittstellenmethodenmodifizierer
Schnittstellenmodifizierer
- Schnittstellenname
- Schnittstellenvariablenmodifizierer
- Schnittstellenvariablenvereinbarung
- Schnittstellenvariablenvereinbarung
- Schnittstellenvereinbarung
- Schritt
- StatischerInitialisator
- Test
- Typ
- Typvereinbarung
- Überetzungseinheit
- UnärerAusdruck
- Variablendeklaration
VariablenModifizierer
- Variablenvereinbarung
- Vergleich
- Verschiebung
- Verschiebungsoperator
- Verzweigung
- Vorbesetzungswert
- Wiederholung
- Zahl
- Zeichen
- Zeichenkette
- Zuwesungsoperator
© APSIS GmbH , Polling,
2000