Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

1.1.4 Способ описания и обозначение синтаксиса

Форма программы Ada описывается с помощью контекстно-свободного синтаксиса вместе с контекстно-зависимыми требованиями, выраженными повествовательными правилами.
Значение программ Ada описывается с помощью повествовательных правил, определяющих как эффекты каждого конструкта, так и правила композиции конструктов.
Контекстно-свободный синтаксис языка описывается с использованием простого варианта формы Бэкуса-Наура. В частности:
  • Строчные слова в шрифте без засечек, некоторые содержащие встроенные подчеркивания, используются для обозначения синтаксических категорий, например:
case_statement
  • Жирные слова используются для обозначения служебных слов, например:
array
  • Квадратные скобки заключают необязательные элементы. Таким образом, следующие два правила эквивалентны.
simple_return_statement ::= return [expression];
simple_return_statement ::= return; | return expression;
  • Фигурные скобки заключают повторяющийся элемент. Элемент может появляться ноль или более раз; повторения происходят слева направо, как и в эквивалентном леворекурсивном правиле. Таким образом, следующие два правила эквивалентны.
term ::= factor {multiplying_operator factor}
term ::= factor | term multiplying_operator factor
  • Вертикальная черта разделяет альтернативные элементы, если она не встречается непосредственно после открывающей фигурной скобки, в этом случае она обозначает себя:
constraint ::= scalar_constraint | composite_constraint
discrete_choice_list ::= discrete_choice {| discrete_choice}
  • Если имя любой синтаксической категории начинается с курсированной части, она эквивалентна имени категории без курсированной части. Курсированная часть предназначена для передачи некоторой семантической информации. Например, subtype_name и task_name оба эквивалентны name в отдельности.
Разделители, составные разделители, служебные слова и numeric_literal состоят исключительно из символов, позиция кода которых находится между 16#20# и 16#7E#, включительно. Специальные символы, для которых определены имена в этом Международном стандарте (см. 2.1), также принадлежат к этому диапазону. Например, символ E в определении экспоненты — это символ, имя которого «ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА E», а не «ГРЕЧЕСКАЯ ЗАГЛАВНАЯ БУКВА ЭПСИЛОН».
Когда в этом Международном стандарте упоминается преобразование некоторого символа или последовательности символов в верхний регистр, это означает преобразование с использованием независимого от локали полного преобразования регистра, как определено документами, на которые ссылается примечание в разделе 1 ISO/IEC 10646:2003.
Синтаксическая категория — это нетерминал в грамматике, определенной в BNF в разделе «Синтаксис». Имена синтаксических категорий выделены другим шрифтом, например_таким_образом.
Конструкт — это фрагмент текста (явный или неявный), который является экземпляром синтаксической категории, определенной в разделе «Синтаксис».
Компонент конструкта — это сам конструкт или любой конструкт, появляющийся внутри него.
В тех случаях, когда выполнение определяет определённые действия для выполнения в произвольном порядке, это означает, что реализация должна организовать выполнение этих действий способом, эквивалентным некоторому последовательному порядку, следуя правилам, вытекающим из этого последовательного порядка. Когда вычисления определяются для выполнения в произвольном порядке, с преобразованием результатов в некоторые подтипы или с некоторыми проверками во время выполнения, вычисления, преобразования и проверки могут быть произвольно чередуемы, при условии, что каждый выражение вычисляется до преобразования или проверки его значения. Обратите внимание, что эффект программы может зависеть от порядка, выбранного реализацией. Это может произойти, например, если два фактических параметра данного вызова имеют побочные эффекты.
ПРИМЕЧАНИЯ
3 Правила синтаксиса, описывающие структурированные конструкты, представлены в форме, соответствующей рекомендуемому форматированию. Например, if_statement определяется как:
if_statement ::=
if condition then
sequence_of_statements
{elsif condition then
sequence_of_statements}
[else
sequence_of_statements]
end if;
4 Пробелы и отступы в правилах синтаксиса указывают рекомендуемые пробелы и отступы в соответствующих конструктах. Предпочтительные места для других пробелов находятся после точек с запятой.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API