Stratego Song Zhou *Include slides from language.org/Stratego/SlidesForSoftwareGeneration2001...

101
Stratego Song Zhou *Include slides from http://www.stratego-language.org/Stratego/SlidesForSoftwareGener ation2001

Transcript of Stratego Song Zhou *Include slides from language.org/Stratego/SlidesForSoftwareGeneration2001...

Page 1: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Stratego

Song Zhou

*Include slides from http://www.stratego-language.org/Stratego/SlidesForSoftwareGeneration2001

Page 2: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Introduction

Stratego is “a language for the specification of transformation systems based on the paradigm of program rewriting strategies”.

Basic components: Rules: basic transformation steps Strategies: control application of rules

Page 3: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Stratego/XT Stratego is only a term-rewriting language. “Term in,

Term out.” XT can combine Stratego with other tools to create a transformation system.

Front End: SGLR: a generic parser creating syntax tree

Back End: GPP: a generic pretty-printer to emit the syntax tree

out Communication Language

Aterm: a term exchange format

Page 4: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Transformation Rules

Page 5: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Outline

Page 6: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 7: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 8: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 9: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 10: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 11: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 12: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 13: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 14: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 15: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 16: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 17: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 18: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 19: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 20: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 21: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 22: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 23: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 24: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 25: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 26: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 27: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 28: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Transformation Strategies

Page 29: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 30: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 31: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 32: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 33: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 34: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 35: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 36: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 37: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 38: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 39: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 40: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 41: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 42: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 43: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 44: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Traversal

Page 45: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 46: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 47: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 48: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 49: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 50: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 51: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 52: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 53: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 54: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 55: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 56: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 57: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 58: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

First-Class Pattern Matching

Page 59: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 60: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 61: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 62: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 63: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 64: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 65: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 66: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 67: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 68: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 69: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 70: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 71: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 72: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 73: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 74: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 75: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 76: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Scoped Dynamic Rewrite Rules

Page 77: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 78: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 79: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 80: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 81: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 82: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 83: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 84: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 85: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 86: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 87: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.
Page 88: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Concrete Object Syntax

Page 89: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

What is wrong with Abstract Syntax

Problems Easy for computer to process Difficult for human being to read and

write Maybe to verbose to be specified

Solution Directly employ the concrete object

syntax to specify the rewriting rules in Stratego

Page 90: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Mix an Object Language With a Meta Language Object Language inside Meta Language:

Extending Meta Language with a quotation operator that lets the meta-programmer indicate object language fragments.

Meta Language inside Object Language: Antiquotation allows the use of meta-programming

language constructs in these object language fragments to splice meta-computed object code into a fragment.

If Meta Language equals Object Language then the syntax extension is easy by just adding quote and antiquote operators to Meta Language.

Page 91: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Example EvalPlus : |[ i + j ]| -> |[ k ]|

where <add>(i, j) => k TraceProcedure :

|[ function ~f(~* xs) = ~e ]| -> |[ function ~f(~* xs) = (print(~String(<conc-strings>(f," entry\\n"))); ~e; print(~String(<conc-strings>(f,"exit\\n"))))]|

Page 92: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Syntax Definition Formalism Both the Stratego syntax and the object language syntax is

specified using the Syntax Definition Formalism (SDF) An SDF production sym1 ... symn -> sym declares that an

expression of sort sym can be constructed by the concatenation of expressions of sorts sym1 to symn.

SDF supports regular expression operators such as {Exp ";"}*, which denotes a list of Expressions separated by ; semicolons.

SDF integrates the definition of lexical and context-free syntax in one formalism.

The formalism is modular the syntax definition of a language can be divided into smaller

(reusable) modules syntax definitions for separate languages can easily be

combined.

Page 93: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Stratego Syntax Definition in SDF

Page 94: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Tiger Syntax Definition in SDF

Page 95: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Corresponding Abstract SyntaxSignature

Page 96: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Syntax Combination

The object language syntax definition can be imported into Stratego syntax definition

We also need define an additional combinationial syntax definiton, to specify the glues (quotation mark and antiquotaion mark)

Page 97: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Example of Combinational Syntax Definition

Page 98: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Theoretical Problems

Only full class of CFG have closure property. LL, LR and other subclasses of CFG are not closed under composition.

SDF2 supports scannerless generalized-LR parsing

Page 99: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Meta-Explode Convert concrete

object syntax term into Stratego syntax term

Page 100: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Generic Definition of Meta-explode

Page 101: Stratego Song Zhou *Include slides from  language.org/Stratego/SlidesForSoftwareGeneration2001 language.org/Stratego/SlidesForSoftwareGeneration2001.

Summarize

Rules rewriting Transformation strategy First-Class Pattern Matching Scoped Dynamic Rewrite Rules Concrete Object Syntax