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

ТХЛ
ПарадигмаСопоставление с образцом и переписывание терминов
РазработаноЧарльз Халперн-Хаму
Джеймс Корди
РазработчикДжеймс Корди
Чарльз Халперн-Хаму
Ян Кармайкл
Эрик Промислоу
Веб-сайтwww.txl.ca

TXL — язык программирования специального назначения, первоначально разработанный Чарльзом Халперном-Хаму и Джеймсом Корди в Университете Торонто в 1985 году. Аббревиатура «TXL» изначально расшифровывалась как «Turing eXtender Language» в честь изначального назначения языка — спецификации и быстрого прототипирования вариантов и расширений языка программирования Тьюринга , но в настоящее время не имеет какой-либо осмысленной интерпретации.

Современный TXL специально разработан для создания, манипулирования и быстрого прототипирования языковых описаний, инструментов и приложений с использованием преобразования источника. Это гибридный функциональный / правильный язык, использующий функциональное программирование первого порядка на более высоком уровне и переписывание терминов на более низком уровне. Формальная семантика и реализация TXL основаны на формальном переписывании терминов , но структуры терминов в значительной степени скрыты от пользователя из-за стиля спецификации шаблонов, похожего на примеры.

Каждая программа TXL состоит из двух компонентов: описание исходных структур, которые должны быть преобразованы, заданное как (возможно, неоднозначная) контекстно-свободная грамматика с использованием расширенной формы Бэкуса-Наура ; и набор правил преобразования дерева, заданный с использованием пар шаблон/замена, объединенных с использованием функционального программирования первого порядка. TXL разработан, чтобы позволить программисту явно контролировать интерпретацию, применение, порядок и откат как правил разбора, так и правил перезаписи, что позволяет выражать широкий спектр основанных на грамматике методов, таких как гибкий разбор.

Первый компонент анализирует входное выражение в дерево с помощью сопоставления с образцом . Второй компонент использует Term-rewriting способом, похожим на Yacc, для создания преобразованного вывода.

TXL чаще всего используется в задачах анализа и реинжиниринга программного обеспечения, таких как восстановление проекта , а также при быстром прототипировании новых языков программирования и диалектов.

Примеры

Сортировка пузырьком[1]

%Спецификация синтаксисаопределить программу [повторить номер]конец определения
%Правила преобразованияправило основное заменить $ [повторить число] N1 [число] N2 [число] Отдых [повторить число] где Н1 [> Н2] к N2 N1 Отдыхконец правила

Факториал[2]

%Спецификация синтаксисаопределить программу [число]конец определения
%Правила преобразованияфункция основная заменить [программу] п [число] к п [факт][факт0]конечная функция
функциональный факт заменить [число] н [число] построить nMinusOne [число] н [- 1] где н [> 1] построить фактМинусОдин [число] nMinusOne [факт] к н [* фактМинусОдин]конечная функция функция факт0 заменить [число] 0 к 1конечная функция

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

Ссылки

  1. ^ "Архивная копия". Архивировано из оригинала 2005-05-21 . Получено 2008-03-19 .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  2. ^ "Архивная копия". Архивировано из оригинала 2005-08-26 . Получено 2008-03-19 .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  • JR Cordy, CD Halpern и E. Promislow, 1991. TXL: Система быстрого прототипирования для диалектов языков программирования. Computer Languages ​​16,1 (январь 1991), 97-107.
  • JR Cordy, 2006. Язык преобразования исходного кода TXL. Science of Computer Programming 61,3 (август 2006), 190-210.
  • веб-сайт TXL
Взято с "https://en.wikipedia.org/w/index.php?title=TXL_(язык_программирования)&oldid=1100059055"