Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic...

29
Helvetia

Transcript of Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic...

Page 1: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Helvetia

Page 2: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 3: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 4: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 5: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

§

§§

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 6: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools
Page 7: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 8: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006

Page 9: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Host Environment

Tool Infrastructure

Language Boxes

Page 10: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

LanguageChange

LanguageConcern

LanguageScope

LanguageBox

Page 11: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Demo

Page 12: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Why Smalltalk?

Page 13: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

1. Minimal Syntax

2. Dynamic Semantics

3. Reflective Facilities

4. Homogeneous Language

5. Homogeneous Tools

6. On-the-fly Programming

Page 14: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

1. Minimal Syntax

2. Dynamic Semantics

3. Reflective Facilities

4. Homogeneous Language

5. Homogeneous Tools

6. On-the-fly Programming

Page 15: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

1MinimalSyntax

Page 16: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Abstract Type Declaration

Annotation

Annotation Binding

Annotation Type Declaration

Annotation Type Member Declaration

Anonymous Class Declaration

Array Access

Array Creation

Array Initializer

Array Type

Assert Statement

Assignment

Block

Block Comment

Body Declaration

Boolean Literal

Break Statement

Cast Expression

Catch Clause

Character Literal

Child List Property Descriptor

Child Property Descriptor

Class Instance Creation

Comment

Compilation Unit

Conditional Expression

Constructor Invocation

Continue Statement

Default Binding Resolver

Default Comment Mapper

Default Value Pair Binding

Do Statement

Doc Comment Parser

Empty Statement

Enhanced For Statement

Enum Constant Declaration

Enum Declaration

Expression

Expression Statement

Field Access

Field Declaration

For Statement

If Statement

Import Declaration

Infix Expression

Initializer

Instanceof Expression

Javadoc

Labeled Statement

Line Comment

Marker Annotation

Member Ref

Member Value Pair

Member Value Pair Binding

Message

Method Binding

Method Declaration

Method Invocation

Method Ref

Method Ref Parameter

Modifier

Name

Node Event Handler

Node Searcher

Normal Annotation

Null Literal

Number Literal

Package Binding

Package Declaration

Parameterized Type

Parenthesized Expression

Postfix Expression

Prefix Expression

Primitive Type

Qualified Name

Qualified Type

Recovered Type Binding

Recovered Variable Binding

Return Statement

Simple Name

Simple Property Descriptor

Simple Type

Single Member Annotation

Single Variable Declaration

Statement

String Literal

Structural Property Descriptor

Super Constructor Invocation

Super Field Access

Super Method Invocation

Switch Case

Switch Statement

Synchronized Statement

Tag Element

Text Element

This Expression

Throw Statement

Try Statement

Type

Type Binding

Type Declaration

Type Declaration Statement

Type Literal

Type Parameter

Variable Binding

Variable Declaration

Variable Declaration Expression

Variable Declaration Fragment

Variable Declaration Statement

While Statement

Wildcard Type

Page 17: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

AtomList

Page 18: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Method

Pragma

Sequence

Message

Cascade

Block

Return

Variable

Assignment

Literal

Page 19: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

3ReflectiveFacilities

Page 20: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

ReflectionÜbercool

Page 21: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Code Generation(Meta-Programming)

Untercool

Page 22: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

aString asRegex

known at

compile-time

Page 23: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

IRBuilder new pushLiteral: aString; send: #asRegex

Page 24: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

Parser parseExpression: aString storeString , ' asRegex'

Page 25: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

MessageNode receiver: (LiteralNode value: aString) selector: #asRegex

Page 26: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

``(`,(aString) asRegex)

LISPer know this

for a long time

Page 27: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

``(`,(aString) asRegex)

Represents AST of enclosed expression

Quoting

Page 28: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

``(`,(aString) asRegex)

Expression executed

at compile-time

Unquoting

Page 29: Helvetia - Universität Bernscg.unibe.ch/download/st/Helvetia.pdf · 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools

scg.unibe.ch/research/helvetia