TXL (язык программирования)
Парадигма | Сопоставление с образцом и переписывание терминов |
---|---|
Разработано | Чарльз Халперн-Хэм Джеймс Корди |
Разработчик | Джеймс Корди Чарльз Халперн-Хэм Ян Кармайкл Эрик Промислоу |
Веб-сайт | www |
TXL специального назначения — это язык программирования , первоначально разработанный Чарльзом Халперном-Хаму и Джеймсом Корди в Университете Торонто в 1985 году. Аббревиатура «TXL» первоначально обозначала «Turing eXtender Language» в честь первоначального назначения языка, его спецификации и быстрого прототипирования. вариантов и расширений языка программирования Тьюринга , но больше не имеет какой-либо значимой интерпретации.
Modern TXL специально разработан для создания, управления и быстрого прототипирования языковых описаний, инструментов и приложений с использованием преобразования исходного кода. Это гибридный функциональный / основанный на правилах язык, использующий функциональное программирование первого порядка на более высоком уровне и переписывание терминов на более низком уровне. Формальная семантика и реализация TXL основаны на формальном переписывании терминов , но структуры терминов в значительной степени скрыты от пользователя из-за примерного стиля описания шаблонов.
Каждая программа TXL имеет два компонента: описание исходных структур, подлежащих преобразованию, заданное как (возможно неоднозначная) контекстно-свободная грамматика с использованием расширенной формы Бэкуса-Наура ; и набор правил преобразования дерева, заданных с использованием пар шаблон/замена, объединенных с использованием функционального программирования первого порядка. TXL разработан, чтобы предоставить программисту возможность явного контроля над интерпретацией, применением, порядком и обратным отслеживанием правил синтаксического анализа и перезаписи, позволяя выражать широкий спектр методов, основанных на грамматике, таких как гибкий синтаксический анализ.
Первый компонент анализирует входное выражение в дерево, используя сопоставление с образцом . Второй компонент использует переписывание терминов аналогично Yacc для получения преобразованного вывода.
TXL чаще всего используется в задачах анализа программного обеспечения и реинжиниринга, таких как восстановление проекта , а также при быстром прототипировании новых программирования языков и диалектов .
Примеры
[ редактировать ]Пузырьковая сортировка [1]
[ редактировать ]%Syntax specification define program [repeat number] end define
%Transformation rules rule main replace $ [repeat number] N1 [number] N2 [number] Rest [repeat number] where N1 [> N2] by N2 N1 Rest end rule
Факториал [2]
[ редактировать ]%Syntax specification define program [number] end define
%Transformation rules function main replace [program] p [number] by p [fact][fact0] end function
function fact replace [number] n [number] construct nMinusOne [number] n [- 1] where n [> 1] construct factMinusOne [number] nMinusOne [fact] by n [* factMinusOne] end function function fact0 replace [number] 0 by 1 end function
См. также
[ редактировать ]- Тьюринг (язык программирования)
- Рефал (язык программирования)
- Набор инструментов для реинжиниринга программного обеспечения DMS
- Трансформация программы
Ссылки
[ редактировать ]- ^ «Архивная копия» . Архивировано из оригинала 21 мая 2005 г. Проверено 19 марта 2008 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Архивная копия» . Архивировано из оригинала 26 августа 2005 г. Проверено 19 марта 2008 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка )
- Дж. Р. Корди, К. Д. Халперн и Э. Промислоу, 1991. TXL: система быстрого прототипирования для языковых диалектов программирования. Компьютерные языки 16,1 (январь 1991 г.), 97–107.
- Дж. Р. Корди, 2006. Язык преобразования исходного кода TXL. Наука компьютерного программирования 61,3 (август 2006 г.), 190-210.