Spec-Zone.ru › Ada 2012
Справочное руководство Ada 2012

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 в определении exponent — это символ с именем «ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА Е», а не «ГРЕЧЕСКАЯ ПРОПИСНАЯ БУКВА ЭПСИЛОН».
Когда в данном Международном стандарте упоминается преобразование какого-либо символа или последовательности символов в верхний регистр, это означает преобразование, полученное с помощью простого преобразования в верхний регистр, как определено в документах, на которые ссылается примечание в пункте 1 раздела ISO/IEC 10646:2011.
Синтаксическая категория — это нетерминал в грамматике, определённой в 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