Vi beskriver ett språk för att definiera termen omskrivningsstrategier, och dess tillämpning på produktionen av programoptimerare. Giltiga omvandlingar på programtermer kan beskrivas med en uppsättning omskrivningsregler; omskrivningsstrategier används för att beskriva när och hur de olika reglerna ska tillämpas för att uppnå önskade optimeringseffekter. Att skilja regler från strategier på detta sätt gör det lättare att resonera om optimizerns beteende som helhet, jämfört med traditionella monolitiska optimeringsimplementationer. Vi illustrerar uttryckligheten i vårt språk genom att använda det för att beskriva en enkel optimizer för en ML-liknande mellanrepresentation. Det grundläggande strategispråket använder operatörer som sekventiell sammansättning, val och rekursion för att bygga transformatorer från en uppsättning av märkta villkorslösa omskrivningsregler. Vi definierar också ett utvidgat språk där de sidovillkor och kontextuella regler som uppstår i realistiska optimeringsspecifikationer själva kan uttryckas som strategiska omskrivningar. Vi visar att egenskaperna hos de grundläggande och utvidgade språken kan uttryckas genom att bryta ner reglerna för omskrivning i sina primitiva byggstenar, nämligen matchning och byggtermer i varierande bindande miljöer. Detta ger oss en låg nivå kärnspråk som har en tydlig semantik, kan genomföras enkelt och kan själv optimeras. Det nuvarande genomförandet genererar C-kod från en strategispecifikation.
Stratego REF är ett språk för termen omskrivning med strategier.
Building program optimizers with rewriting strategies
{'venue': "ICFP '98", 'journal': None, 'mag_field_of_study': ['Computer Science']}