Словарь и представление
Для представления терминальных символов предусматривается использование набора знаков ASCII. Слова языка - это идентификаторы, числа, строки, операции и разделители. Должны соблюдаться следующие лексические правила. Пробелы и концы строк не должны встречаться внутри слов (исключая комментарии и пробелы в символьных строках). Пробелы и концы строк игнорируются, если они не существенны для отделения двух последовательных слов. Заглавные и строчные буквы считаются различными.
1. Идентификаторы - последовательности букв и цифр. Первый символ должен быть буквой.
идент = буква {буква | цифра}.
Примеры: x Scan Oberon2 GetSymbol firstLetter
2. Числа - целые или вещественные (без знака) константы. Типом целочисленной константы считается минимальный тип, которому принадлежит ее значение (см. ). Если константа заканчивается буквой H, она является шестнадцатеричной, иначе - десятичной.
Вещественное число всегда содержит десятичную точку. Оно может также содержать десятичный порядок. Буква E (или D) означает "умножить на десять в степени". Вещественное число относится к типу REAL кроме случая, когда у него есть порядок, содержащий букву D. В этом случае оно относится к типу LONGREAL.
число | = | целое | вещественное. |
целое | = | цифра {цифра} | цифра {шестнЦифра} "H". |
вещественное | = | цифра {цифра} "." {цифра} [Порядок]. |
Порядок | = | ("E" | "D") ["+" | "-"] цифра {цифра}. |
шестнЦифра | = | цифра | "A" | "B" | "C" | "D" | "E" | "F". |
цифра | = | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". |
Примеры:
1991 | INTEGER | 1991 |
0DH | SHORTINT | 13 |
REAL | ||
7E8 | REAL | 456700000 |
712566D-6 | LONGREAL | 000057712566 |
/ul>
3. Символьные константы обозначаются порядковым номером символа в шестнадцатеричной записи, оканчивающейся буквой X.
символ = цифра {шестнЦифра} "X".
4. Строки - последовательности символов, заключенные в одиночные (') или двойные (") кавычки. Открывающая кавычка должна быть такой же, что и закрывающая и не должна встречаться внутри строки. Число символов в строке называется ее длиной. Строка длины 1 может использоваться везде, где допустима символьная константа и наоборот.
строка = ' " ' {символ} ' " ' | " ' " {символ} " ' ".
Примеры: "Oberon-2" "Don't worry!" "x"
5. Операции и разделители - это специальные символы, пары символов или зарезервированные слова, перечисленные ниже. Зарезервированные слова состоят исключительно из заглавных букв и не могут использоваться как идентификаторы.
+ | := | IMPORT | ARRAY | RETURN |
- | ^ | BEGIN | IN | THEN |
* | = | BY | IS | TO |
/ | # | CASE | LOOP | TYPE |
~ | < | CONST | MOD | UNTIL |
& | > | DIV | MODULE | VAR |
. | <= | DO | NIL | WHILE |
, | >= | ELSE | OF | WITH |
; | .. | ELSIF | OR | |
| | : | END | POINTER | |
( | ) | EXIT | PROCEDURE | |
[ | ] | FOR | RECORD | |
{ | } | IF | REPEAT |