Die Syntax von Oberon-2 wird hier in der erweiterten Backus-Naur-Form (EBNF) wiedergegeben. Dabei werden Alternativen durch | getrennt, eckige Klammern schließen optionale Ausdrücke ein und geschweifte Klammern erlauben null-, ein- oder mehrfache Wiederholungen des eingeschlossenen Ausdrucks.
Symbole sind Namen, Zahlen, Zeichenketten, Operatoren, Begrenzer und Schlüsselwörter. Sie setzen sich aus Zeichen aus dem ASCII-Zeichensatz zusammen. Dabei müssen folgende Regeln beachtet werden:
Einige Namen sind bereits vordefiniert. Häufig tauchen auch noch Zeichenkonstanten und Kommentare auf.
Jeder in einem Programm vorkommende und nicht vordefinierte Name muß durch eine Deklaration eingeführt werden. Bei der Deklaration werden auch noch weitere Eigenschaften dieses Objekts festgelegt. Für das Programm ist ein Objekt ab seiner Deklaration und bis zum Ende des Blocks, in dem die Deklarartion erfolgt ist, sichtbar.
Regeln:
Ein innerhalb eines Moduls deklarierter Name kann durch eine zusätzliche Exportmarke ("*" oder "-") als exportiert gekennzeichnet werden. Ein aus einem Modul M exportierter Name x kann in anderen Modulen verwendet werden, wenn diese das Modul M importieren. Der Name wird dann dort durch M.x und wird 'qualifizierter Name' (qualified identifier) genannt. Namen, die durch "-" gekennzeichnet wurden, können im importierenden Modul nur im lesenden Zugriff verwendet werden.
Eine Konstantendeklaration verbindet einen Namen mit einem konstanten Wert.
Beispiele:
n = 100;
limit = 2*n-1;
Der Datentyp bestimmt den Wertebereich einer Variablen und die anwendbaren Operatoren. Eine Typdeklaration verbindet einen Namen mit einem Datentyp.
Beispiele:
Table = ARRAY n OF REAL;
Tree = POINTER TO Node:
Node = RECORD
key: INTEGER;
left, right: Tree;
END;
| Datentyp | Wertebereich |
| BOOLEAN | die Wahrheitswerte TRUE und FALSE |
| CHAR | die Zeichen des erweiterten ASCII-Codes (0X...0FFX) |
| SHORTINT | die ganzen Zahlen zwischen MIN(SHORTINT) und MAX(SHORTINT) |
| INTEGER | die ganzen Zahlen zwischen MIN(INTEGER) und MAX(INTEGER) |
| LONGINT | die ganzen Zahlen zwischen MIN(LONGINT) und MAX(LONGINT) |
| REAL | reelle Zahlen zwischen MIN(REAL) und MAX(REAL) |
| LONGREAL | reelle Zahlen zwischen MIN(LONGREAL) und MAX(LONGREAL) |
| SET | Mengen von ganzen Zahlen im Bereich von 0 bis MAX(SET) |