Slide 1

Slide 1 text

EMBEDDING ATTRIBUTE GRAMMARS Anthony Sloane Programming Languages and Verification Group Macquarie University, Sydney, Australia

Slide 2

Slide 2 text

ELI

Slide 3

Slide 3 text

ELI

Slide 4

Slide 4 text

KIAMA

Slide 5

Slide 5 text

Anthony Sloane, Matthew Roberts, Dominic Verity Scott Buckley KIAMA High-level language processing in a familiar programming setting Enables experimentation with combinations of processing mechanisms A shallow embedding of Domain-Specific Languages in Scala strategic term rewriting dynamically-scheduled attribute grammars abstract state machines pretty-printing combinators A. M. Sloane. Lightweight language processing in Kiama. In Generative and Transformational Techniques in Software Engineering III, volume 6491 of Lecture Notes in Computer Science, Springer, 2011. https://bitbucket.org/inkytonik/kiama

Slide 6

Slide 6 text

Photo: Rémi Bigonneau (https://www.flickr.com/photos/35434071@N02/20040081905/) Franck Cassez, Anthony Sloane, Matthew Roberts Pablo González de Aledo, Matthew Pigram, Pongsak Suvanpong SKINK

Slide 7

Slide 7 text

scalallvm lib control flow graph error trace trace effect (assert (and (= %0@1 %r@1 ) %cmp@1 (= %cmp@1 (> %0@1 0)))) (check-sat) C compiler no more traces program correct sat (get-value (r)) ((r 42)) unsat unsat, trace infeasible remove trace from graph SMT solver SMT lib sat, trace feasible program incorrect automata lib

Slide 8

Slide 8 text

CONTEXT-FREE GRAMMAR AND TREE A B B C D E? F* E F F

Slide 9

Slide 9 text

ALGEBRAIC DATA TYPES AND VALUE A B B C D E? F* E F F

Slide 10

Slide 10 text

ATTRIBUTE FUNCTION B a

Slide 11

Slide 11 text

EQUATION SELECTION PATTERN MATCHING CASES

Slide 12

Slide 12 text

RULE-BASED EQUATIONS B a C a B a D a * 2

Slide 13

Slide 13 text

BINDINGS AND EXPRESSIONS IN CASES B a C a B a D a * 2

Slide 14

Slide 14 text

CACHING AND CYCLE CHECK Wrap equations node identity is crucial

Slide 15

Slide 15 text

COMPLETENESS

Slide 16

Slide 16 text

CONTEXT-FREE GRAMMAR TREE ATTRIBUTE EQUATION SELECTION EQUATION NOTATION CACHING CYCLE CHECK COMPLETENESS CHECK SUMMARY (1) ALGEBRAIC DATA TYPE ADT VALUE FUNCTION PATTERN-MATCHING CASES BINDING AND EXPRESSIONS IN ATTR WRAPPER DYNAMIC IN ATTR WRAPPER PATTERN EXHAUSTIVENESS CHECK

Slide 17

Slide 17 text

SYMBOL-BASED EQUATIONS B a ? a

Slide 18

Slide 18 text

TREE RELATIONS: CHILD-PARENT A B B C D E? F* E F F parent child A. M. Sloane, M. Roberts, and L. G. C. Hamey. Respect your parents: How attribution and rewriting can get along. In Proceedings of the International Conference on Software Language Engineering, volume 8706 of Lecture Notes in Computer Science, 2014.

Slide 19

Slide 19 text

TREE RELATIONS: FIRST CHILD, NEXT A B B C D E? F* E F F first child next

Slide 20

Slide 20 text

TREE RELATIONS AND SHARING A B B A B C D D

Slide 21

Slide 21 text

GENERIC TREE ACCESS B a ? a

Slide 22

Slide 22 text

TREE RELATIONS AS PATTERNS Bind c to the first child of the matched node, or fail if there are no children Bind pn to the next node at the same level as the parent of the matched node, or fail if there is no parent or next node after parent Succeed if and only if there is a parent and it is an A

Slide 23

Slide 23 text

INHERITED ATTRIBUTES A C c 10 B C c 20

Slide 24

Slide 24 text

MATCHING ON PARENT A C c 10 B C c 20

Slide 25

Slide 25 text

MIXED MODE ATTRIBUTES A C c ? C c G c 10

Slide 26

Slide 26 text

CONTEXT-FREE GRAMMAR TREE ATTRIBUTE EQUATION SELECTION EQUATION NOTATION CACHING CYCLE CHECK COMPLETENESS CHECK INHERITED EQUATIONS CONTEXT-DEPENDENT EQUATIONS SUMMARY (2) ALGEBRAIC DATA TYPE ADT VALUE FUNCTION PATTERN-MATCHING CASES BINDING AND EXPRESSIONS IN ATTR WRAPPER DYNAMIC IN ATTR WRAPPER PATTERN EXHAUSTIVENESS CHECK MATCHING ON PARENT TREE RELATIONS AS PATTERNS

Slide 27

Slide 27 text

HIGHER-ORDER ATTRIBUTES A B d D x y

Slide 28

Slide 28 text

HIGHER-ORDER ATTRIBUTES A B d D x y

Slide 29

Slide 29 text

REFERENCE ATTRIBUTES

Slide 30

Slide 30 text

FORWARDING * 1 + 2 3 + * 3 1 2 ast

Slide 31

Slide 31 text

CIRCULAR ATTRIBUTES E. Magnusson, G. Hedin. Circular reference attributed grammars — their evaluation and applications. Science of Computer Programming 68 (2007) 21–37.

Slide 32

Slide 32 text

ATTRIBUTION PATTERNS

Slide 33

Slide 33 text

DOWN DECORATOR

Slide 34

Slide 34 text

MODULARITY L1 L2 L3 L4 Syntax analyser Oberon-0 printer Name analyser Type analyser Desugarer Lifter Code generator C printer A extends B A B A B mixin: A ... with B A. M. Sloane and M. Roberts. Oberon-0 in Kiama. Science of Computer Programming, Dec. 2015

Slide 35

Slide 35 text

CONTEXT-FREE GRAMMAR TREE ATTRIBUTE EQUATION SELECTION EQUATION NOTATION CACHING CYCLE CHECK COMPLETENESS CHECK INHERITED EQUATIONS CONTEXT-DEPENDENT EQUATIONS HIGHER-ORDER/REFERENCE ATTRS FORWARDING CIRCULAR ATTRIBUTES ATTRIBUTION PATTERNS MODULARITY SUMMARY (3) ALGEBRAIC DATA TYPE ADT VALUE FUNCTION PATTERN-MATCHING CASES BINDING AND EXPRESSIONS IN ATTR WRAPPER DYNAMIC IN ATTR WRAPPER PATTERN EXHAUSTIVENESS CHECK MATCHING ON PARENT TREE RELATIONS AS PATTERNS FUNCTIONS AND TREE RELATIONS IMPLICIT CONVERSION AS IN JASTADD DECORATORS MIXINS, INHERITANCE

Slide 36

Slide 36 text

SOFTWARE LANGUAGE ENGINEERING AT MACQUARIE UNIVERSITY https://bitbucket.org/inkytonik/kiama [email protected] @inkytonik on Twitter High-level language processing in a familiar programming setting strategic term rewriting dynamically-scheduled attribute grammars abstract state machines pretty-printing combinators https://bitbucket.org/inkytonik/sbt-rats Scala parser generator plugin PEG-based packrat parsing tree construction pretty-printing