© APSIS GmbH extern.gif (1249 Byte), Polling, 2000

Syntax der Sprache Java

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.

Übersetzungseinheit

Ü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.

Klassen

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

Variablen

Variablenvereinbarung ::=
{ VariablenModifizierer } Typ Variablendeklaration {, Variablendeklaration } ;
VariablenModifizierer ::=
public | protected | private |
static |
final | transient | volatile
Variablendeklaration ::=
Deklaration [ = Vorbesetzungswert]
Deklaration ::=
Bezeichner
Deklaration [ ]
Vorbesetzungswert ::=
Ausdruck |
{ } |
{ Vorbesetzungswert {, Vorbesetzungswert } }

Methoden

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

Konstruktoren

Konstruktorvereinbarung ::=
Konstruktormodifizierer Klassenname ( [ Parameterliste ] ) [ throws Ausnahmen ]
Konstruktorrumpf
Konstruktormodifizierer ::=
public | protected | private
Konstruktorrumpf ::=
{ [ Konstruktoraufruf ] LokalAnweisungen }
Konstruktoraufruf ::=
this ( AktuelleParameterliste )
super ( AktuelleParameterliste )

Anweisungen

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 ;

Ausdrücke

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 }

Typen

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

Lexikalische Primitive

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

Index

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 extern.gif (1249 Byte), Polling, 2000