Н. Джехани - Язык Ада (1988) (1160771), страница 60
Текст из файла (страница 60)
Ввод. вывод в языке определен средствами предопределенных библиотечных пакетов. Предоставляются средства для ввода-вывода значений типов, определенных пользователем, а также значении предопределенных типов; обеспечивается представление изображений значении в стандартной форме. Наконец, язык предоставляет мощные средства параметризации программных модулей, называемых настраиваемыми программными модулями. Параметрами настроики могут быть типы и подпрограммы (а также объекты), и, таким образом, допустимы общие алгоритмы, применимые для всех типов данного класса.
1.5. МЕТОД ОПИСАНИЯ И СИНТАКСИЧЕСКИЕ ОБОЗНАЧЕНИЯ Контекстно-свободный синтаксис программных модулей языка Ада вместе с контекстнозависимыми требованиями выражается правилами в повествовательной форме. Семантика программных модулей описана правилами определения результата выполнения каждой конструкции и правилами их построения. В изложении используются термины, точное определение которых дано в тексте (ссылки на содержащие определения разделы по. мешены в конце каждого использующего понятие раздела).
Все другие понятия имеют свое естественное значение, определенное в словаре русского языка Ушакова'~. Контекстно-свободный синтаксис языка описывается с помощью простого варианта форм Бэкуса-Наура. В частности: а)Записанные строчными буквами слова, возможно содержащие в некоторых случаях символ подчеркивания, используются для обозначения синтаксических понятии, например: аддитивная операция В названиях синтаксических понятий, используемых вне контекста синтаксических правил, вместо символа подчеркивания используется пробел (например, аддитивная операция).
я в оригинале: третий новый международный словарь английского языка уэбстера. — прим.парез. стр.зво Глава Г б) Полужирным шрифтом выделены зарезервированные слова, например: алау в) В квадратные скобки заключены необязательные элементы. Поэтому два следующих правила эквивалентны: оператор возврата::= ге(мгл (выражение); оператор возврата::= пшмпщ ) ге(шш выражение; П Повторяющиеся элементы заключаются в фигурные скобки. Этот элемент может встретиться нуль или более раз; повторение осуществляется слева направо в соответствии с правилом левой рекурсии. Таким образом, два следующих правила эквивалентны: слагаемое::= множитель (операция умножения множитель) слагаемое::= множитель ) слагаемое операция умножения множитель д) Вертикальная черта разделяет альтернативные элементы, кроме тех случаев, когда чер.
та встречается непосредственно за открывающейся фигурной скобкой, тогда она обозначает знак вертикальной черты; буква или-цифра с= буква ! цифра сопоставление компонента::= (выбор () выбор) =>) выражение е) Если название какого-нибудь синтаксического понятия содержит выделенную курсивом часть, оно эквивалентно названию синтаксического понятия без выделенной курсивом части. Выделенная курсивом часть предназначена для выражения некоторои семантической инфор.
мации. Например, имя типа и нмя задачи эквивалентны просто понятию имя. Примечание. Описывающие структурные конструкции синтаксические правила представлены в форме, соответствующей рекомендованному делению на абзацы. Например, условный оператор определяется так: условный оператор::= И условие Шеп последовательность операторов (е)в)! условие Шел последовательность операторов) (е!ве последовательность операторов) епб Н; Синтаксические правила записываются в несколько строчек, если соответствующие части конструкции рекомендуется располагать на разных строчках.
Все отступы от начала строчки рекомендованы в правилах для сдвига соответствующих частей конструкции. Все отступы должны быть кратны базовому шагу отступа (число пробелов в базовом шаге не определяется) Переход на новую строчку рекомендуется после точки с запятой. С другой стороны, если вся конструкция умещается на одной строчке, то это также допустимо. 1.б.
КЛАССИФИКАЦИВ ОШИБОК Определение языка делит ошибки на несколько различных категории: а) Ошибки, которые должны быть обнаружены во время компиляции любым компилятором с языка Ада. Эти ошибки соответствуют любому нарушению правил, данных в этом стандарте, кроме нарушений, соответствующим пунктам б) и в). В частности, к этой категории относятся нарушения правил, в которых использованы слова должно, допустимо, правильный или неправильный. Любав содержащая такую ошибку Ада-программа не является правильной; с другой стороны, тот факт, что программа правильна в этом смысле, не означает, что в ней нет других ошибок.
б) Ошибки, которые должны быть обнаружены во время выполнения Ада-программы. Соответствующим ошибочным ситуациям сопоставлены имена предопределенных искпю. чений. Каждый компилятор с языка Ада должен генерировать код, возбуждающии соответствующее исключение, если такая ошибочная ситуация встретится во время выполнения программы. Если исключение обязательно будет возбуждаться при выполнении даннои про. граммы, то компиляторы могут (но не обязательно) сообщить об этом во время компиляции. в)Ошибочное выполнение. Вве ение В языке определен ряд правил, которым должна подчиняться Ада-программа, хотя от компилятора и не требуется обнаружение нарушений этих правил ни во время компиляции, ни во время выполнения программы.
Слово ошибочный квалифицирует выполнение конструкций, содержащих ошибки этой категории. Результат выполнения ошибочной конструкции непредсказуем. г) Некорректная зависимость от порядка. Когда в справочном руководстве указывается, что различные части данной конструкции должны быть выполнены а порядке, который не определен е языке, это означает, что реализация допускает выполнение этих частей в любом порядке, но не параллельно. Более того, конструкция некорректна, если выполнение этих частей в различном порядке дает различный результат. Во время компиляции и во время выполнения программы (этот процесс называется выполнением) компилятор не всегда обеспечивает проверку некорректной зависимости результата от порядка.
Термин выполнение в равной мере применим к процессам, которые называют вычислением и предвыполнением. Если компилятор способен распознать во время компиляции, что конструкция ошибочна ипи содержит некорректную зависимость от порядка, то допускается, чтобы компилятор генерировал код, заменяющий конструкцию кодом, возбуждающим предопределенное исключение РНООНАМ ЕННОН.
Компилятор также может сгенерировать код, который во время выполнения проверяет ошибочность конструкции, некорректную зависимость от порядка или и то и другое. Предопределенное исключение РНООНАМ ЕННОН возбуждается, если проверка покажет наличие такой ошибки. Глава 2 ЛЕКСИКА Текст программы состоит из текстов одной ипи нескольких компиляций. Текст компиляции — ато последовательность лексических элементов (лексем), каждая из которых состоит из символов.
В атой главе приведены правила составления лексем. Кроме того, в ней описаны прагмы, задающие определенную информацию для компилятора. Ссыпки: компиляция 10.1, лексема 2.2, прагма 2.8, символ 2.1. 2.!. НАБОР СИМВОЛОВ Символами в тексте программы должны быть только графические символы и символы управления форматом. Каждый графический символ соответствует единственному коду из набора символов !80, кодируемых семью разрядами (стандарт )80 646), и представляется (визуально) графическим знаком.
Некоторые графические символы представляются различными графическими знаками в национальных представлениях набора символов )80. При описании определения языка в данном справочном руководстве используются графические знаки АВСП, представляющие собой национальное представление АНВ! набора символов )80.
графический символ и= основной графический символ ! строчная буква ! дополнительный специальный символ основной графический символ::= прописная буква ! цифра ! специальный символ ! символ пробела основной символ::= основной графический символ ! символ управления форматом Набор основных символов достаточен дпя написания любой программы. Основные гра. фические символы подразделяются на следующие категории: а) прописные буквы '! А В С 0 Е Р 0 Н ! д К Е М Н 0 Р 0 В 8 Т 0 Ч ЧЧ Х У 2 б) цифры 0 1 2 3 4 5 6 7 8 9 в) специальные символы () +, — . ':; <=> г)символ пробела. Символы управления форматом — это символы )80 (и АВСП), называющиеся горизонталь. нои табуляцией, вертикальной табуляцией, возвратом каретки, переводом строчки и переводом формата.
Остальные категории графических символов определяются следующим образом: д) строчные буквы В а Ь с б е 1 д П ! ! К ! гп и о р д г в ! и ч чу х у з е) дополнительные специальные символы 8 "ть 2 Ж(' ) !) В равд.2.10 определены допустимые замены для специальных символов вертикальной черты (!), номера (а) и кавычки ("). '! 6 ~скоте перевода дпя идентификаторов наряду с латинские попользуется алфавит прописных русских букв — Прин. ред. а 6 тексте перевода наряду с латинским испопьзуется алфавит строчных русских букв. — Прим. ред. 289 Лексика Примечание.
Графическому символу номера в представлении АВСЛ соответствует символ фунта стерлингов в представлении национальных стандартов Франции, Германии и Велико. британии. Шрифтовые выделения графических символов (например, курсив или попужирныи шрифт) не являются частью стандарта 180. Под использованными в этом разделе акронимами понимают следующее: АН81 — Американский национальный институт стандартов, АВСЛ вЂ” Американский стандартный код дпя обмена информацией, 180 — Международная организация по стандартизации.
Дпя ссылок на специальные и дополнительные специальные символы используются следующие их наименования: Знак Наименование х' З 3 % ? Ж Текст программы состоит из текстов одной или нескольких компиляций. Текст каждой компиляции — это последовательность отдельных лексем. Лексема (лексический элемент)— это ограничитель, идентификатор (которыи может быть зарезервированным словом), числовой литерал, символьный литерал, строковый литерал ипи комментарий. Результат выполнения программы зависит только от конкретной последовательности лексем, исключая возможные комментарии. В некоторых случаях необходим явный разделитель между соседними лексемами (в про.