Cтраница 2
Следующая программа похожа на предыдущую, только она ищет общие литеры, а не слова. Литеры извлекаются из первой цепочки с помощью образца ЛИТ. В образце НАЙТИЛ невычисляемое выражение Л служит параметром функции BREAK-При использовании НАЙТИЛ прерывающей литерой служит текущее значение Л, полученное во время сопоставления с образцом ЛИТ. [16]
В режиме быстрого просмотра сканер применяет различные эвристики, чтобы не анализировать альтернативы, заведомо не ведущие к успеху. Следовательно, сканер работает в предположении, что программиста не интересует процесс сопоставления, а важен лишь результат. Как правило, образцы, в которых важен сам процесс сопоставления содержат немедленное присваивание значения или невычисляемые выражения. [17]
Большинству пользователей Снобола-4 не очень интересно, как на самом деле происходит процесс сопоставления. Главное для них - успех или неудача сопоставления. Однако, понимая процедуру сканирования, программист может составлять более эффективные образцы и использовать такие возможности, как немедленное присваивание значения или невычисляемые выражения, которые могут изменять образец в процессе сопоставления. Поэтому еще одной целью данной главы является описание работы сканера. [18]
Образец - это объект данных, который может быть очень большим, если образец сложный. Невычисляемые выражения позволяют избежать конструирования образцов в инструкциях сопоставления, даже если меняются компоненты образца. Невычисляемое выражение эквивалентно указателю на другой образец, который используется во время сопоставления, когда встречается невычисляемое выражение. [19]
С другой стороны, режим полного просмотра допускает попытки сопоставления, какими бы бессмысленными они ни были. По этой причине в режиме полного просмотра сопоставление может длиться гораздо дольше, чем в режиме быстрого просмотра. Режимом полного просмотра следует пользоваться только тогда, когда нужно учитывать динамические эффекты невычисляемых выражений и немедленного присваивания значений. Если подобный режим требуется лишь для нескольких инструкций, разумно изменять режим для них, а не выполнять всю программу в режиме полного просмотра. [20]
Образец - это объект данных, который может быть очень большим, если образец сложный. Невычисляемые выражения позволяют избежать конструирования образцов в инструкциях сопоставления, даже если меняются компоненты образца. Невычисляемое выражение эквивалентно указателю на другой образец, который используется во время сопоставления, когда встречается невычисляемое выражение. [21]