Cтраница 3
Из-за большого разнообразия операционных систем могут возникнуть проблемы, если вам придется работать на PDP-11 где-то в другой организации. В ответ на допустимую последовательность литер, введенных пользователем, программа монитора будет выполнять некоторую совокупность действий; у монитора есть список, с помощью которого он узнает пользовательские команды. Сложность состоит в том, что разные мониторы могут иметь различные списки, а выполнить программу без знания команд монитора данной системы невозможно. Подобные различия затрудняют весь процесс создания программ и могут даже привести к тому, что программа будет прекрасно работать в одной системе и совсем не будет работать в другой. [31]
В зависимости от типа элементов, вида разрешенных операций и способов использования в программах существует несколько разновидностей последовательности. Типичными примерами последовательности являются последовательности литер, последовательный файл и стек. Часто их рассматривают как самостоятельные типы, но в данном изложении этого различия не делается. Отличие последовательности от рассмотренных ранее структурированных типов данных заключается в том, что количество элементов ( длина) последовательности конечно, но не фиксировано. Это допускает существование последовательности произвольной длины. Последовательность представляет собой тип, являющийся частным случаем рекурсивного типа, но, учитывая его важность, будет рассматриваться отдельно. [32]
Фрагмент программы на распечатке 5.3 показывает метод выполнения этого преобразования. В переменной Str содержится последовательность литер, считанная функцией ReadString, a Number и i объявлены как переменные натурального типа. [33]
Модуль Texts осуществляет чтение и запись стандартных типов данных, т.е. целочисленных, натуральных, литер и цепочек, из текстовых потоков данных. Текстовый поток данных - последовательность литер, источник или место назначения которых может включать любое допустимое устройство, генерирующее или получающее данные этого типа. Часто текстовый поток делится на строки текста, разделяемые литерой возврата каретки. Примерами источников и мест назначения текстовых потоков могут служить клавиатура, экран, устройство печати, модем и дисковые файлы. [34]
Но выбрасывание этих литер означает также, что их следует явно указывать во входном потоке, чтобы мы могли при желании управлять форматом вывода программы. Так, например, если CR-LF обозначает последовательность литер возврат каретки - перевод строки, то при вводе цепочки Один CR-LF Два мы увидим на печати ОдинДва в одной строке, в то же время исходные данные Один ( С - ЬР) Два приведут к печати слова Один на одной строке, а Два - на следующей. Позаботьтесь о том, чтобы ваш процессор правильно работал в этой ситуации. [35]
Как видно из этих рассуждений, существует несколько возможных определений семантики арифметических выражений; выбор зависит от того, как используется это выражение. Литеральная семантика полезна, если интересуются выражениями только как последовательностями литер; алгоритмическая семантика удобна при трансляции арифметических выражений, а при рассмотрении выражений как функций, отображающих одно множество в другое, требуется функциональная семантика. И хотя каждая из этих семантик применима в определенных обстоятельствах, все-таки ни одна из них не охватывает полностью смысл, обычно приписываемый арифметическим выражениям. [36]
Формальное определение синтаксиса языка программирования называется обычно грамматикой по аналогии с общепринятой терминологией естественных языков. Грамматика состоит из множества определений ( называемых правилами), которые описывают последовательности литер ( или лексем), образующих программы, допустимые на определяемом языке программирования. Формальная грамматика есть такая грамматика, которая использует строго определенную систему обозначений. Наиболее распространенная разновидность формальной грамматики - это НФБ-грамматика ( контекстно-свободная грамматика), которая находит широкое применение как при определении языка программирования, так и в исследованиях естественного языка. Одна из наиболее важных модификаций НФБ используется при определении Кобола; за неимением лучшего будем называть ее К. [37]
В состоянии режима подчеркивания: программа читает букву из входного файла. Если считанная буква не является управляющей литерой подчеркивания, то программа будет писать в выходной файл такую последовательность литер: подчеркивание, символ возврата на позицию, считанную букву. [38]
Тип nametable является примером такого массива. Тип name представляет собой массив элементов литерного типа, состоящих из 8 букв, предназначенных для задания имен как последовательности литер. [39]
Отсутствуют зарезервированные слова, поэтому идентификатор может по написанию полностью совпадать с основным символом ( например, ключевым словом); смысл последовательности литер определяется по контексту. [40]
Если файл INPUT не находится в состоянии конец файла, то вызов READ ( X) считывает либо очередную ( доступную) литеру и присваивает ее переменной X, если X имеет литерный тип, либо последовательность литер, представляющих целое или вещественное число в соответствии с синтаксисом языка ( последовательные числа в файле INPUT должны быть отделены пробелами или находиться на разных строках), и присваивает это число переменной X, если X имеет целый или вещественный тип. [41]
Те же приемы могут применяться для анализа и формирования произвольных кодов. На многих машинах типа М-20 существует возможность вводить и обрабатывать тексты. Текст представляет собой последовательность литер - букв, цифр, знаков операций, скобок и других печатных знаков. Каждая литера кодируется 7-разрядным двоичным числом. [42]
![]() |
Специальные символы языка Паскаль.| Зарезервированные слова языка Паскаль. [43] |
Паскаль представлен в табл. 2.1. Среди специальных символов есть два символа, не имеющих графического изображения. Все другие компоненты программы представляют собой последовательности литер и образуют числа, идентификаторы и строки. [44]
Значения целого типа цел и вещественного типа вещ изображаются соответственно целыми и вещественными числами. Значения литерного типа лит изображаются литерами, заключенными в кавычки. Значения логического типа лог изображаются константами истинности ложь и истина. Значения строковых типов изображаются строками - последовательностями литер, заключенными в кавычки; точно так же строками изображаются значения скалярных типов, определяемых пользователем. Отрезки изображаются по правилам тех типов, из которых они вырезаются. [45]