3. Vocabulary and Representation

The representation of (terminal) symbols in terms of characters is defined using the ASCII set. Symbols are identifiers, numbers, strings, operators, and delimiters. The following lexical rules must be observed: Blanks and line breaks must not occur within symbols (except in comments, and blanks in strings). They are ignored unless they are essential to separate two consecutive symbols. Capital and lower-case letters are considered as distinct.

1. Identifiers are sequences of letters and digits. The first character must be a letter.

ident=letter {letter | digit}.
Examples:
x
Scan
Oberon2
GetSymbol
firstLetter
2. Numbers are (unsigned) integer or real constants. The type of an integer constant is the minimal type to which the constant value belongs (see 6.1). If the constant is specified with the suffix H, the representation is hexadecimal otherwise the representation is decimal.

A real number always contains a decimal point. Optionally it may also contain a decimal scale factor. The letter E (or D) means "times ten to the power of". A real number is of type REAL, unless it has a scale factor containing the letter D. In this case it is of type LONGREAL.

number=integer | real.
integer=digit {digit} | digit {hexDigit} "H".
real=digit {digit} "." {digit} [ScaleFactor].
ScaleFactor=("E" | "D") ["+" | "-"] digit {digit}.
hexDigit=digit | "A" | "B" | "C" | "D" | "E" | "F".
digit="0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
Examples:
1991INTEGER1991
0DHSHORTINT13
12.3REAL12.3
4.567E8REAL456700000
0.57712566D-6LONGREAL0.00000057712566
3. Character constants are denoted by the ordinal number of the character in hexadecimal notation followed by the letter X.
character=digit {hexDigit} "X".
4. Strings are sequences of characters enclosed in single (') or double (") quote marks. The opening quote must be the same as the closing quote and must not occur within the string. The number of characters in a string is called its length. A string of length 1 can be used wherever a character constant is allowed and vice versa.
string=' " ' {char} ' " ' | " ' " {char} " ' ".
Examples:
"Oberon-2"
"Don't worry!"
"x"
5. Operators and delimiters are the special characters, character pairs, or reserved words listed below. The reserved words consist exclusively of capital letters and cannot be used as identifiers.
+:=ARRAYIMPORTRETURN
-^BEGININTHEN
*=BYISTO
/#CASELOOPTYPE
~<CONSTMODUNTIL
&>DIVMODULEVAR
.<=DONILWHILE
,>=ELSEOFWITH
;..ELSIFOR
|:ENDPOINTER
()EXITPROCEDURE
[]FORRECORD
{}IFREPEAT
6. Comments may be inserted between any two symbols in a program. They are arbitrary character sequences opened by the bracket (* and closed by *). Comments may be nested. They do not affect the meaning of a program.
Previous Section, Next Section, Contents
Adapted to HTML by Jürgen Geßwein; 8. Juni 1995