120 likes | 230 Views
Talk given at the 1st International Symposium on Generative and Component-based Software Engineering, 1999.
E N D
Transformation and Visualization of Abstractions using the Intentional Programming System Lutz Roeder September 1999
Programming 2000 _ ! “ # $ % & ‘ ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ _
Raise Abstraction Level Recycling existing C++ language… Visual Basic: 50% source code and 50% UI language… • Improve Software Productivity Text editor… Syntax errors… • Enable Software Maintenance Using text search and replace… Out of sync architecture diagrams… Programming 2000
Parsing Syntactic Analysis Abstract Syntax Tree Semantic Analysis Code Generation Target Code Source Documents Syntax is Limited !!! Source Code (Syntax)
Source Documents Code is Data Visual Rendering Editing Visualization Abstract Source Tree Transformation Debugging Target Code
Declaration DCL Reference if cond then else Parameterization Abstract Source Tree Intention (Abstraction) Intention Instance Tree Element
int Type x DCL = Literal “3” while < “5” Example Tree User Project { int x; x = 3; while (x < 5) { } Used Libraries }
( 5 if ) > x x if { < Constant “5” List } \n Indent _( )_ if > x 5 { \n } Rendering Source Graph Regions Display Tree
while list cond body if break continue label goto Transformation { continue: if (<cond>) { <body>; goto continue; } break; }; Expansion
Legacy Parsers Rendering Type-in Reduction Debugger Version Control Extension Libraries Code Generation Target Code Environment Abstract Source Tree
Raise Abstraction Level …by allowing new abstractions and new notations. (e.g. matrix library, string concatenation, foreach, …) • Improve Software Productivity …by making source more accessible for tools. (e.g. auto-complete, search, reference search, …) • Enable Software Maintenance …by enabling source tree level re-factoring. (e.g. auto-rename references, replace API, …) Summary