Карпов - Основы построения трансляторов (2005), страница 3
Описание файла
DJVU-файл из архива "Карпов - Основы построения трансляторов (2005)", который расположен в категории "". Всё это находится в предмете "основы построения трансляторов" из 5 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "основы построения трансляторов" в общих файлах.
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 3 - страница
Рис. 1.1. Транслятор как преобразователь информации 1Л.1. Компиляторы, интерпретаторы, п реп роцессоры При трансляции языков программирования от транслятора может требоваться выполнение разных задач. Если задачей является трансляция в язык низкого уровня, например, машинный язык или язык ассемблера, то такой транслятор называется ко1гщиягггоро;и. Другая возможная задача при трансляции программы на алгоритмическом языке — непосредственное выполнение транслятором операторов исходного кода. В этом случае транслятор называется гигггерггретитором. Интерпретация используется зачастую для так называемых командных языков, каждый оператор которых — это вызов некоторой программы, например, редактора входного текста.
Отличие интерпретатора от компилятора видно на следующем примере. При обработке оператора присваивания х:= а+о~с компилятор построит и выдаст последовательность команд объектного языка, осуществляющих (при запуске оггранслированной программы) вычисление значения арифметического выра>кения и засылку этого значения в область памяти, отведенную для х. Эти команды мо>кно затем многократно использовать при различных исходных данных. Интерпретатор же непосредственно выполнит действия, предписываемые этим оператором присваивания, т. е. выполнит умно>кение и сложение текущих значений правой части и перешлет полученное значение в область памяти для х без генерации кода, выполняющего эти операции.
Программа на интерпретируемом языке читается интерпретирующей программой„и исходный текст переводится в непосредственно выполняемые вычислительные операции и вызовы системных процедур. Исходный текст должен быть повторно интерпретирован интерпретатором всякий раз, когда необходимо вьпюлнение программы. Слово комггиляция означает сборку некоторого целого из готовых частей. В науке "компилятором" часго пренебрежительно называют ученого, постро- Глава 1 ному на ограниченном подмножестве естественного языка, строить анимационную картинку этой ситуации или формировать осмысленный ответ на входной вопрос с учетом состояния диалога. Такие программы-трансляторы используются, например, при описании искусственной жизни (подобные системы разрабатывают фирмы типа "Аг66с~а1 1.)Ге").
Некоторые технические приемы, примененные при построении компиляторов, отличаются от таковых, использованных при построении интерпретаторов (например, техника распределения памяти и связывания модулей объектной программы используется в интерпретаторах существенно меньше). Однако независимо от того, что является результатом работы транслятора— объектный код некоторого процессора или картинка, соответствующая описанию ситуации, для получения результата трансляции сггачала пеобходимо кикгт-то ооразом вычлеггигггь смысл, заклгочеггпьй во входшт сироке.
Такое вычленение смысла из входной информации во всех типах трансляторов осуществляется по одной и той же схеме, на основе результатов одной и той же теории независимо от того, является ли транслятор компилятором, интерпретатором или языковым процессором любого другого назначения. Далее мы рассмотрим эту схему. 1.2. Трансляция, основанная на структуре текста По отношению к языку часто употребляются термины сипгггаксис и се.иагггггика. Синтаксисом языка называется совокупность правил построения текста— предложений и отдельных их составных частей, т. е. правил построения конструкций языка.
Синтаксис языка определяет, как правильно строить предложения и их части. Семантикой языка называется совокупность правил игиырггрегггаиии предложений и конструкций языка, Семантика определяет смысл предложений, их зггачсггие. Транслятор можно считать преобразователем информации, формирующим выход в соответствии с входным текстом на исходном языке. Например, компилятор должен сформировать объектный код, эквивалентный исходной программе. Но как задать такое преобразование вход ~ выход? Число возможных предложений входного языка на входе транслятора бесконечно. Это означает„что простым соответствием (например, таблицей) преобразование вход ==~ выход здесь невозможно задать.
Нужна некоторая ведущая идея, позволяющая вычислить значение любого текста входного языка (из бесконечного множества возможных текстов) и представить это значение последовательностью символов на выходном языке либо последовательностью действий (в интерпретаторе). Одной из таких идей и является идея синтаксически- Синтаксически-ориентированная трансляция ориентированной трансляции. Именно эта идея лежит в основе разработки подавляющего большинства существующих трансляторов. Метод синтаксически-ориентированной трансляции ведет свое начало от работ выдающегося американского лингвиста Ноама Хомского, профессора Массачусетского технологического института в С1ЦЛ. В этих работах он исследовал механизмы понимания человеком смысла фраз естественного языка [Х621, ~Хб2а~.
Очевидно, что человек понимает большие куски 1екста путем комбинирования и преобразования смыслов меньших частей текста. Главной целью лингвистической теории является объяснение.иетапювио» (правил„алгоритмов) понимания больших текстов как комбинации (компиляции„обьединения) смыслов их составных частей.
Одна из основных идей Хомского состояла в том„что главную роль в процессе понимания смысла предло>кения естественного языка человеком играет этап построения спч>уищуи этого предложения, и именно эта построенная структура используется человеком далее на подсознательном уровне для вычислепия смысла, заключенного в ~ предло>кении. Хомский пришел к этому заключению на основе своего предполо>кения о том, как человек понимает двусмысленные предло>кения. Рассмотрим пример. В литературе часто обыгрывается двусмысленность фразы "Казни.п нельзя помиловать". Однозначность смысла этого предложения достигается здесь введением запятой, которая явно выделяет слова в группы — две части сложносачиненного предло>кения.
Первый вариант "Казнигь, нельзя помиловать" выделяет группу "нельзя помиловать" как связанную в одно предло>кение, в то время как слово "казнить" представляет собой другое предложение. Второй вариант "Казнить нельзя, помиловать" выделяет группу "казнить нельзя" как самостоятельное предложение. Смысл фразы изменяется на противоположный при изменении группировки слов„т. е., иными словами, с.икал ~й~~~~~~~ся ~~рй ~~~~~н~н~~~~ с~~Ч>ук~лурй ~~ред.~о>к~н~Фя (рис. 1.2).
Запятая является здесь средством группирования слов. Таким образом, смысл сложного объекта (предложения языка) является функцией не только набора и последовательности составляющих его элементов (символов или слов предложения), но также и структуры этого сложного объекта, т.
е. того, как эти элементы группируются в конструкции. Рис. 1.2. Различная группировка слов с помощью запятой, меняющая смысл фразы Более ясно связь мышления со структурой текста проявляется при попытках понять существенно двусмысленные предложения — такие. которые сами по себе имеют более одного смысла, и в некоторых случаях даже из контекста мы не можем трактовать их смысл однозначно. Возьмем, например, фразу "Порядок сменит хаос". Ее можно понимать двояко. Первая интерпретация этого предложения состоит в том, что порядок придет на смену хаосу (и, следовательно, все будет хорошо!).
Другая интерпретация — это известие о скором наступлении хаоса, который должен сменить существующий порядок (и, следовательно, все будет плохо~). Обе интерпретации этого предложения допустимы в русском языке, и наше понимание при его анализе как бы переключается с одного смысла на другой подобно тому, как оно переыгочается при анализе зрительных двусмысленных образов рисунков Мориса Эшера. На рис.
1.3 изображена фигура из ~ЛН74~, имеющая несколько интерпретаций. Рис. 1.3. Фигура с нескопькими интерпретациями Две интерпретации предложения "Порядок сменит хаос" противоположны по смыслу, но обе они возможны без всяких дополнительных знаков препинания или каких-либо других средств выделения слов или словарных групп и даже в отсутствии двусмысленности каждого составляющего предложение слова! Они отличаются именно тем, что группировка слов — и трактовка роли групп слов! — в предложении может быть разной. А именно, если группируются "сменит хаос" — то в будущем будет порядок, потому что слово лорядок является здесь действующим объектом, а если группируются "порядок сменит", то в будущем будет хаос, потому что здесь уже хаос является подлежащим! Ноам Хомский построил формальную модель, позволяющую представить такие двусмысленности. Эта модель и является основой всех методов трансляции в информатике.