WikiDer > TXL (язык программирования)
Парадигма | Сопоставление с образцом и Перезапись терминов |
---|---|
Разработано | Чарльз Халперн-Хаму Джеймс Корди |
Разработчик | Джеймс Корди Чарльз Халперн-Хаму Ян Кармайкл Эрик Промислоу |
Интернет сайт | www |
TXL это специальный язык программирования первоначально разработанный Чарльз Халперн-Хаму и Джеймс Корди на Университет Торонто в 1985 году. Аббревиатура «TXL» первоначально расшифровывалась как «Turing eXtender Language» после первоначальной цели языка, спецификации и быстрое прототипирование вариантов и расширений Тьюринг язык программирования, но больше не имеет смысловой интерпретации.
Современный TXL специально разработан для создания, управления и быстрого прототипирования языковых описаний, инструментов и приложений с использованием преобразования исходного кода. Это гибрид функциональный / основанный на правилах язык, использующий функциональное программирование первого порядка на более высоком уровне и переписывание терминов на более низком уровне. В формальная семантика и реализация TXL основаны на формальных переписывание терминов, но термины структуры в значительной степени скрыты от пользователя из-за подобного примерам стиля спецификации шаблона.
Каждая программа TXL имеет два компонента: описание исходных структур, которые необходимо преобразовать, заданное как (возможно, неоднозначное) контекстно-свободная грамматика используя расширенная форма Бэкуса – Наура; и набор правил преобразования дерева, заданных с использованием пар шаблон / замена, объединенных с использованием функционального программирования первого порядка. TXL разработан, чтобы позволить программисту в явном виде управлять интерпретацией, применением, порядком и обратным отслеживанием как правил синтаксического анализа, так и перезаписи, что позволяет выражать широкий спектр основанных на грамматике методов, таких как гибкий синтаксический анализ.
Первый компонент анализирует входное выражение в дерево, используя сопоставление с образцом. Второй компонент использует Перезапись терминов аналогично Yacc для получения преобразованного вывода.
TXL чаще всего используется в задачах анализа и реинжиниринга программного обеспечения, таких как восстановление конструкции, а также в быстром прототипировании новых языки программирования и диалекты.
Примеры
BubbleSort [1]
% Спецификация синтаксиса определить программу [номер повтора] конец определить
% Правила преобразованияправило main replace $ [номер повтора] N1 [номер] N2 [номер] Rest [номер повтора] где N1 [> N2] на N2 N1 Правило повторного размещения
Факториал [2]
% Спецификация синтаксиса определить программу [номер] конец определить
% Правила преобразования function main replace [program] p [number] by p [fact] [fact0] end function
функция fact replace [число] n [число] построить nMinusOne [число] n [- 1] где n [> 1] построить factMinusOne [число] nMinusOne [факт] на n [* factMinusOne] конечная функция функция fact0 replace [число] 0 функцией 1end
Смотрите также
- Тьюринг (язык программирования)
- Рефал (язык программирования)
- Набор инструментов для реинжиниринга программного обеспечения DMS
- Трансформация программы
Рекомендации
- Дж. Р. Корди, К. Д. Халперн и Э. Промислоу, 1991. TXL: система быстрого прототипирования диалектов языков программирования. Computer Languages 16,1 (январь 1991 г.), 97-107.
- Дж. Р. Корди, 2006. Язык преобразования источника TXL. Наука компьютерного программирования 61,3 (август 2006 г.), 190-210.