Domain-Specific Languages

Size: px
Start display at page:

Download "Domain-Specific Languages"

Transcription

1 Domain-Specific Languages Tijs van der Storm

2 @tvdstorm #IPASpringDays

3 Some facts Robert Glass, Facts and fallacies of Software Engineering, Addison-Wesley 2003

4 Reuse?

5 Reuse?

6 Reuse?

7 Reuse? Domain Specific Languages!

8 Domain specific languages

9 Domain specific languages

10 Observations Special purpose Restricted Concise Expert usage Formalized Textual or graphic or combination

11 General purpose languages (GPLs)

12 DSLs

13 Programming Domain Programmer Code

14 Programming Domain Programmer Code

15 Programming is lossy encoding obfuscating encrypting dispersing tangling distorting

16 Time consuming

17 Change is error-prone

18 Cognitive distance?

19 Design reuse is hard

20 Design reuse

21 The problem a lot of code, low level code, characterized by lack of abstraction encoding domain knowledge and encoding design knowledge

22 Abstraction Pier and ocean Mondrian s Pier and Ocean

23 Modeling the domain domain analysis Ceci n est pas une vache

24 System families

25 Domain Specific Language formalized = notation capturing Cows variation points

26 Domain Specific Languages grammar, = template, metamodel sentence, = instance, model

27 Code generation Code generator Code

28 APT: numerical control from the 50s (!)

29 LaTeX: document preparation

30 VHDL: hardware description

31 Risla: financial products product LOAN Time to market went down from 3 months to 3 weeks. Developed at CWI declaration contract data PAMOUNT : amount %% Principal Amount STARTDATE : date %% Starting date MATURDATE : date %% Maturity data INTRATE : int-rate %% Interest rate RDMLIST := [] : cashflow-list %% List of redemptions. information PAF : cashflow-list IAF : cashflow-list %% Principal Amount Flow %% Interest Amount Flow registration %% Register one redemption. RDM(AMOUNT : amount, DATE : date)

32 Rascal module lang::daspec::syntax::datum extend lang::daspec::syntax::lexical; extend lang::daspec::syntax::expr; Developed at CWI start syntax Datum datum: "gegeven" LongName name "[" Key key "]" ":" Type type ; "{" Section* body "}" syntax Section definition: "definitie" "{" Text text explanation: "toelichting" "{" Text text algorithm: "bereken" "{" Text text "}" page: "pagina" Nat source: "bron" "{" Text text "}" condition: "conditie" Label? label Exp exp formula: "bereken" Label? label Exp exp usedby: "gebruikt" "in" {Key ","}+ keys shorthand: "alias" Id lowerbound: "minimaal" "voorkomen" Int upperbound: "maximaal" "voorkomen" Int

33 Tax-spec gegeven periode woonachtig in woonland [117300]: DDMMEEJJ { alias EPerWoonland minimaal voorkomen 0 maximaal voorkomen 1 pagina 60 definitie { De periode in het belastingjaar waarin de aangever in een land woont. } conditie Als is.gevuld([117300]<periode woonachtig in woonland>) dan is.gevuld([ ]<aangiftesoort DA..IBPV Buitenl>) conditie [ B]<periode woonachtig in woonland.begindatum> <= [ E]<periode woonachtig in woonland.einddatum> }

34 Other examples Make: software building Dot: graph visualization SQL: relational querying SWUL: Swing GUIs HTML: hypertext CLOPS: commandline options GNUPlot: plotting R: statistics CML: kernel config Lex: lexical scanning Excel: spreadheets Rascal: meta-programming...

35 DSL Implementation

36 DSL Code cow spots false color orange end cow spots true color brown end cow spots true color black end

37 Embedding new Cow().spots(false).color("orange").end(); cow spots false color orange end (cow spots #t color 'orange) cow do spots false color :orange end

38 Advantages No need to write/maintain parser Host language available if needed Use of existing tools (IDE) etc.

39 Drawbacks Restricted to host language Less static checking Fewer opportunities for optimization

40 Syntax definition Repetition Cow ::= cow Prop* end Prop ::= horns Bool spots Bool color Color Bool ::= true false Color ::= black brown literal orange alternative

41 Parser generation yacc bison Grammar Cow ::= cow Prop* end Prop ::= horns Bool spots Bool color Color Bool ::= true false Color ::= black brown orange lemon javacup antlr Rats! Parser parse.exe

42 Parsing Cow cow spots false color orange end parse Prop Prop* Prop spots Bool color Color whitespace omitted false orange

43 Abstract syntax tree (AST) Cow Cow Prop* implode spots color Prop Prop false orange spots Bool color Color false orange

44 Semantic analysis Constraint: Cow spots color check true orange

45 Code generation Cow spots color generate false orange

46 Tools Parser generators Attribute grammar systems Transformation systems Language workbenches Rascal Ensō

47 Upcoming DSL highlights Jurgen Vinju: Rascal Jeroen van den Bos: Derric Eelco Visser: Spoofax Hans Vangheluwe: evolution Tony Sloane: embedding

48 Thank you

Abstract Syntax Sucks!

Abstract Syntax Sucks! Abstract Syntax Sucks! deconstruction (?), allegory (?),... Tijs van der Storm Alfred Aho (contributed to lex) Alfred Aho (contributed to lex) Scanners suck! Jurgen Vinju Deconstruction Turn hierarchies

More information

An Evaluation of Domain-Specific Language Technologies for Code Generation

An Evaluation of Domain-Specific Language Technologies for Code Generation An Evaluation of Domain-Specific Language Technologies for Code Generation Christian Schmitt, Sebastian Kuckuk, Harald Köstler, Frank Hannig, Jürgen Teich Hardware/Software Co-Design, System Simulation,

More information

Rascal Tutorial. Tijs van der Storm Wednesday, May 23, 12

Rascal Tutorial. Tijs van der Storm Wednesday, May 23, 12 Rascal Tutorial Tijs van der Storm storm@cwi.nl / @tvdstorm About me Researcher at Centrum Wiskunde & Informatica (CWI), Amsterdam, NL Co-designer of Rascal Teacher at Universiteit van Amsterdam (UvA)

More information

Syntax and Grammars 1 / 21

Syntax and Grammars 1 / 21 Syntax and Grammars 1 / 21 Outline What is a language? Abstract syntax and grammars Abstract syntax vs. concrete syntax Encoding grammars as Haskell data types What is a language? 2 / 21 What is a language?

More information

CSSE 490 Model-Based Software Engineering: Domain Specific Language Introduction

CSSE 490 Model-Based Software Engineering: Domain Specific Language Introduction CSSE 490 Model-Based Software Engineering: Domain Specific Language Introduction Shawn Bohner Office: Moench Room F212 Phone: (812) 877-8685 Email: bohner@rose-hulman.edu Plan for the Day Introduction

More information

Rascal: Language Technology for Model-Driven Engineering

Rascal: Language Technology for Model-Driven Engineering Rascal: Language Technology for Model-Driven Engineering Jeroen van den Bos CWI & NFI jeroen@infuse.org P.R. Griffioen CWI p.r.griffioen@cwi.nl Tijs van der Storm CWI storm@cwi.nl Abstract Model-Driven

More information

... is a Programming Environment (PE)?... is Generic Language Technology (GLT)?

... is a Programming Environment (PE)?... is Generic Language Technology (GLT)? Introduction to Generic Language Technology Today Mark van den Brand Paul Klint Jurgen Vinju Tools for software analysis and manipulation Programming language independent (parametric) The story is from

More information

Domain-Specific Languages for Digital Forensics

Domain-Specific Languages for Digital Forensics Domain-Specific Languages for Digital Forensics Jeroen van den Bos Centrum Wiskunde & Informatica Nederlands Forensisch Instituut jeroen@infuse.org Abstract. Due to strict deadlines, custom requirements

More information

Language Extension and Composition with Language Workbenches

Language Extension and Composition with Language Workbenches Language Extension and Composition with Language Workbenches Eelco Visser TU Delft E.Visser@tudelft.nl Markus Voelter Independent/itemis voelter@acm.org Different Worlds Programming Tools!= Modeling Tools

More information

Domain-Specific Languages for Program Analysis

Domain-Specific Languages for Program Analysis Domain-Specific Languages for Program Analysis Mark Hills OOPSLE 2015: Open and Original Problems in Software Language Engineering March 6, 2014 Montreal, Canada http://www.rascal-mpl.org 1 Overview A

More information

SERG. Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT

SERG. Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Delft University of Technology Software Engineering Research Group Technical Report Series Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Karl Trygve

More information

The TTC 2014 Movie Database Case: Rascal Solution

The TTC 2014 Movie Database Case: Rascal Solution The TTC 2014 Movie Database Case: Rascal Solution Pablo Inostroza Tijs van der Storm Centrum Wiskunde & Informatica (CWI) Amsterdam, The Netherlands pvaldera@cwi.nl Centrum Wiskunde & Informatica (CWI)

More information

Book. Signatures and grammars. Signatures and grammars. Syntaxes. The 4-layer architecture

Book. Signatures and grammars. Signatures and grammars. Syntaxes. The 4-layer architecture Book Generic Language g Technology (2IS15) Syntaxes Software Language g Engineering g by Anneke Kleppe (Addison Wesley) Prof.dr. Mark van den Brand / Faculteit Wiskunde en Informatica 13-9-2011 PAGE 1

More information

Grammars and Parsing. Paul Klint. Grammars and Parsing

Grammars and Parsing. Paul Klint. Grammars and Parsing Paul Klint Grammars and Languages are one of the most established areas of Natural Language Processing and Computer Science 2 N. Chomsky, Aspects of the theory of syntax, 1965 3 A Language...... is a (possibly

More information

M : an Open Model for Measuring Code Artifacts

M : an Open Model for Measuring Code Artifacts Software Analysis And Transformation 3 M : an Open Model for Measuring Code Artifacts Anastasia Izmaylova, Paul Klint, Ashim Shahi, Jurgen Vinju SWAT Centrum Wiskunde & Informatica (CWI) OSSMETER: FP7

More information

EASY Programming with Rascal

EASY Programming with Rascal EASY Programming with Rascal Paul Klint Joint work with Emilie Balland, Bas Basten, Jeroen van den Bos, Mark Hills, Arnold Lankamp, Bert Lisser, Tijs van der Storm, Jurgen Vinju Opening BLDL, November

More information

arxiv: v1 [cs.pl] 21 Jan 2013

arxiv: v1 [cs.pl] 21 Jan 2013 A DSL for Mapping Abstract Syntax Models to Concrete Syntax Models in ModelCC Luis Quesada, Fernando Berzal, and Juan-Carlos Cubero Department Computer Science and Artificial Intelligence, CITIC, University

More information

DERRIC. Model-Driven Engineering in Digital Forensics. Jeroen van den Bos

DERRIC. Model-Driven Engineering in Digital Forensics. Jeroen van den Bos DERRIC Model-Driven Engineering in Digital Forensics Jeroen van den Bos jeroen@infuse.org DERRIC Model-Driven Engineering in Digital Forensics Experience: Jeroen van den Bos jeroen@infuse.org 1998: software

More information

Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT

Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Karl Trygve Kalleberg 1 Department of Informatics, University of Bergen, P.O. Box 7800, N-5020 BERGEN,

More information

Introduction to Dependable Systems: Meta-modeling and modeldriven

Introduction to Dependable Systems: Meta-modeling and modeldriven Introduction to Dependable Systems: Meta-modeling and modeldriven development http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 3 Software development Automated software

More information

The TTC 2014 FIXML Case: Rascal Solution

The TTC 2014 FIXML Case: Rascal Solution The TTC 2014 FIXML Case: Rascal Solution Pablo Inostroza Tijs van der Storm Centrum Wiskunde & Informatica (CWI) Amsterdam, The Netherlands pvaldera@cwi.nl Centrum Wiskunde & Informatica (CWI) Amsterdam,

More information

The Rascal Approach to Code in Prose, Computed Properties, and Language Extension

The Rascal Approach to Code in Prose, Computed Properties, and Language Extension The Rascal Approach to Code in Prose, Computed Properties, and Language Extension Solutions to the Language Workbench Challenge 2016 Pablo Inostroza Centrum Wiskunde & Informatica, The Netherlands pvaldera@cwi.nl

More information

Structure of a compiler. More detailed overview of compiler front end. Today we ll take a quick look at typical parts of a compiler.

Structure of a compiler. More detailed overview of compiler front end. Today we ll take a quick look at typical parts of a compiler. More detailed overview of compiler front end Structure of a compiler Today we ll take a quick look at typical parts of a compiler. This is to give a feeling for the overall structure. source program lexical

More information

Rascal: A DSL for SCAM

Rascal: A DSL for SCAM Rascal: A DSL for SCAM Jurgen Vinju Tijs van der Storm Paul Klint Amsterdam, The Netherlands Hall of fame Bob Fuhrer Emilie Balland Arnold Lankamp Bas Basten The complexity of bridging an analysis tool

More information

Trustworthy Compilers

Trustworthy Compilers Trustworthy Compilers Vladimir O. Safonov St. Petersburg University )WILEY A John Wiley &> Sons, Inc., Pablication Contents Preface Acknowledgments xüi xix 1. Introduction 1 1.1. The Concept of a Trustworthy

More information

Domain-Specific Languages for Composable Editor Plugins

Domain-Specific Languages for Composable Editor Plugins Domain-Specific Languages for Composable Editor Plugins LDTA 2009, York, UK Lennart Kats (me), Delft University of Technology Karl Trygve Kalleberg, University of Bergen Eelco Visser, Delft University

More information

UPTR - a simple parse tree representation format

UPTR - a simple parse tree representation format UPTR - a simple parse tree representation format Jurgen Vinju Software Transformation Systems October 22, 2006 Quality of Software Transformation Systems Some Questions on Parsing Two pragmatical steps

More information

Chapter 4 - Semantic Analysis. June 2, 2015

Chapter 4 - Semantic Analysis. June 2, 2015 Chapter 4 - Semantic Analysis June 2, 2015 The role of the semantic analyzer Compilers use semantic analysis to enforce the static semantic rules of a language It is hard to generalize the exact boundaries

More information

Syntax-Directed Translation. Lecture 14

Syntax-Directed Translation. Lecture 14 Syntax-Directed Translation Lecture 14 (adapted from slides by R. Bodik) 9/27/2006 Prof. Hilfinger, Lecture 14 1 Motivation: parser as a translator syntax-directed translation stream of tokens parser ASTs,

More information

CPS 506 Comparative Programming Languages. Syntax Specification

CPS 506 Comparative Programming Languages. Syntax Specification CPS 506 Comparative Programming Languages Syntax Specification Compiling Process Steps Program Lexical Analysis Convert characters into a stream of tokens Lexical Analysis Syntactic Analysis Send tokens

More information

Introducing Rascal for meta programming and Eyeballing the Cyclomatic Complexity Metric

Introducing Rascal for meta programming and Eyeballing the Cyclomatic Complexity Metric SEN1:SWAT ATEAMS Introducing Rascal for meta programming and Eyeballing the Cyclomatic Complexity Metric Jurgen Vinju @RMOD, INRIA Lille May 11th 2012 CWI SWAT INRIA ATEAMS SoftWare Analysis and Transformation

More information

Automatized Generating of GUIs for Domain-Specific Languages

Automatized Generating of GUIs for Domain-Specific Languages Automatized Generating of GUIs for Domain-Specific Languages Michaela Bačíková, Dominik Lakatoš, and Milan Nosáľ Technical University of Košice, Letná 9, 04200 Košice, Slovakia, (michaela.bacikova, dominik.lakatos,

More information

Language engineering and Domain Specific Languages

Language engineering and Domain Specific Languages Language engineering and Domain Specific Languages Perdita Stevens School of Informatics University of Edinburgh Plan 1. Defining languages 2. General purpose languages vs domain specific languages 3.

More information

EDAN65: Compilers, Lecture 06 A LR parsing. Görel Hedin Revised:

EDAN65: Compilers, Lecture 06 A LR parsing. Görel Hedin Revised: EDAN65: Compilers, Lecture 06 A LR parsing Görel Hedin Revised: 2017-09-11 This lecture Regular expressions Context-free grammar Attribute grammar Lexical analyzer (scanner) Syntactic analyzer (parser)

More information

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1 Defining Program Syntax Chapter Two Modern Programming Languages, 2nd ed. 1 Syntax And Semantics Programming language syntax: how programs look, their form and structure Syntax is defined using a kind

More information

COP 3402 Systems Software Syntax Analysis (Parser)

COP 3402 Systems Software Syntax Analysis (Parser) COP 3402 Systems Software Syntax Analysis (Parser) Syntax Analysis 1 Outline 1. Definition of Parsing 2. Context Free Grammars 3. Ambiguous/Unambiguous Grammars Syntax Analysis 2 Lexical and Syntax Analysis

More information

Developing Web-Based Applications Using Model Driven Architecture and Domain Specific Languages

Developing Web-Based Applications Using Model Driven Architecture and Domain Specific Languages Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 287 293. Developing Web-Based Applications Using Model Driven Architecture and Domain

More information

Domain-Specific Languages versus Object-Oriented Frameworks: A Financial Engineering Case Study. 1 Introduction. A. van Deursen

Domain-Specific Languages versus Object-Oriented Frameworks: A Financial Engineering Case Study. 1 Introduction. A. van Deursen A. van Deursen Domain-Specific Languages versus Object-Oriented Frameworks: A Financial Engineering Case Study Abstract The use of a domain-specific language can help to develop readable and maintainable

More information

Relating Meta modelling and Concrete Textual Syntax

Relating Meta modelling and Concrete Textual Syntax Relating Meta modelling and Concrete Textual Syntax Francisco Pérez Andrés (Escuela Politécnica Superior, Ingeniería Informática, Universidad Autónoma de Madrid) MSDL 2006 Summer Presentations Monday 28

More information

ABAP DSL Workbench SAP TechED 2016

ABAP DSL Workbench SAP TechED 2016 ABAP DSL Workbench SAP TechED 2016 Barcelona, November 2016-0 - Hello. Hello. Example Asia Diner Yes? Number 77. Take away? No. Hello. Hello. Hello. Hello. As always? Yes. As always? Yes. Where are the

More information

Better Extensibility through Modular Syntax. Robert Grimm New York University

Better Extensibility through Modular Syntax. Robert Grimm New York University Better Extensibility through Modular Syntax Robert Grimm New York University Syntax Matters More complex syntactic specifications Extensions to existing programming languages Transactions, event-based

More information

Code Transformation by Direct Transformation of ASTs

Code Transformation by Direct Transformation of ASTs Code Transformation by Direct Transformation of ASTs M. Rizun Lviv National University of Ivan Franko, RMoD team, Inria Lille Nord Europe mrizun@gmail.com J.-C. Bach S. Ducasse RMoD team, Inria Lille Nord

More information

Plan. Language engineering and Domain Specific Languages. Language designer defines syntax. How to define language

Plan. Language engineering and Domain Specific Languages. Language designer defines syntax. How to define language Plan Language engineering and Domain Specific Languages Perdita Stevens School of Informatics University of Edinburgh 1. Defining languages 2. General purpose languages vs domain specific languages 3.

More information

yacc, lex Source Code (C) compile Executable Parser Test on HOL Examples, TPTP Library, and TSTP Library

yacc, lex Source Code (C) compile Executable Parser Test on HOL Examples, TPTP Library, and TSTP Library Extending the TPTP Language to Higher-Order Logic with Automated Parser Generation Allen Van Gelder 1 and Geoff Sutcliffe 2 1 University of California at Santa Cruz, USA, http://www.cse.ucsc.edu/~avg 2

More information

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information

Syntax. A. Bellaachia Page: 1

Syntax. A. Bellaachia Page: 1 Syntax 1. Objectives & Definitions... 2 2. Definitions... 3 3. Lexical Rules... 4 4. BNF: Formal Syntactic rules... 6 5. Syntax Diagrams... 9 6. EBNF: Extended BNF... 10 7. Example:... 11 8. BNF Statement

More information

Model driven Engineering & Model driven Architecture

Model driven Engineering & Model driven Architecture Model driven Engineering & Model driven Architecture Prof. Dr. Mark van den Brand Software Engineering and Technology Faculteit Wiskunde en Informatica Technische Universiteit Eindhoven Model driven software

More information

Undergraduate Compilers in a Day

Undergraduate Compilers in a Day Question of the Day Backpatching o.foo(); In Java, the address of foo() is often not known until runtime (due to dynamic class loading), so the method call requires a table lookup. After the first execution

More information

Streamlining Control-Flow Graph Construction with DCFlow

Streamlining Control-Flow Graph Construction with DCFlow Streamlining Control-Flow Graph Construction with DCFlow Mark Hills 7th International Conference on Software Language Engineering (SLE 2014) September 15-16, 2014 Västerås, Sweden http://www.rascal-mpl.org

More information

An Oz Subset. 1 Microsyntax for An Oz Subset. Notational Conventions. COP 4020 Programming Languages 1 January 17, 2012

An Oz Subset. 1 Microsyntax for An Oz Subset. Notational Conventions. COP 4020 Programming Languages 1 January 17, 2012 COP 4020 Programming Languages 1 January 17, 2012 An Oz Subset This document describes a subset of Oz [VH04] that is designed to be slightly larger than the declarative kernel language of chapter 2 (of

More information

Semantic Modularization Techniques in Practice: A TAPL case study

Semantic Modularization Techniques in Practice: A TAPL case study 1 Semantic Modularization Techniques in Practice: A TAPL case study Bruno C. d. S. Oliveira Joint work with Weixin Zhang, Haoyuan Zhang and Huang Li July 17, 2017 Text 2 EVF: An Extensible and Expressive

More information

Leveraging Model-Driven Engineering Techniques in Optimizing Compiler Research

Leveraging Model-Driven Engineering Techniques in Optimizing Compiler Research Leveraging Model-Driven Engineering Techniques in Optimizing Compiler Research Tomofumi Yuki, Sanjay Rajopadhye, Robert France Colorado State University Antoine Floch, Clement Guy, Steven Derrien, Benoit

More information

Domain-Specific. Languages. Martin Fowler. AAddison-Wesley. Sydney Tokyo. With Rebecca Parsons

Domain-Specific. Languages. Martin Fowler. AAddison-Wesley. Sydney Tokyo. With Rebecca Parsons Domain-Specific Languages Martin Fowler With Rebecca Parsons AAddison-Wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Sydney Tokyo Singapore

More information

CSCE 531 Spring 2009 Final Exam

CSCE 531 Spring 2009 Final Exam CSCE 531 Spring 2009 Final Exam Do all problems. Write your solutions on the paper provided. This test is open book, open notes, but no electronic devices. For your own sake, please read all problems before

More information

Automatic Scanning and Parsing using LEX and YACC

Automatic Scanning and Parsing using LEX and YACC Available Online at www.ijcsmc.com International Journal of Computer Science and Mobile Computing A Monthly Journal of Computer Science and Information Technology ISSN 2320 088X IMPACT FACTOR: 6.017 IJCSMC,

More information

CS101 Introduction to Programming Languages and Compilers

CS101 Introduction to Programming Languages and Compilers CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights

More information

The Syntax Definition Formalism SDF

The Syntax Definition Formalism SDF Mark van den Brand Paul Klint Jurgen Vinju 2007-10-22 17:18:09 +0200 (Mon, 22 Oct 2007) Table of Contents An Introduction to SDF... 2 Why use SDF?... 2 How to use SDF... 4 Learning more... 4 This document...

More information

Modelling Languages: (mostly) Concrete (Visual) Syntax. Hans Vangheluwe

Modelling Languages: (mostly) Concrete (Visual) Syntax. Hans Vangheluwe Modelling Languages: (mostly) Concrete (Visual) Syntax Hans Vangheluwe Antwerp 26 August 2014 2 3 4 5 6 Causal Block Diagrams (syntax) 7 Causal Block Diagrams (semantics) 8 Operational Semantics 9 Causal

More information

DSL vs. Library API Shootout

DSL vs. Library API Shootout DSL vs. Library API Shootout Rich Unger Salesforce.com Jaroslav Tulach Oracle Agenda What do we mean by DSL? What do we mean by library? When is it good to use a DSL? When is it a bad idea? Evolution Versioning

More information

Model-Driven Engineering (MDE) Lecture 1: Metamodels and Xtext Regina Hebig, Thorsten Berger

Model-Driven Engineering (MDE) Lecture 1: Metamodels and Xtext Regina Hebig, Thorsten Berger Model-Driven Engineering (MDE) Lecture 1: Metamodels and Xtext Regina Hebig, Thorsten Berger Reuses some material from: Andrzej Wasowski, Model-Driven Development, ITU Copenhagen Where I am from WASP 2017

More information

Compositional Model Based Software Development

Compositional Model Based Software Development Compositional Model Based Software Development Prof. Dr. Bernhard Rumpe http://www.se-rwth.de/ Seite 2 Our Working Groups and Topics Automotive / Robotics Autonomous driving Functional architecture Variability

More information

Yacc: A Syntactic Analysers Generator

Yacc: A Syntactic Analysers Generator Yacc: A Syntactic Analysers Generator Compiler-Construction Tools The compiler writer uses specialised tools (in addition to those normally used for software development) that produce components that can

More information

Chapter 4. Lexical and Syntax Analysis

Chapter 4. Lexical and Syntax Analysis Chapter 4 Lexical and Syntax Analysis Chapter 4 Topics Introduction Lexical Analysis The Parsing Problem Recursive-Descent Parsing Bottom-Up Parsing Copyright 2012 Addison-Wesley. All rights reserved.

More information

CS Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0

CS Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0 SYL-410-2014C CS 410 - Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0 Course location: 107 ERB, Evansdale Campus Course times: Tuesdays and Thursdays, 2:00-3:15 Course

More information

Specifying Syntax. An English Grammar. Components of a Grammar. Language Specification. Types of Grammars. 1. Terminal symbols or terminals, Σ

Specifying Syntax. An English Grammar. Components of a Grammar. Language Specification. Types of Grammars. 1. Terminal symbols or terminals, Σ Specifying Syntax Language Specification Components of a Grammar 1. Terminal symbols or terminals, Σ Syntax Form of phrases Physical arrangement of symbols 2. Nonterminal symbols or syntactic categories,

More information

Talking bout Code Generation

Talking bout Code Generation Talking bout Code Generation Nicola Musatti Nicola.Musatti@gmail.com ACCU Conference 2008 I would rather write programs to help me write programs than write programs. Richard L. Sites In our job we re

More information

On the Impact of DSL Tools on the Maintainability of Language Implementations

On the Impact of DSL Tools on the Maintainability of Language Implementations On the Impact of DSL Tools on the Maintainability of Language Implementations Paul Klint Centrum Wiskunde & Informatica Science Park 123 Amsterdam, The Netherlands paulk@cwi.nl Tijs van der Storm Centrum

More information

Introduction. Compilers and Interpreters

Introduction. Compilers and Interpreters Introduction Chapter 1 Slides adapted from : Robert van Engelen, Florida State University Alex Aiken and Sean Treichler, Stanford University Compilers and Interpreters Compilation Translation of a program

More information

Let s build. like they build. Markus Völter Bernd Kolb

Let s build. like they build. Markus Völter Bernd Kolb Let s build like they build Markus Völter voelter@acm.org www.voelter.de @markusvoelter Bernd Kolb kolb@itemis.de www.itemis.de @berndkolb B 0 Motivation Examples 1 M Healthcare Context & Motivation Mobile

More information

Introduction to OpenArchitectureWare

Introduction to OpenArchitectureWare Introduction to OpenArchitectureWare Dr. Neil Loughran Neil.Loughran@sintef.no 20 th April 2009 ICT 1 Objective To give some insights into an alternative model transformation approach i.e. OpenArchitectureWare

More information

Type Inference Systems. Type Judgments. Deriving a Type Judgment. Deriving a Judgment. Hypothetical Type Judgments CS412/CS413

Type Inference Systems. Type Judgments. Deriving a Type Judgment. Deriving a Judgment. Hypothetical Type Judgments CS412/CS413 Type Inference Systems CS412/CS413 Introduction to Compilers Tim Teitelbaum Type inference systems define types for all legal programs in a language Type inference systems are to type-checking: As regular

More information

Enabling PHP Software Engineering Research in Rascal

Enabling PHP Software Engineering Research in Rascal Enabling PHP Software Engineering Research in Rascal Mark Hills and Paul Klint WASDeTT July 1, 2013 Montpellier, France http://www.rascal-mpl.org Why look at PHP applications? 2 Why look at PHP applications?

More information

Syntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing

Syntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing Syntax/semantics Program program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing Meta-models 8/27/10 1 Program program execution Syntax Semantics

More information

Robert Grimm New York University

Robert Grimm New York University xtc Towards extensible C Robert Grimm New York University The Problem Complexity of modern systems is staggering Increasingly, a seamless, global computing environment System builders continue to use C

More information

CSC 467 Lecture 3: Regular Expressions

CSC 467 Lecture 3: Regular Expressions CSC 467 Lecture 3: Regular Expressions Recall How we build a lexer by hand o Use fgetc/mmap to read input o Use a big switch to match patterns Homework exercise static TokenKind identifier( TokenKind token

More information

Renaud Durlin. May 16, 2007

Renaud Durlin. May 16, 2007 A comparison of different approaches EPITA Research and Development Laboratory (LRDE) http://www.lrde.epita.fr May 16, 2007 1 / 25 1 2 3 4 5 2 / 25 1 2 3 4 5 3 / 25 Goal Transformers:

More information

of Grammarware by Grammar Transformation

of Grammarware by Grammar Transformation Maintenance and Evolution of Grammarware by Grammar Transformation IPA Spring Days on Model-Driven Software Engineering Vadim Zaytsev, SWAT, CWI 2012 Grammarware Language: Java import types.*; import

More information

A Domain-Specific Language for Cross- Platform Smartphone Application Development

A Domain-Specific Language for Cross- Platform Smartphone Application Development Master s Thesis A Domain-Specific Language for Cross- Platform Smartphone Application Development Kristoffer Rosén Department of Computer Science Faculty of Engineering LTH Lund University, 2013 ISSN 1650-2884

More information

Crafting a Compiler with C (II) Compiler V. S. Interpreter

Crafting a Compiler with C (II) Compiler V. S. Interpreter Crafting a Compiler with C (II) 資科系 林偉川 Compiler V S Interpreter Compilation - Translate high-level program to machine code Lexical Analyzer, Syntax Analyzer, Intermediate code generator(semantics Analyzer),

More information

Lecture 09: Data Abstraction ++ Parsing is the process of translating a sequence of characters (a string) into an abstract syntax tree.

Lecture 09: Data Abstraction ++ Parsing is the process of translating a sequence of characters (a string) into an abstract syntax tree. Lecture 09: Data Abstraction ++ Parsing Parsing is the process of translating a sequence of characters (a string) into an abstract syntax tree. program text Parser AST Processor Compilers (and some interpreters)

More information

ALE Agile Language Engineering

ALE Agile Language Engineering ALE Agile Language Engineering (2017 2019) Thomas Degueule CWI Inria Workshop September 19 20, 2017 CWI, Amsterdam http://gemoc.org/ale/ Context Software intensive systems CWI-Inria Workshop Agile Language

More information

Software Development Time. Compilers in Real Life. Lessons from Real Life. Software Maintenance. Solutions for Real Life. Celebrity Endorsements

Software Development Time. Compilers in Real Life. Lessons from Real Life. Software Maintenance. Solutions for Real Life. Celebrity Endorsements Software Development Time Compilers in Real Life Dave Mandelin 2 Dec 2004 From The Mythical Man-Month by Fred Brooks Design 1/3 1/3 Design Code 1/6 1/6 Code Test 1/2 1/2 Test Can we do more error checking

More information

CS Lecture 2. The Front End. Lecture 2 Lexical Analysis

CS Lecture 2. The Front End. Lecture 2 Lexical Analysis CS 1622 Lecture 2 Lexical Analysis CS 1622 Lecture 2 1 Lecture 2 Review of last lecture and finish up overview The first compiler phase: lexical analysis Reading: Chapter 2 in text (by 1/18) CS 1622 Lecture

More information

COMPILERS AND INTERPRETERS Lesson 4 TDDD16

COMPILERS AND INTERPRETERS Lesson 4 TDDD16 COMPILERS AND INTERPRETERS Lesson 4 TDDD16 Kristian Stavåker (kristian.stavaker@liu.se) Department of Computer and Information Science Linköping University TODAY Introduction to the Bison parser generator

More information

Translation of a Subset of RSL into Java p.1/35

Translation of a Subset of RSL into Java p.1/35 Translation of a Subset of RSL into Java Ulrik Hjarnaa Supervisors: Anne Elisabeth Haxthausen Hans Bruun (DTU) (DTU) Computer Science and Engineering Informatics and Mathematical Modelling Technical University

More information

Scripting a Refactoring with Rascal and Eclipse. Mark Hills, Paul Klint, & Jurgen J. Vinju

Scripting a Refactoring with Rascal and Eclipse.  Mark Hills, Paul Klint, & Jurgen J. Vinju Scripting a Refactoring with Rascal and Eclipse Mark Hills, Paul Klint, & Jurgen J. Vinju Fifth Workshop on Refactoring Tools 2012 June 1, 2012 Rapperswil, Switzerland http://www.rascal-mpl.org Overview

More information

Origin Tracking + Text Differencing = Textual Model Differencing

Origin Tracking + Text Differencing = Textual Model Differencing Origin Tracking + Text Differencing = Textual Model Differencing Riemer van Rozen 1(B) and Tijs van der Storm 2,3 1 Amsterdam University of Applied Sciences, Amsterdam, The Netherlands rozen@cwi.nl 2 Centrum

More information

Software Factories Application within the ASE5 project

Software Factories Application within the ASE5 project 22 nd - 24 th October 2013 Software Factories Application within the ASE5 project Nieves Salor Moral (n.salor_moral@vitrocisetbelgium.com) ESTEC, Noordwijk, The Netherlands Agenda Software Factories Decision

More information

TDDD55- Compilers and Interpreters Lesson 3

TDDD55- Compilers and Interpreters Lesson 3 TDDD55- Compilers and Interpreters Lesson 3 Zeinab Ganjei (zeinab.ganjei@liu.se) Department of Computer and Information Science Linköping University 1. Grammars and Top-Down Parsing Some grammar rules

More information

Safely-Composable Type-Specific Languages

Safely-Composable Type-Specific Languages Safely-Composable Type-Specific Languages Cyrus Omar Darya Kurilova Ligia Nistor Benjamin Chung Alex Potanin (Victoria University of Wellington) Jonathan Aldrich School of Computer Science Carnegie Mellon

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

Lecture 12: Conditional Expressions and Local Binding

Lecture 12: Conditional Expressions and Local Binding Lecture 12: Conditional Expressions and Local Binding Introduction Corresponds to EOPL 3.3-3.4 Please review Version-1 interpreter to make sure that you understand how it works Now we will extend the basic

More information

SERG. The Spoofax Language Workbench Rules for Declarative Specification of Languages and IDEs

SERG. The Spoofax Language Workbench Rules for Declarative Specification of Languages and IDEs Delft University of Technology Software Engineering Research Group Technical Report Series The Spoofax Language Workbench Rules for Declarative Specification of Languages and IDEs Lennart C. L. Kats, Eelco

More information

Building Compilers with Phoenix

Building Compilers with Phoenix Building Compilers with Phoenix Parser Generators: ANTLR History of ANTLR ANother Tool for Language Recognition Terence Parr's dissertation: Obtaining Practical Variants of LL(k) and LR(k) for k > 1 PCCTS:

More information

ECE251 Midterm practice questions, Fall 2010

ECE251 Midterm practice questions, Fall 2010 ECE251 Midterm practice questions, Fall 2010 Patrick Lam October 20, 2010 Bootstrapping In particular, say you have a compiler from C to Pascal which runs on x86, and you want to write a self-hosting Java

More information

A little History Domain Specific Languages Examples Tools Benefits A more theoretical View Programming and Modeling The LWES Project Bonus: Best

A little History Domain Specific Languages Examples Tools Benefits A more theoretical View Programming and Modeling The LWES Project Bonus: Best Domain Specific Languages Markus Voelter Independent/itemis voelter@acm.org A little History Domain Specific Languages Examples Tools Benefits A more theoretical View Programming and Modeling The LWES

More information

Programming Modeling Two Worlds? Programmierung Modellierung Zwei Welten? und. and. Markus Voelter Independent/itemis

Programming Modeling Two Worlds? Programmierung Modellierung Zwei Welten? und. and. Markus Voelter Independent/itemis und Programmierung Modellierung Zwei Welten? and Modeling Two Worlds? Markus Voelter Independent/itemis voelter@acm.org Markus Voelter Independent/itemis voelter@acm.org 1 Languages C# Erlang C++ Python

More information

A program that performs lexical analysis may be termed a lexer, tokenizer, or scanner, though scanner is also a term for the first stage of a lexer.

A program that performs lexical analysis may be termed a lexer, tokenizer, or scanner, though scanner is also a term for the first stage of a lexer. Compiler Design A compiler is computer software that transforms computer code written in one programming language (the source language) into another programming language (the target language). The name

More information

The Environment Model

The Environment Model The Environment Model Prof. Clarkson Fall 2017 Today s music: Selections from Doctor Who soundtracks by Murray Gold Review Previously in 3110: Interpreters: ASTs, evaluation, parsing Formal syntax: BNF

More information

Software Clone Detection. Kevin Tang Mar. 29, 2012

Software Clone Detection. Kevin Tang Mar. 29, 2012 Software Clone Detection Kevin Tang Mar. 29, 2012 Software Clone Detection Introduction Reasons for Code Duplication Drawbacks of Code Duplication Clone Definitions in the Literature Detection Techniques

More information