(C) 2003 г. Штучкин А.А., Шалыто А.А.
Санкт-Петербургский государственный институт точной механики и оптики
(технический университет)
Документ в формате pdf (~512 кб)
Аннотация
При использовании теории компиляторов [1] возникает ряд проблем, которые могут быть устранены при совместном применении указанной теории и SWITCH-технологии [2, 3], которая базируется на применении конечных автоматов.
Перечислим недостатки, которые позволяет устранить указанная технология.
В работе [1], как и в других работах по теории компиляторов [4], излагаются основы их проектирования, но переход от проекта компилятора к его программной реализации недостаточно формализован.
Еще один недостаток известного подхода состоит в том, что используемые алгоритмы описываются традиционным путем с помощью псевдоязыка, в то время как это может быть сделано с помощью автоматов.
Изложенный подход позволяет устранить указанные недостатки:
-
совместное применение теории построения компиляторов и SWITCH-технологии позволяет объединить математическую строгость проектирования этого класса программ с формальностью их реализации;
-
на всех этапах создания компилятора используются конечные автоматы в форме графов переходов;
-
разработка компилятора полностью документирована;
-
получаемый исходный код весьма прост и понятен, так как структура каждого из его основных модулей изоморфна структуре схемы связей автомата и его графа переходов;
-
если автоматическое построение лексических и синтаксических анализаторов целесообразно выполнять с помощью генераторов Lex и Yacc соответственно (или их аналогов) [1], то ручное проектирование – на основе предлагаемого подхода.
Подход апробирован на примере программной реализации калькулятора, описание функциональности которого приведено в работе [5].
Литература
1. Ахо А., Сети Р., Ульман Д. Компиляторы. Принципы, технологии, инструменты. М.: Вильямс, 2001.
2. Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998.
3. Шалыто А.А., Туккель Н.И. От тьюрингова программирования к автоматному. // Мир ПК, 2002, №2.
4. Легалов А.И. Трансляторы. Методы разработки.
5. Страуструп Б. Язык программирования C++. М.: Бином, СПб.: Невский диалект, 2001.
|