SoftCraft
разноликое программирование

Top.Mail.Ru

Совместное использование теории построения компиляторов и SWITCH-технологии (на примере построения калькулятора)

(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.