
 
80 
Синтаксический подход поддерживает новую своеобразную парадигму прог-
раммирования. В соответствие с ней, когда вы пишете правило грамматики, то 
определяете  некоторую  программную  конструкцию.  При  этом  считается,  что 
любая  конструкция  продолжает  вычислительный  процесс,  уже  выполненный 
составляющими ее подконструкциями,  и данной конструкции  требуется  лишь 
надлежащим  образом  использовать  результаты  ее  подконструкций  для  выра-
ботки своего собственного результата. Поэтому при написании правила грам-
матики, описывающего некоторую конструкцию, достаточно определить, какие 
действия над результатами ее подконструкций должна совершить данная кон-
струкция.  Благодаря  такой концептуальной модульности, воплощаемой в пра-
вилах  грамматики, при  которой  проектирование  процесса  обработки  данных 
естественно  структурируется  иерархическим  образом,  разработка  программы 
значительно облегчается. 
Синтаксический подход открывает возможность диагностировать  ошибоч-
ные ситуации
55
, возникающие во время вычислений, в терминах той предмет-
ной  области,  к  которой  относится  задача.  Для  этого  достаточно  в качестве 
нетерминалов  или  вспомогательных  понятий  грамматики,  а  также  резольвер-
ных символов, использовать термины соответствующей предметной области. 
2.3.  ИНФОРМАЦИОННОЕ ВЗАИМОДЕЙСТВИЕ 
       МЕЖДУ КОНСТРУКЦИЯМИ 
При использовании грамматик для описания управляющей  структуры про-
грамм полезно  пронаблюдать аналогию  между  нетерминалами  грамматики  и 
замкнутыми  подпрограммами,  а также между вспомогательными понятиями и 
открытыми подпрограммами в обычном программировании.  
Для  каждого  нетерминала  существует  определяющее  его  правило  грамма-
тики. Это правило (совместно с другими) порождает множество всевозможных 
конкретных реализаций соответствующей программной конструкции. В общем 
случае программная конструкция может состоять из других конструкций, назы-
ваемых  ее  подконструкциями,  которые  в  правиле,  определяющем  эту  конст-
рукцию, представляются как нетерминалы или вспомогательные понятия пра-
вой части данного  правила.  При этом  возможны,  и зачастую  желательны, ре-
курсивные определения.    
Грамматика определяет только возможные потоки управления в программе. 
Но операторы, входящие  в этот поток  и  по большей части представленные (в 
конечном  итоге)  вызовами  методов  объектов,  воплощают  какие-то  действия 
над  данными,  которые  представляются,  главным  образом,  полями  объектов. 
Таким  образом,  с  каждым  нетерминалом (программной  конструкцией)  ассо-
циируется  некоторый тип  объекта. Его  поля  представляют локальные  данные 
конструкции,  а  методы  реализуют  возможные  манипуляции  над  этими  даны-
ми.  
                                                           
55
 Обнаруживаемые автоматически ошибки в этом случае все являются контекстными.