Transcript
Page 1: Language Boxes — Bending the Host Language with Modular Language Changes

Language BoxesBending the Host Language

with Modular Language Changes

Lukas Renggli, Marcus Denker, Oscar Nierstrasz

Page 2: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 3: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 4: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 5: Language Boxes — Bending the Host Language with Modular Language Changes

§

§§

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

Page 6: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 7: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 8: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 9: Language Boxes — Bending the Host Language with Modular Language Changes

§

§§

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

Page 10: Language Boxes — Bending the Host Language with Modular Language Changes
Page 11: Language Boxes — Bending the Host Language with Modular Language Changes

Host Environment

Page 12: Language Boxes — Bending the Host Language with Modular Language Changes

Host Environment

Tool Infrastructure

Page 13: Language Boxes — Bending the Host Language with Modular Language Changes

Editor

Compiler

Debugger

Syntax

Language 1

Language 2

Page 14: Language Boxes — Bending the Host Language with Modular Language Changes

Editor

Compiler

Debugger

Syntax

Language 1

Language 2

Page 15: Language Boxes — Bending the Host Language with Modular Language Changes

Editor

Compiler

Debugger

Syntax

Language 1

Language 2

Page 16: Language Boxes — Bending the Host Language with Modular Language Changes

Editor

Compiler

Debugger

Syntax

Language 1

Language 2

Page 17: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 18: Language Boxes — Bending the Host Language with Modular Language Changes

Host Environment

Tool Infrastructure

Page 19: Language Boxes — Bending the Host Language with Modular Language Changes

Host Environment

Tool Infrastructure

Language Boxes

Page 20: Language Boxes — Bending the Host Language with Modular Language Changes

Language BoxModel

Page 21: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageChange

LanguageConcern

LanguageScope

LanguageBox

*

*

*

*

Page 22: Language Boxes — Bending the Host Language with Modular Language Changes

IV + VII = XI

Page 23: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageChange

LanguageConcern

LanguageScope

LanguageBox

*

*

*

*

Page 24: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

Insert FRAGMENT(before|after) PRODUCTION

as (choice|sequence|replacement)

Page 25: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

Insert RomanNumberbefore NumberLiteral

as a choice.

Page 26: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

Literal: BooleanLiteral

NilLiteral

NumberLiteral

StringLiteral

ArrayLiteral

NumberLiteral: IntegerLiteral

FloatLiteral

Page 27: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

'I' .. 'M'RomanNumber:

Page 28: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

Literal: BooleanLiteral

NilLiteral

NumberLiteral'

StringLiteral

ArrayLiteral

NumberLiteral': RomanNumber

NumberLiteral

Page 29: Language Boxes — Bending the Host Language with Modular Language Changes

Language Change

1st Class Grammar

Scannerless, Packrat

Page 30: Language Boxes — Bending the Host Language with Modular Language Changes

Language Concern

Production Action

Page 31: Language Boxes — Bending the Host Language with Modular Language Changes

Language Concern

Compiler

aToken value romanToArabic lift

Page 32: Language Boxes — Bending the Host Language with Modular Language Changes

Highlighting

aToken -> Color gray

Language Concern

Page 33: Language Boxes — Bending the Host Language with Modular Language Changes

Custom Actions

Language Concern

Page 34: Language Boxes — Bending the Host Language with Modular Language Changes

Language Scope

Active?

Page 35: Language Boxes — Bending the Host Language with Modular Language Changes

Language Scope

System

Page 36: Language Boxes — Bending the Host Language with Modular Language Changes

Language Scope

Packages

Page 37: Language Boxes — Bending the Host Language with Modular Language Changes

Language Scope

Classes

Page 38: Language Boxes — Bending the Host Language with Modular Language Changes

Language Scope

Methods

Page 39: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageChange

LanguageConcern

LanguageScope

*

*

*

*

LanguageBox

Page 40: Language Boxes — Bending the Host Language with Modular Language Changes

Conflicts

Page 41: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 1

LanguageBox 2

LanguageBox 3

LanguageBox 4

Page 42: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 1

LanguageBox 2

LanguageBox 3

LanguageBox 4

LanguageBox 3

Page 43: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 3

LanguageBox 1

LanguageBox 2

LanguageBox 4

Page 44: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 3

LanguageBox 1

LanguageBox 2

LanguageBox 4

HostGrammar

Page 45: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 3

LanguageBox 1

LanguageBox 2

LanguageBox 4

HostGrammar

Page 46: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 3

LanguageBox 1

LanguageBox 2

LanguageBox 4

HostGrammar

Page 47: Language Boxes — Bending the Host Language with Modular Language Changes

LanguageBox 3

LanguageBox 1

LanguageBox 2

LanguageBox 4

Page 48: Language Boxes — Bending the Host Language with Modular Language Changes
Page 49: Language Boxes — Bending the Host Language with Modular Language Changes

HostGrammar'

Page 50: Language Boxes — Bending the Host Language with Modular Language Changes

HostGrammar'

might consist

of unused parts

Page 51: Language Boxes — Bending the Host Language with Modular Language Changes

HostGrammar'

might beambiguousmight consist

of unused parts

Page 52: Language Boxes — Bending the Host Language with Modular Language Changes

HostGrammar'

PackratParser

Page 53: Language Boxes — Bending the Host Language with Modular Language Changes

SELECT * FROM users

Page 54: Language Boxes — Bending the Host Language with Modular Language Changes

SELECT * FROM users<SQL: >

Page 55: Language Boxes — Bending the Host Language with Modular Language Changes

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

Page 56: Language Boxes — Bending the Host Language with Modular Language Changes

scg.unibe.ch/research/helvetia


Recommended