WikiDer > TXL (язык программирования)

TXL (programming language)
TXL
ПарадигмаСопоставление с образцом и Перезапись терминов
РазработаноЧарльз Халперн-Хаму
Джеймс Корди
РазработчикДжеймс Корди
Чарльз Халперн-Хаму
Ян Кармайкл
Эрик Промислоу
Интернет сайтwww.txl.ca

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

Смотрите также

Рекомендации

внешняя ссылка