SlideServe
Menu
Préférences
© SlideServe · v2026

Program Transformation

elainel avatar
12 diapositives · 156 Views · Jan 01, 2020

Program Transformation. Application examples. Converting to a new language dialect Migrating from a procedural language to an object-oriented one, e.g. C to C++ Adding code comments Requirement upgrading, e.g. using 4 digits for years instead of 2 (Y2K)

Program Transformation - slide 1
01 / 12Program Transformation
1 / 17

Télécharger la présentation

Program Transformation
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Program Transformation

  2. Application examples • Converting to a new language dialect • Migrating from a procedural language to an object-oriented one, e.g. C to C++ • Adding code comments • Requirement upgrading, e.g. using 4 digits for years instead of 2 (Y2K) • Structural improvements, e.g. changing GOTOs to control structures • Pretty printing COSC6431

  3. Simple program transformation • Modify all arithmetic expressions to reduce the number of parentheses using the formula: (a+b)*c = a*c + b*cx := (2+5)*3becomesx := 2*3 + 5*3 COSC6431

  4. Transformation tools • There are many transformation tools • Program-Transformation.org lists about 90 of them • We will look at one of the most mature tools, TXL COSC6431

  5. TXL • A generalized source-to-source translation system • Uses a context-free grammar to describe the structures to be transformed • Rule specification uses a by-example style • Has been used to process billions of lines of code for Y2K purposes COSC6431

  6. TXL programs • TXL programs consist of two parts: • Grammar for the input language • Transformation Rules • Let’s look at some examples… COSC6431

  7. % Part I. Syntax specification define program [expression] end define define expression [term] | [expression] [addop] [term] end define define term [primary] | [term] [mulop] [primary] end define define primary [number] | ( [expression] ) end define define addop '+ | '- end define define mulop '* | '/ end define Calculator.Txl - Grammar COSC6431

  8. % Part 2. Transformation rules rule main replace [expression] E [expression] construct NewE [expression] E [resolveAddition] [resolveSubtraction] [resolveMultiplication] [resolveDivision] [resolveParentheses] where not NewE [= E] by NewE end rule rule resolveAddition replace [expression] N1 [number] + N2 [number] by N1 [+ N2] end rule rule resolveSubtraction … rule resolveMultiplication … rule resolveDivision … rule resolveParentheses replace [primary] ( N [number] ) by N end rule Calculator.Txl - Rules COSC6431

  9. % Form the dot product of two vectors, % e.g., (1 2 3).(3 2 1) => 10 define program ( [repeat number] ) . ( [repeat number] ) | [number] end define rule main replace [program] ( V1 [repeat number] ) . ( V2 [repeat number] ) construct Zero [number] 0 by Zero [addDotProduct V1 V2] end rule rule addDotProduct V1 [repeat number] V2 [repeat number] deconstruct V1 First1 [number] Rest1 [repeat number] deconstruct V2 First2 [number] Rest2 [repeat number] construct ProductOfFirsts [number] First1 [* First2] replace [number] N [number] by N [+ ProductOfFirsts] [addDotProduct Rest1 Rest2] end rule DotProduct.Txl COSC6431

  10. Sort.Txl % Sort.Txl - simple numeric bubble sort define program [repeat number] end define rule main replace [repeat number] N1 [number] N2 [number] Rest [repeat number] where N1 [> N2] by N2 N1 Rest end rule COSC6431

  11. www.txl.ca • Guided Tour • Many examples • Reference manual • Download TXL for many platforms COSC6431

  12. Example uses • HTML Pretty Printing of Source Code • Language to Language Translation • Design Recovery from Source • Improvement of security problems • Program instrumentation and measurement • Logical formula simplification and interpretation. COSC6431