Transformacja programu
Transformacja programu to dowolna operacja, która wykonuje program komputerowy i generuje inny program. W wielu przypadkach wymaga się, aby przekształcony program był semantycznie równoważny z oryginałem, w stosunku do określonej semantyki formalnej , aw mniejszej liczbie przypadków transformacje skutkują programami, które semantycznie różnią się od oryginału w przewidywalny sposób.
Chociaż transformacje można wykonać ręcznie, często bardziej praktyczne jest użycie systemu transformacji programu , który stosuje specyfikacje wymaganych transformacji. Transformacje programu mogą być określane jako zautomatyzowane procedury, które modyfikują struktury danych kompilatora (np. abstrakcyjne drzewa składniowe ) reprezentujące tekst programu lub mogą być określane wygodniej za pomocą wzorców lub szablonów reprezentujących sparametryzowane fragmenty kodu źródłowego.
Praktycznym wymogiem dla systemów transformacji kodu źródłowego jest zdolność do efektywnego przetwarzania programów napisanych w języku programowania . Zwykle wymaga to integracji pełnego interfejsu dla interesującego nas języka programowania, w tym parsowania kodu źródłowego , budowania wewnętrznych reprezentacji programu struktur kodu, znaczenia symboli programu, przydatnych analiz statycznych i regeneracji prawidłowego kodu źródłowego z przekształconych reprezentacji programu . Problem budowy i integracji odpowiednich front-endów dla języków konwencjonalnych ( Java , C++ , PHP itp.) mogą być równie trudne jak zbudowanie samego systemu transformacji programu ze względu na złożoność takich języków. Aby system transformacji był szeroko użyteczny, musi być w stanie obsłużyć wiele docelowych języków programowania i musi zapewniać pewne środki do określania takich interfejsów.
Uogólnieniem równoważności semantycznej jest pojęcie udoskonalenia programu : jeden program jest udoskonaleniem innego, jeśli kończy się na wszystkich stanach początkowych, dla których kończy się program oryginalny, i dla każdego takiego stanu jest gwarantowane zakończenie w możliwym stanie końcowym dla oryginalny program. Innymi słowy, udoskonalenie programu jest bardziej zdefiniowane i bardziej deterministyczne niż program oryginalny. Jeśli dwa programy są wzajemnymi udoskonaleniami, to programy te są równoważne. [ wymagane wyjaśnienie ]
Zobacz też
- Lista systemów transformacji programu
- Metaprogramowanie
- Synteza programu
- Kompilator ze źródła do źródła
- Generowanie kodu źródłowego
- Język transformacji
- Gramatyka transformacyjna
- Rekompilacja dynamiczna
Linki zewnętrzne
- Transformacja Programu Wiki
- Artykuły na temat teorii i praktyki transformacji programów
- Bibliografia technologii transformacji
- DMS Software Reengineering Toolkit : System transformacji programów dla DSL oraz nowoczesnych (C++, Java, ...) i starszych (COBOL, RPG) języków komputerowych
- Łyżka : biblioteka do analizowania, przekształcania, przepisywania i transponowania kodu źródłowego Java. Analizuje pliki źródłowe w celu zbudowania dobrze zaprojektowanego AST z potężnym interfejsem API do analizy i transformacji.
- JavaParser : Biblioteka JavaParser zapewnia abstrakcyjne drzewo składni twojego kodu Java. Struktura AST pozwala następnie pracować z kodem Java w łatwy, programistyczny sposób.