TXL



Website: www.txl.ca

Proiectat de: Charles Halpern-Hamu James Cordy


TXL este un limbaj de programare cu scop special, proiectat inițial de Charles Halpern-Hamu și James Cordy la Universitatea din Toronto în 1985.

Acronimul „TXL” a fost inițial pentru „Turing Extender Language” după scopul inițial al limbii, specificația și prototiparea rapidă de variante și extensii ale limbajului de programare Turing, dar nu mai are nicio interpretare semnificativă.

Modern TXL este conceput special pentru crearea, manipularea și prototiparea rapidă a descrierilor, instrumentelor și aplicațiilor bazate pe limbaj folosind transformarea sursei.

Este un limbaj funcțional / bazat pe reguli hibrid folosind programarea funcțională de prim ordin la nivel superior și rescrierea termenului la nivel inferior.

Semantica formală și implementarea TXL se bazează pe rescrierea formală a termenilor, dar termenul de structuri sunt ascunse în mare măsură de utilizator datorită stilului de specificație al modelului.

Fiecare program TXL are două componente: o descriere a structurilor sursă care trebuie transformate, specificate ca o gramatică fără context (posibil ambiguu), folosind o formă extinsă Backus-Naur; și un set de reguli de transformare a arborelui, specificate folosind perechi de model / înlocuire combinate folosind programarea funcțională de primă ordine.

TXL este proiectat pentru a permite controlul explicit al programatorului asupra interpretării, aplicării, ordinii și backtracking-ului atât a regulilor de analiză, cât și a rescrierii, permițând exprimarea unei game largi de tehnici bazate pe gramatică, cum ar fi analizarea agilă.

Prima componentă analizează expresia de intrare într-un arbore folosind potrivirea modelului.

A doua componentă folosește recomandarea pe termen într-o manieră similară cu YACC pentru a produce ieșirea transformată.

TXL este cel mai frecvent utilizat în sarcinile de analiză și reinginerie software, cum ar fi recuperarea proiectării și în prototiparea rapidă a noilor limbaje de programare și dialecte.