Transformation and Visualization of Abstractions using the Intentional Programming System

Post on 12-Feb-2017

176 views 0 download

transcript

Transformation and Visualizationof Abstractions using the

Intentional Programming System

Lutz RoederSeptember 1999

_ ! “ # $ % & ‘ ( ) * + , - . /

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 { | } ~ _

Programming 2000

Programming 2000• Raise Abstraction Level

Recycling existing C++ language…Visual Basic: 50% source code and 50% UI language…

• Improve Software ProductivityText editor…Syntax errors…

Using text search and replace…Out of sync architecture diagrams…

• Enable Software Maintenance

Source Code(Syntax)

AbstractSyntax Tree

ParsingSyntactic Analysis

Target Code

Semantic AnalysisCode Generation

Syntax is Limited !!!

Source Documents

Target Code

Transformation

VisualRendering

VisualizationEditing

Debugging

AbstractSource Tree

Code is Data

Source Documents

Abstract Source Tree

Intention Instance

ifReference DCL

Declaration

Intention (Abstraction)

Tree Element

cond

then

elseParameterization

Example Tree

int x;

x = 3;

while (x < 5) { }

User Project

Used Libraries

“5”

“3”

x

{

}

while

<

=

Literal

DCL

Typeint

Rendering

List

if

<

“5”

Constant

x

if _( )_ \n Indent

x > 5

{ }\n

if ( x > 5 ){

}

Display Tree

Regions

Source Graph

Transformation

list

if

continuebreak

label

goto

while

cond body

{continue:if (<cond>) { <body>; goto continue; }break;};

Expansion

Environment

AbstractSourceTree

Reduction

LegacyParsers

CodeGeneration

ExtensionLibraries

TargetCode

Rendering

Type-in

Debugger

VersionControl

Environment

Summary• 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, …)

…by enabling source tree level re-factoring.(e.g. auto-rename references, replace API, …)

• Enable Software Maintenance