
 
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
  Фактически  взаимодействие  между  конечными  процессорами  сложнее:  они  могут 
действовать  совместно,  если  соответствующий  фрагмент  входной  цепочки  может  быть 
распознан несколькими семантически равнозначными конечными автоматами.