Date post: | 12-Feb-2017 |
Category: |
Software |
Upload: | lutz-roeder |
View: | 176 times |
Download: | 0 times |
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