61
1.9. РЕГУЛЯРНЫЕ СПЛАЙНЫ
Методику спецификации и реализации трансляций, которая описана в
предыдущих разделах этой главы, уместно назвать термином регулярные
сплайны, поскольку она фактически основана на идее аппроксимации КС-языка
регулярными множествами, аналогично тому, как в методах приближенных
вычислений функции на разных участках аппроксимируются различными по-
линомами. Это находит свое отражение и в том, что в качестве средства зада-
ния языков используются RBNF-грамматики, правила которых определяют не-
терминалы регулярными выражениями, и в том, что используемый языковой
процессор на регулярных участках входной цепочки ведет себя как конечный
автомат, и использует магазин лишь при переходе к другому конечному авто-
мату и при возврате в предыдущий конечный автомат
50
.
Действительно, если отвлечься от семантик и резольверов, то регулярные
выражения в правых частях правил будут содержать только терминалы и не-
терминалы. При этом, если, например, правило имеет вид: A : ... xBy ... . , где A
и B — нетерминалы, а x и y — терминальные цепочки, то терминальное поро-
ждение фрагмента xBy будет иметь вид xzy, где z есть терминальное порожде-
ние B. Таким образом, x и y − это регулярные фрагменты, порождаемые собст-
венно правилом для A, а z − фрагмент, порождаемый правилом для B, который
тоже может состоять из регулярных фрагментов, порожденных собственно
правилом для B, и фрагментов, порожденных другими нетерминалами. С дру-
гой стороны, нетерминалу A соответствует конечный автомат, который прини-
мает (или порождает) фрагменты x и y входной цепочки xzy, а нетерминалу B
соответствует конечный автомат, который принимает (или порождает) фраг-
менты z,порождаемые терминальными членами правой части правила для B.
Соответственно, автомат A распознает регулярный фрагмент x, действуя как
конечный автомат, затем происходит переключение на автомат B (управляю-
щий процессор записывает символ в магазин, запоминая "точку возврата", и
"передает управление" автомату B), который распознает какие-то регулярные
фрагменты z, и, наконец, автомат A (после того как управляющий процессор
извлекает символ из магазина, "возвращая управление" автомату A)
продолжает распознавать регулярный фрагмент y
51
.
Таким образом, уместна следующая метафора: управляющий процессор ор-
ганизует взаимодействие между множеством конечных автоматов, каждый из
которых распознает свой регулярный фрагмент входа.
Использованию техники регулярных сплайнов в контексте объектно-
синтаксического программирования посвящена следующая глава.
50
Разумеется, что существуют некоторые ограничения на “гладкость” сопряжения
различных конечных процессоров, реализующих данный сплайн. Они рассматриваются в
разделе 5.1.
51
Фактически взаимодействие между конечными процессорами сложнее: они могут
действовать совместно, если соответствующий фрагмент входной цепочки может быть
распознан несколькими семантически равнозначными конечными автоматами.