The science, tools, strategies, patterns and tools behind the creation and processing of languages

Writing a browser based editor using Monaco and ANTLR

  This is a tutorial on creating a browser-based editor for a new language we are going to define. We are going to use two components: Monaco: it is a great browser-based editor (or a web editor: as you prefer to call it) ANTLR: it is the parser generator we love to use to build […]

Pyleri: Parsing with Ease

Pyleri Tutorial: Parsing with Ease

Welcome to a tutorial on Pyleri, aka Python Left-Right Parser, a simple parsing tool. To use it when you need something more than a regular expression, but less than a full parser generator. In this tutorial we are going to show you how to use the tool and the basics of parsing. Why Learning Pyleri? […]

Lessons learned working decades with Graphical DSLs: Interview with Juha-Pekka Tolvanen

Why this interview? Juha-Pekka Tolvanen is one of the veterans of the DSL industry. There are not many persons in the world who has an experience comparable to his. This is why I really wanted to talk to him and ask him about the work he has been doing for the last years and what […]

How would I go about creating a programming language

How would I go about creating a programming language?

The title of this article reflects a question I hear over and over in forums or in emails I receive. I think all curious developers asked it at least once. It is normal to be fascinated by how programming languages work. Unfortunately, most answers we read are very academic or theoretical. Some others contain too […]

A complete tutorial on the Drools business rule engine

A complete tutorial on the Drools business rule engine

Business rules work very well to represent the logic for certain domains. They work well because they result intuitive and close to the way of thinking of many types of domain experts. The reason for that it is that they permit to decompose a large problem in single components. In this way the user has […]

Create a Transpiler: From VBA to VB.NET

Create a Transpiler: From VBA to VB.NET

In this tutorial we show how to create a transpiler, a software that can be useful in a few scenarios: if you have a large codebase in a language that does not fit your needs anymore, you still want to keep developing in one language, but you need better performance or need to run in […]

Developing Business Applications using Jetbrains MPS: interview with Daniel Stieger

Why this interview? This time I sat down with Daniel Stieger, who is the co-founder of a well known consulting company in the Language Engineering field. We met at at Jetbrains MPS meeting in Munich last year and our companies (ours Strumenta and his Modellwerkstatt) offer similar services. So for us it was a great opportunity […]

Bromium DSL: a DSL to test UI actions

Bromium DSL: a DSL to Test UI Actions

  I recently heard about Bromium, a Domain Specific Language (DSL) to describe user actions on a UI. Given I love everything regarding DSLs I contacted his author, Hristo Vrigazov, and chatted with him about: the DSL he has built, building editors using Xtext, working on an open-source project his visions on language engineering Enjoy! […]

Designing a DSL for accounting

Designing a DSL for accounting: use a DSL to describe taxes, pension contributions, and general financial calculations

Let’s see how we can design a DSL. Many readers appreciated the tutorials we wrote on implementing Domain Specific Languages but kept asking us resources on the designing of these languages. On this blog we have discussed already how to write parsers, interpreters, and compilers but we did not write much on what comes before, […]

Telosys: a Code Generation Tool

Telosys: a Code Generation Tool by Laurent Guerin

In this article we are going to examine Telosys, a code generation tool. We will do that by discussing with its author, Laurent Guerin. This will give us the possibility to learn also about his views on code generation and what its users have accomplished by using Telosys. Why are code generation tools relevant? Code […]