Cтраница 3
В этом случае при появлении во входной строке символа: нужно вызвать подпрограмму анализа и обработки. [31]
Таким образом, прежде чем переписать из входной строки в ОПЗ элементы исходной программы, которые имеют нулевой приоритет, необходимо очистить стек операций. [32]
Первой задачей алгоритма лексического анализа является разбор входной строки символов на лексические единицы. [33]
Если в состоянии ( Знак) следующий элемент входной строки не является цифрой или же в состоянии ( Целое) не является ни цифрой, ни десятичной точкой, автомат сигнализирует о том, что строка не является десятичным числом. Когда после десятичной точки обнаруживается цифра, автомат переключается из состояния ( Смешанное число) в ( Десятичное число) и остается в этом состоянии до тех пор, пока будут распознаваться цифры, или до тех пор, пока не исчерпается входная строка, вГпротивном случае идентификация десятичного числа заканчивается неудачей. Если символы не разделяются с помощью специальных элементов ( например, с помощью пробелов, как в КОБОЛе), первый не являющийся цифрой элемент, обнаруженный в состоянии ( Десятичное число), заканчивает анализ этого символа, и лексический анализатор продолжает элемент за элементом анализировать следующий символ. [34]
![]() |
Разбор сверху вниз недопустимого десятичного числа - -. 123. [35] |
Шаги 17 и 18 необходимы для распознавания конца входной строки, который обозначается в таблице отсутствием вводимой литеры. Входная строка исчерпана, все подцели достигнуты, и, таким образом, грамматический разбор символа - 123.45 завершен. [36]
На рис. 5.15 и 5.16 показано состояние стека и входной строки до и после редукции соответственно. [37]
Основная последовательность определяется как максимально длинная подстрока начальной части входной строки, начинающаяся с первого значащего символа и соответствующая ожидаемой форме. Основная последовательность не содержит символов, если строка ввода пустая или целиком состоит из символов разделителей, или если первый значащий символ не является знаком, цифрой или допустимым символом. [38]
Процесс MainLoop переводится в состояние выполнения, осуществляется копирование новой входной строки и процесс Lineln также устанавливается в состояние выполнения. [39]
Заключение канона сравнивается, элемент за элементом, со входной строкой. [40]
Стековый метод получения ОПЗ рассматривает арифметическое или логическое выражение как входную строку символов и формирует выходную строку, представляющую собой ОПЗ этого выражения. Входная строка просматривается слева направо. Знаки операций обрабатываются согласно их приоритетам, назначаемым в соответствии с табл. 4.1. Предполагается, что операции из одного столбца, таблицы выполняются слева направо. [41]
Объединение в каждой строке табл. 5.9 содержимого стека и необработанной части входной строки дает элемент разбора. [42]
Этот алгоритм также использует магазин: как только операнды извлечены из входной строки, они сразу же передаются в выходную строку, а магазин используется как вспомогательная память только для скобок и операций. Каждой операции и открывающей скобке соответствует числовой приоритет. Эти приоритеты определяют, будет ли операция помещена в магазин или в выходную строку. Значение приоритетов отражает порядок выполнения действий, точно описанный в порождающих правилах разд. Значения приоритетов даются следующей таблицей. [43]
Получает по одному слову за один раз для выходной строки из текущей входной строки; удаляет внутренние пробелы. [44]
![]() |
Стек и входная строка до редукции. [45] |