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

Getting started with the Whole Platform_ building grammars

Getting started with the Whole Platform: building grammars

I played for the first time with the Whole Platform a few years ago. It was one of the first Language Workbenches on which I put my eyes and I found it very fascinating. Then I was dragged into other things: whoever went through a PhD knows what I mean. Academic life has always a […]

ANTLR and the web: a simple example

ANTLR and the web: a simple example

ANTLR on the web: why? I started writing my first programs on MS-DOS. So I am very used to have my tools installed on my machine. However in 2016 the web is ubiquitous and so our languages could be needed also there. Possible scenarios: ANTLR also on the web: users could want to access and […]

ANTLR and Jetbrains MPS: Parsing files and display the AST using the tree notation

Itemis did it again: they just released a new very cool plugin for Jetbrains MPS. This one permits to define new tree editors. They look like this: In this post we are going to see: how to use ANTLR parsers inside MPS how to represent the parsed AST using the tree notation In particular we are […]

mps-bytecode: creating, loading, modifying, saving and executing JVM class files using Jetbrains MPS

mps-bytecode: creating, loading, modifying, saving and executing JVM class files using Jetbrains MPS

I recently created this project to edit JVM class-files inside Jetbrains MPS. Why? It was fun It is a great tool to learn about the JVM internals. Do you know what a frame is? How dynamic invoke works? Instead of generating Java code for my applications I could translate to mps-bytecode. More about this later. […]

What are good books on best practices of the design of domain-specific languages (DSL)?

What are good books on best practices of the design of domain-specific languages (DSL)?

Recently I answered this question on quora. I thought it could be useful to report the answer here, in case someone else is looking for books about Domain Specific Languages. What are good books on best practices of the design of domain-specific languages (DSL)? On one side you have internal DSLs: they are sort of […]

Tabular projections in Jetbrains MPS: let's start building an accounting system

Tabular projections in Jetbrains MPS: let’s start building an accounting system

Jetbrains MPS is an amazingly flexible tool which permits to use several kinds of projections. Today we are going to take a look at tables. What is Jetbrains MPS to me Jetbrains MPS is a Language Workbench: a system to design languages and supporting tools. This is one definition of MPS, but for me it […]

interview with jan köhnlein on typefox, dsls and xtext

Interview with Jan Köhnlein on TypeFox, DSLs and Xtext

Jan Köhnlein is a leading expert in DSL design and an Xtext committer. After obtaining his PhD from the Technical University of Hamburg he worked for companies very well known in the modeling field: Gentleware and Itemis. Recently he founded TypeFox together with Sven Efftinge and Moritz Eysholdt. I thought it was a good moment […]

Recognizing hand-written shapes programmatically: find the key points of a rectangle-1

Recognizing hand-written shapes programmatically: find the key points of a rectangle

A far-fetched goal I have is using sketching on a whiteboard as a way to define programs. I mean formal programs that you can execute. Of course through your sketches you would define programs in a high level domain specific language, for example describing a state machine or an Entity-Relationship diagram. To do so I […]

What if sketching on a whiteboard was a form of programming_

What if sketching on a whiteboard was a form of programming?

There are different possible notations for languages: textual and graphical are the two larger families. We can define graphical notations for formal languages. For example we can define a graphical notation to define state machines. A Domain Specific Language for state machines can be defined using JetBrains MPS. However the user would have to edit […]

Raising the level of abstraction_ what if we tried to do that bottom up_

Raising the level of abstraction: what if we tried to do that bottom up?

It is clear that software development is going in the direction of raising the level of abstraction since it was born. The reason is simple: we can juggle with so many concepts in our mind. If we are busy thinking about what we stored in the EAX register it is difficult to think about the […]