nextupprevious

Next:1.3 Описания
Up:1 Язык программирования Zonnon
Previous:1.1 Синтаксическая нотация


1.2 Языковые символы и идентификаторы

1.2.1. Словарь и представление

Лексемами языка Zonnon являются идентификаторы, числа, строки, знаки операций и разделители. Имеются следующие лексические правила:

1.2.2. Идентификаторы

Идентификаторы представляют собой последовательности букв, цифр и подчерков ''_''. Первый символ идентификатора должен быть буквой или подчерком.

ident = ( letter | "_" ) { letter | digit | "_" }.

Примеры:

X Scan Zonnon GetSymbol firstLetter
_external_package27 // подчерк обычно используется для взаимодействия с другими языками
 

1.2.3. Модификаторы и спецификаторы

Модификатор (modifier) используется для указания альтернативной семантики, когда один и тот же синтаксис используется для более чем одной цели. Он представляет собой список слов, чисел и символов, заключенный в скобки { }.

Примеры:

{ value }
{ public }

Спецификатор (specifier) используется для предоставления дополнительной информации, такой как тип ожидаемого объекта или его размер. Он представляет собой список чисел, заключенный в скобки { }, либо спецификацию протокола в РБНФ нотации (См. также 1.8.3).

Примеры:

var r: real{32};
i := integer(t);
{ bodypart = LEG | NECK| ARM.}
 

1.2.4. Численные константы


Числами являются (беззнаковые) целые и вещественные константы. Если константа специфицирована с суффиксом H, представление является шестнадцатеричным, иначе представление является десятичным. Вещественное число всегда содержит десятичную точку и факультативно может содержать десятичный масштабный множитель. Буква E означает «возвести десять в степень». Числовая константа факультативно может завершаться модификатором ширины, имеющим вид (заключенного в скобки) числа битов, которые должны использоваться для ее представления. Если ширина не специфицирована, используется ее значение по умолчанию, определенное в деталях реализации компилятора [Compiler]. Для более полной информации о типах см. 1.9.1.

number = (integer | real) [ "{" Width "}" ].
integer = digit {digit} | digit {hexDigit} "H".
real = digit {digit} "." {digit} [ScaleFactor].
ScaleFactor = "E" ["+" | "-"] digit {digit}.
hexDigit = digit | "A" | "B" | "C" | "D" | "E" | "F".
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
Width = ConstExpression.

Целая константа совместима как с целыми (знаковыми) типами, так и с кардинальными (беззнаковыми) типами.

Примеры:

Константа                           Тип                         Значение
1991                               integer/cardinal                1991
0DH{8}                         integer{8}cardinal{8}      13
12.3                                real                                  12.3
4.567E8                         real                                   456700000
0.57712566E-6{64}      real{64}                            0.00000057712566
 

1.2.5. Символьные константы


Символьная константа – это литера, заключенная в одинарные (') или двойные (") кавычки. Открывающая кавычка должна совпадать с закрывающей и не должна быть сама литерой. Символьная константа может также обозначаться порядковым кодом литеры в шестнадцатеричной нотации, за которым следует литера X. Это является полезным для представления специальных литер, которые либо не могут быть напечатаны, либо принадлежат расширенному множеству литер.

CharConstant = '"' character '"' | "'" character "'" | digit { HexDigit } "X".
character = letter | digit | Other.
Other = // Любая литера из алфавита, отличная от тех, которые в использовании…

Примеры:

"a" 'n' "'" '"' 20X
 

1.2.6. Строковые константы


Строковые константы представляют собой последовательности литер, заключенные в одинарные (') или двойные (") кавычки. Открывающая кавычка должна совпадать с закрывающей и не должна появляться в строке. Количество символов в строке называется ее длиной. Строка из одного символа (длины 1) может использоваться везде, где разрешено использовать символьную константу, и наоборот. Строковая константа может присваиваться переменной типа string (см. 6.3.1).

string = '"' { character } '"' | "'" { character } "'".
character = letter | digit | Other.
Other = // Любой символ алфавите, кроме тех, которые используются

Примеры:

"Zonnon" "Don't worry!" "x" 'hello world'
 

1.2.7. Зарезервированные слова, ограничители и знаки операций


Знаки операций и разделители – это специальные литеры, пары литер или зарезервированные слова, перечисленные ниже.

1.2.7.1. Зарезервированные слова

Следующие зарезервированные слова (напечатанные полужирным шрифтом) не могут использоваться в качестве идентификаторов и состоят исключительно из строчных букв:

accept activity array as await begin by case const definition div do else elsif end exception exit false for if implementation implements import in is launch loop mod module new nil object of on operator or procedure receive record refines repeat return self send then to true type until var while

или целиком из прописных букв:

ACCEPT ACTIVITY ARRAY AS AWAIT BEGIN BY CASE CONST DEFINITION DIV DO ELSE ELSIF END EXCEPTION EXIT FALSE FOR IF IMPLEMENTATION IMPLEMENTS IMPORT IN IS LAUNCH LOOP MOD MODULE NEW NIL OBJECT OF ON OPERATOR OR PROCEDURE RECEIVE RECORD REFINES REPEAT RETURN SELF SEND THEN TO TRUE TYPE UNTIL VAR WHILE
 

1.2.7.2. Ограничители


Литерами ограничителями являются:

( ) [ ] { } . (точка) , (запятая) ; (точка с запятой) : (двоеточие) .. (диапазон)
| (разделитель вариантов) ' (одинарная кавычка) " (двойная кавычка)
 

1.2.7.3. Предопределенные знаки операций


Предопределенными знаками операций являются:

- (унарный минус) + (унарный плюс) ~ (отрицание)
^ (унарное разыменование)
+ - * / div mod & or
:= (присваивание) = (равно) # (не равно) < <= > >= in implements
 

1.2.7.4. Определенные пользователем знаки операций


Язык Zonnon вводит понятие определенных пользователем знаков операций. Они объявляются подобно процедурам (См. 1.4.3).
 

1.2.8. Комментарии


Комментарии можно вставить между любыми двумя символами в программе. Они имеют вид произвольных последовательностей литер, заключенных в скобки (* и *). Комментарии могут вкладываться одни в другие. Они не влияют на смысл программы.
 
 

Next:1.3 Описания
Up:1 Язык программирования Zonnon
Previous:1.1 Синтаксическая нотация


© В.Н. Касьянов, Е.В.Касьянова,2004