Инструкция - сопоставление - Большая Энциклопедия Нефти и Газа, статья, страница 1
Аксиома Коула: суммарный интеллект планеты - величина постоянная, в то время как население планеты растет. Законы Мерфи (еще...)

Инструкция - сопоставление

Cтраница 1


Инструкция сопоставления с образцом имеет вид VA, где V - переменная-субъект и А - образец. Условная передача управления изображается инструкцией VA: 1 ( MJ) S ( М2), где Ml и М2 - мотки перехода в случае неудачи и удачи сопоставления соответственно. Инструкция замещения имеет вид VA - - E, где К - строковое выражение, значение к-рого при успешном сопоставлении замещает в V выделенную подстроку.  [1]

Образец ABORT полезен при построении условных инструкций сопоставления.  [2]

Отдельные инструкции имеют общую синтаксическую базу - инструкцию сопоставления с образцом и подстановки.  [3]

В первом случае каждый раз, когда выполняется инструкция сопоставления с одним и тем же образцом, создаются идентичные структуры данных для образца, которые затем сразу же перестают быть нужными. Это ведет к значи-тельному расходу памяти и времени выполнения.  [4]

Сопоставление с образцом может присутствовать в инструкциях двух типов: инструкции сопоставления с образцом и инструкции замещения.  [5]

Начальным значением переменной ABORT является примитивный образец, вызывающий немедленное завершение неудачей инструкции сопоставления.  [6]

Появление одного-едпнственного пробела внутри инструкции Снобола 4 может превратить простой вызов подпрограммы в инструкцию сопоставления с образцом, что приведет при выполнении программы к целому каскаду ошибок в других ее частях; потребуется немало труда, чтобы выявить породившую их синтаксическую ошибку. Несоответствие между числом открывающих и числом закрывающих скобок в Лиспе приводит к аналогичным проблемам. Мы вправе требовать, чтобы удобство чтения программы учитывало и то обстоятельство, что на стадии отладки программа, содержащая серьезные ошибки, не должна выглядеть правильной.  [7]

8 Пример программы на Сноболе 4. [8]

Поскольку эта инструкция имеет метку REV, она является первой инструкцией тела REVERSE. При вызове REVERSE формальному параметру X присваивается значение фактического параметра, локальной переменной Y и переменной REVERSE ( используемой для возвращаемого значения функции) присваиваются в качестве начальных значений пустые цепочки и происходит передача управления на рассматриваемую инструкцию. Эта инструкция сопоставления с образцом используется для удаления начальных пробелов из цепочки-аргумента X. Образец определяется как POS ( O) SPAN (), что можно прочесть следующим образом: начиная с левого конца обрабатываемой цепочки ( с позиции 0), выделить в ней максимальную по длине последовательность пробелов. Имя обрабатываемой цепочки, X, помещается перед образцом.  [9]

Образец - это объект данных, который может быть очень большим, если образец сложный. Невычисляемые выражения позволяют избежать конструирования образцов в инструкциях сопоставления, даже если меняются компоненты образца. Невычисляемое выражение эквивалентно указателю на другой образец, который используется во время сопоставления, когда встречается невычисляемое выражение.  [10]

Если вычисление завершилось успешно, полученное значение становится частью образца и процесс сопоставления продолжается. Если вычисление завершилось неудачей, сканер возвращается назад в поисках альтернативы. Неудача при вычислении выражения не обязательно приводит к неудачному завершению инструкции сопоставления в целом.  [11]

В простейшем случае выражение, определяющее образец, помещается непосредственно в инструкцию сопоставления, в которой должен использоваться этот образец.  [12]

При сопоставлении с образцом анализируемая цепочка STR проходится слева направо. Первоначально LEFT и CURSOR указывают на самую левую литеру в STR, a NEEDLE - на первую альтернативу в PAT. NEEDLE продвигается по образцу, который имеет форму дерева альтернатив. Одновременно CURSOR передвигается по анализируемой цепочке вправо. Если найдено полное соответствие, то операция сопоставления с образцом заканчивается успешно, а окончательные положения LEFT и CURSOR выделяют в STR найденную подцепочку. Если инструкция, вызвавшая сопоставление, была инструкцией сопоставления с образцом и подстановки, то найденная подцепочка заменяется на указанную подставляемую цепочку; в противном случае анализируемая цепочка не меняется.  [13]



Страницы:      1