Structure and Interpretation of an Aspect Language for Datatype

Slides:



Advertisements
Similar presentations
School of EECS, Peking University “Advanced Compiler Techniques” (Fall 2011) SSA Guo, Yao.
Advertisements

February R. McFadyen1 Polymorphism Indirection Pure Fabrication Protected Variations (Law of Demeter) More GRASP Patterns.
Oct R McFadyen1 Recall UML Class Diagram BusRoute BusStopList BusStop BusList BusPersonList Person passengers buses busStops waiting 0..*
INTERPRETER Main Topics What is an Interpreter. Why should we learn about them.
March R. McFadyen1 Principle of Least Knowledge – page 265 Principle: talk only to your immediate friends Also called Law of Demeter (LoD)
Midterm Fall 2000 solutions. Question 1 From sentence to class dictionary abstraction In this case like from object graph to class graph abstraction because.
Validating Streaming XML Documents Luc Segoufin & Victor Vianu Presented by Harel Paz.
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
UML class diagrams and XML schemas Karl Lieberherr UBS AG Northeastern University.
Amarnath Gupta Univ. of California San Diego. An Abstract Question There is no concrete answer …but …
3/7/2003Bioinformatics1 How To Address Rapidly Changing Data Representations in an Evolving Scientific Domain Using Aspect-oriented Programming Techniques.
2.2 A Simple Syntax-Directed Translator Syntax-Directed Translation 2.4 Parsing 2.5 A Translator for Simple Expressions 2.6 Lexical Analysis.
Catalysis/Testing Catalysis Objects, components, and Frameworks with UML.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 21. Review ANALYSIS PHASE (OBJECT ORIENTED DESIGN) Functional Modeling – Use case Diagram Description.
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
Expression evaluation E : S | C. S = int. C = Op E E. Op : A | M. A = “+”. M = “*”.
Slides for Gregor Kiczales Two versions –short version: Crosscutting capabilities for Java and AspectJ through DJ (4 viewgraphs only) –long version: Controlling.
RRXS Redundancy reducing XML storage in relations O. MERT ERKUŞ A. ONUR DOĞUÇ
Not only mark-up languages! There are other many other grammar formalisms and tools than XML. Some of them standardized (ASN). Even XML does not always.
John J. Sung TA Consulting. Motivation for TraversalJ KL Enterprises identified AOP Enter into the AOP market early Add value by adding traversals to.
Semantics Connection to Traversal Graphs. Strategy: From C1 to T o1:C1 o2:C2 e go down e iff C1. )*.
Catalysis/Testing Catalysis Objects, components, and Frameworks with UML.
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
CSG 7111 Structure and Interpretation of an Aspect Language for Datatype Karl Lieberherr.
DJ: traversal-visitor-style programming in Java Josh Marshall/ Doug Orleans Want to add more on traversal through collections and Aspectual Components.
Problem with Java and how it causes a problem for DJ.
AOP/cross-cutting What is an aspect?. An aspect is a modular unit that cross-cuts other modular units. What means cross-cutting? Apply AOP to AOP. Tease.
Interpreters and Higher-Order Functions CSE 413 Autumn 2008 Credit: CSE341 notes by Dan Grossman.
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
Jesse proposal1 Jesse’s proposal Karl Lieberherr.
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
Features of AOP languages AOP languages have the following main elements: –a join point model (JPM) wrt base PL –a specification language for expressing.
Cliquez pour modifier le style du titre Cliquez pour modifier les styles du texte du masque Deuxième niveau Troisième niveau Quatrième niveau Cinquième.
Advanced Computer Systems
Viewgraphs for Semantics
Crosscutting Capabilities for Java and AspectJ through DJ
Pattern Language for Adaptive Programming (AP)
A Simple Syntax-Directed Translator
CS 326 Programming Languages, Concepts and Implementation
Discussion with Gregor Kiczales at UBC
Microsoft Access Illustrated
Adaptive Object-Oriented Software Development
A Short Introduction to Adaptive Programming (AP) for Java Programmers
A Short Introduction to Adaptive Programming (AP) with collaborations and adapters Northeastern Team 11/16/2018 DJ.
Software Design and Development
ADAPTIVE PROGRAMMING Sezen ERDEM December 2005.
Review lecture AOO/Demeter.
Software Design and Development
The Metacircular Evaluator
A Short Introduction to Adaptive Programming (AP) for Java Programmers
Chapter 20 Object-Oriented Analysis and Design
Object-Oriented Knowledge Representation
Midterm Review CSU 670 Spring 2004.
AP/DJ AP: a generic technology
Lecture 21: Crosscutting Aspect-Oriented Programming Background
The Metacircular Evaluator (Continued)
Better Separation of Crosscutting Concerns with Aspectual Components
Requirements for better object-oriented design and programming languages Could be organized better.
6.001 SICP Variations on a Scheme
APPCs revisited 2/25/2019 APPCs revisited.
AOSD and the Law of Demeter: Shyness in Programming
Software Development CSU 670 Karl Lieberherr
Aspects at the Design Level
Ideas for testing Transformations of cds 4/27/2019 AOO/Demeter.
Objects, components, and Frameworks with UML
Dichotomies in CSP Karl Lieberherr inspired by the paper:
Karl Lieberherr Doug Orleans
Inductively Defined Data Concrete and Abstract syntax
Presentation transcript:

Structure and Interpretation of an Aspect Language for Datatype Karl Lieberherr CSG 711

2 Lectures The motivation and theory behind “Aspect Language for Datatype”. datatypes and class graphs Semantics (// A B) (navig-object graphs.*) Visitors and type checking Interpreter implementation CSG 711

Motivation Build on foundations that Matthias presented. Connections to templates: stressing the importance of structural recursion. Not only an interpreter but also a compiler (works, because traversals are sufficiently simple). Very useful application of foundations that is in itself a foundation. Demonstration that simple languages can be full of surprises. CSG 711

Homework Simple aspect-oriented language. Leads to a radically different way of programming: programming without knowing details of data structures. Write programs for a family of related data structures. Northeastern SAIC project ca. 1990. CSG 711

Homework evolution Initial motivation: make EOPL datatype style programming easier by adding a traverse function. Visitors written in full Scheme: AdaptiveScheme = Scheme + EOPL datatype + traversal strategies + visitors. You get a simplified form (thanks Matthias). CSG 711

Interpretation Interpret a traversal on an object tree. (join (//A B) (//B C)): starting at an A-node, traverse entire object tree, return C-nodes that are contained in B-nodes that are in turn contained in A-nodes. Not interesting enough. Can meta information about object trees make it more interesting? CSG 711

Interpretation with meta information Use a graph to express meta information. Many applications: data type / data trees class graph / object trees schema / documents (XML) programs / execution trees CSG 711

Class graphs (simplified UML class diagrams) nodes and edges nodes: concrete and abstract edges: has-a (triples) and is-a (pairs) concrete nodes: no incoming is-a supports inheritance flat: a class graph is flat if no abstract node has an outgoing has-a edge CSG 711

Example B2 strategy A//T//D object graph a1:A 0..1 d1:D r1:R X 0..1 B c1:C s1:S D A C s2:S t1:T 0..1 r2:R R S T 0..1 c2:C class graph d2:D CSG 711

Plan (M s cg og) = ? Not only traverse! (Mv s cg og V) (M1(M2 s cg) og) = ? og satisfies cg! Not only traverse! (Mv s cg og V) (Mv1 (M1 (M2 s cg) og) V) visitor V: before / after applications to node / edge. Local storage. Visitor functions are activated by traversal. CSG 711

Sample visitor (visitor PersonCountVisitor 0 // initial value PersonCountVisitor // return before (host Person) (+ PersonCountVisitor 1) ) CSG 711

Example (Mv s cg og PersonCountVisitor) count all persons waiting at any bus stop on a bus route Example (Mv s cg og PersonCountVisitor) cg : class graph for bus routes og: object graph for bus routes s = (join (// BusRoute BusStop) (// BusStop Person)) CSG 711

Class Graph count all persons waiting at any bus stop on a bus route busStops BusRoute BusStopList buses 0..* BusStop BusList Example for developing strategies and writing adaptive programs waiting 0..* passengers Bus PersonList Person 0..* CSG 711

Object Graph Route1:BusRoute BusList buses busStops :BusStopList (Mv s cg og PersonCountVisitor) = ?? c=0 Route1:BusRoute BusList buses busStops :BusStopList Bus15:Bus passengers CentralSquare:BusStop waiting :PersonList :PersonList Christine:Person Daniel:Person Viera:Person c++ c++ Bryan:Person s = (join (// BusRoute BusStop) (// BusStop Person)) CSG 711

Robustness count all persons waiting at any bus stop on a bus route s = BusRoute // BusStop // Person villages BusRoute BusStopList c=0 busses VillageList busStops 0..* 0..* BusStop BusList Village waiting 0..* passengers Bus PersonList Person c++ 0..* CSG 711

Aspects Aspects as program enhancers Here we enhance traversal programs with before and after advice defined in aspects called visitors General AOP enhances any kind of program This is a special case with good software engineering properties CSG 711

Develop a sequence of semantics (M s cg og) = ? og satisfies cg! s, cg, og: are graphs. Graphs are relations. Use terminology of relations. Restrict to s = (// A B). CSG 711

Object level semantics (M s cg og), where s = (// A B). The key is to find a set FIRST(A,B) of edges such that e in FIRST(A, B) iff it is possible for an object of class A to reach an object of type B by a path beginning with an edge e. (M s cg og) is the FIRST(A,B) sets. CSG 711

Homework class graphs A CG is: (DD+) A DD is: HW class graph to class graph transformation: TypeName -- abstract class AlternativeName – concrete class (AlternativeName, FieldName, TypeName) – has-a (AlternativeName, TypeName) – is-a A CG is: (DD+) A DD is: (datatype TypeName Alternative+) An Alternative is: (AlternativeName (FieldName TypeName)+) CSG 711

Homework class graphs CD = PL(DD). DD = "(datatype" TypeName L(Alternative) ")". Alternative = "(" AlternativeName L(TypedField) ")". TypedField = "(" FieldName TypeName ")". FieldName = Ident. TypeName = Ident. AlternativeName = Ident. L(S) ~ {S}. PL(S) ~ "(" {S} ")". CSG 711

Class graph example (datatype Container traversal strategy: (// a_Container a_Weight) (datatype Container (a_Container (contents ItemList) (capacity Number) (total_weight Number))) (datatype Item (Cont (c Container)) (Simple (name String) (weight Weight))) (datatype Weight (a_Weight (v Number))) (datatype ItemList (Empty) (NonEmpty (first Item) (rest ItemList)))) HW class graph to class graph transformation: TypeName -- abstract class AlternativeName – concrete class (AlternativeName, FieldName, TypeName) – has-a (AlternativeName, TypeName) – is-a CSG 711

As traditional class graph Container Item c first aContainer total_weight contents capacity Cont Simple ItemList Number name weight rest Weight Empty NonEmpty String v CSG 711

Another class graph example (datatype P (CP (q Q))) (datatype Q (CQ (p P))) Because we only allow trees for object graphs, we should disallow such class graphs? P and Q are useless. CSG 711

F C B A G E H Class graphs H object-equivalent F G inheritance D E A B CSG 711

F C B A G E H Class graphs F C B A G E H object-equivalent inheritance CSG 711

H Class graphs H G F F A B C inheritance E aH G aG Hid_A Hid_B Hid_C Preview: (// aH aE) (// aH aG) (// aH Hid_A) A B C E inheritance E aE CSG 711

H Evolution H G F F A B C inheritance E aH G aG Hid_A Hid_B Hid_C B E aE CSG 711

Separate Viewgraphs Difference between homework class graphs and class graphs. No inheritance in homework class graphs. Flat class graphs can easily be modeled by home work class graph. A class graph is flat if abstract classes have no outgoing has-a edges. Quadratic growth in size. CSG 711

Apply class graph knowledge to homework class graphs Only consider flat class graph (flattening is an object preserving transformation). In flat class graph the rules are simpler. HW class graph to class graph transformation: TypeName -- abstract class AlternativeName – concrete class (AlternativeName, FieldName, TypeName) – has-a (AlternativeName, enclosing TypeName) – is-a CSG 711

Meaning of strategies and visitors (// A B) (only this in hw) A:AlternativeName B:AlternativeName starts at A-object and ends at B-object (// A B) A:TypeName B:TypeName starts at an AlternativeName-object of A ends at an AlternativeName-object of B CSG 711

From Semantics to Interpreter From object-level semantics to class-level semantics (M1(M2 s cg) og) M2: FIRST sets at class level SWITCH to navig-object-graphs CSG 711

From Interpreter to Compiler Connect to Structural Recursion Consider the strategy (// A *) (everything reachable from A) (M1(M2 s cg) og): we want M1 to be apply M2 must return a function that we apply to og Primitives: functions with one argument: the data traversed, no other arguments. CSG 711

Code generation: should produce something useful (define-datatype BusRoute BusRoute? (a-BusRoute (name symbol?) (buses (list-of Bus?)) (towns (list-of Town?)))) CSG 711

Style 1: display (define (trav br) (cases BusRoute br (a-BusRoute (name buses towns) (list name (trav-buses buses) (trav-towns towns))))) (define (trav-buses lob) (map trav-bus lob)) CSG 711

Style 2: copy (define (cp br) (cases BusRoute br (a-BusRoute (name buses towns) (apply a-BusRoute (list name (cp-buses buses) (cp-towns towns)))))) (define (cp-buses lob) (map cp-bus lob)) CSG 711

Summary phase 1 Language: strategies: A // B, class graphs, object graphs Semantics: FIRST: there exists object Interpreter: FIRST: there exists path in class graph Compiler: generated code is equivalent to a subgraph of class graph CSG 711

Visitors CSG 711

Visitors Several kinds: Think of strategy as making a list out of an og. Fold on that list. (cg og s) -> list of target objects of s. (gather cg og s). (// CContainer CWeight) (+ (+ … (+ w2 (+ w1 0)) … ) Think of visitor as having a suit case of variables in which they store data from their trip. Available as argument. functions for nodes and edges. multiple visitors. CSG 711

Type checking of hw programs check: Program =(Strategy x Visitor). (Program x ClassGraph) -> Bool Fundamental question: Given a program, with respect to which class graphs is it type correct. Type checking: Given a class graph, is the program type correct? Typability: Does there exist a class graph such that the program is type correct? CSG 711

Reference Class-graph Inference for Adaptive Programs, Jdens Palsberg, TAPOS 3 (2), 75-85, 1997. CSG 711