Справочник по Ada 2012
2.2 Лексические элементы, разделители и разделители
Статическая семантика
Текст программы состоит из текстов одной или нескольких компиляций. Текст каждой компиляции представляет собой последовательность отдельных лексических элементов. Каждый лексический элемент образуется из последовательности символов и является либо разделителем, либо идентификатором, либо ключевым словом, либо числовой_литераль, либо символьной_литераль, либо строковой_литераль, либо комментарием. Значение программы зависит только от конкретных последовательностей лексических элементов, образующих её компиляции, за исключением комментариев.
Текст компиляции делится на строки. В общем случае представление конца строки определяется реализацией. Однако последовательность одного или более format_effectorов, отличных от символа с кодовой точкой 16#09# (ТАБУЛЯЦИЯ), означает по крайней мере один конец строки.
В некоторых случаях требуется явный разделитель для разделения смежных лексических элементов. Разделитель может быть любым из следующих: separator_space, format_effector или конец строки, как указано ниже:
- A separator_space — это разделитель, за исключением области внутри комментария, строковой_литераль или символьной_литераль.
- Символ с кодовой точкой 16#09# (ТАБУЛЯЦИЯ) является разделителем, за исключением области внутри комментария.
- Конец строки всегда является разделителем.
Между любыми двумя смежными лексическими элементами, перед первым элементом каждой компиляции или после последнего, допускается один или несколько разделителей. Между идентификатором, ключевым словом или числовой_литераль и смежным идентификатором, ключевым словом или числовой_литераль требуется как минимум один разделитель.
Один или несколько символов other_format разрешены везде, где допускается разделитель; такие символы не влияют на смысл программы Ada.
Разделитель — это любой из следующих символов:
& ' ( ) * + , – . / : ; < = > |
или любой из следующих составных разделителей, каждый из которых состоит из двух смежных специальных символов
=> .. ** := /= >= <= << >> <>
Каждый из специальных символов, перечисленных для разделителей одиночных символов, является одиночным разделителем, за исключением случаев, когда этот символ используется в качестве символа составного разделителя, или в качестве символа комментария, строковой_литераль, символьной_литераль или числовой_литераль.
Следующие имена используются при ссылке на составные разделители:
| разделитель | наименование |
|---|---|
| => | стрелка |
| .. | двойная точка |
| ** | двойная звезда, возведение в степень |
| := | присваивание (произносится: «становится») |
| /= | неравенство (произносится: «не равно») |
| >= | больше или равно |
| <= | меньше или равно |
| << | левая скобка метки |
| >> | правая скобка метки |
| <> | рамка |
Требования к реализации
Реализация должна поддерживать строки длиной не менее 200 символов, не считая символов, используемых для обозначения конца строки. Реализация должна поддерживать лексические элементы длиной не менее 200 символов. Максимальная поддерживаемая длина строки и лексического элемента определяются реализацией.