
 
31
и вместе с ней предложение входного языка определяются с учетом контекстных 
условий,  задаваемых  резольверами.  При  этом  предполагается,  что  резольверы 
вычисляются синхронно с семантическими преобразованиями с учетом порядка 
вхождения резольверных и семантических символов в управ-ляющую цепочку. 
Синхронизация  означает, что  сначала  вычисляются  предика-ты,  ассоциирован-
ные с  резольверными  символами, предшествующими терми-налу  a
1
,
 
в порядке 
следования  резольверных  символов.  Если  все  они  выполняяются,  то  испол-
няются  преобразования  операционной  среды,  ассоциированные  с  семантиче-
скими  символами,  предшествующими  терминалу  a
1
 (также  в  тек-стуальном 
порядке). Затем аналогичным порядком выполняются резольверы и семантики, 
предшествующие  терминалу  a
2
,  и  т.д.  Процесс  заканчивается,  когда  успешно 
завершается вычисление конъюнкции предикатов, следующих за символом a
m
, и 
исполнение соответствующих семантик. 
Синтаксически правильными считаются лишь те входные цепочки, которые 
входят  в  состав  управляющих,  на  которых  выполняются  все  предикаты,  ассо-
циированные с их резольверными символами. "Смысл" входного предложения x 
представляется семантической цепочкой σ
1
σ
2
...σ
n
.  
Если  некоторому  входному  предложению  соответствует  несколько  управ-
ляющих  цепочек  с  разными  семантическими  составляющими,  то  такое  пред-
ложение  называется  семантически  неоднозначным.  В SYNTAX-технологии 
семантическая  неоднозначность  не  допускается
28
.  Однако  использование  ре-
зольверов во многих случаях помогает избегать этой опасности.  
Приведем  два  примера  трансляционных  грамматик,  одна  из  которых  трак-
туется  как анализирующая,  а  другая — как  порождающая.  Первый  пример ил-
люстрирует  спецификацию  интерпретатора  арифметических  выражений (каль-
кулятора),  а  второй — вычисление  функции  факториал.  Эти  примеры  обсуж-
даются далее на протяжении нескольких разделов в связи с рассмотрением раз-
личных  аспектов  использования SYNTAX-технологии.  Как  и  во  всех  других 
примерах в этой книге, управляющие грамматики записываются на языке TSL
29
, а 
операционная среда представлена на языке программирования Borland Pascal 7.0. 
1.3. АНАЛИЗИРУЮЩАЯ ТРАНСЛЯЦИОННАЯ  
  ГРАММАТИКА КАЛЬКУЛЯТОРА  
Синтаксически  управляемый  калькулятор (спецификация  которого  дается  в 
этом  разделе)  вычисляет  арифметические  выражения,  операндами  которых  яв-
ляются  целые  и  вещественные  числа,  представленные  в  формате  языка  Пас-
каль. Допустимы арифметические операции: сложение, вычитание, умножение, 
деление,  а также  унарные  плюс  и  минус.  Унарные  операции  можно  использо-
вать подряд в любом количестве и последовательности. Круглые скобки также 
употребимы. 
Построение спецификации калькулятора обсуждается в гл. 5. 
                                                           
28
 Фактически семантическая неоднозначность контролируется при построении управляющих 
таблиц процессоров. 
29
 Описание языка TSL дано в гл. 8.