Lessons learned working decades with Graphical DSLs

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 … | Continue reading


@tomassetti.me | 1 year ago

A Peggy.js Tutorial and Comparison with ANTLR

In this tutorial, we’ll give an introduction to Peggy. As usual in our articles, all the code is on GitHub. | Continue reading


@tomassetti.me | 1 year ago

Improving the Performance of an Antlr Parser

Improving the performance of an ANTLR parser. The article will show you changes and improvements that you can make to improve the performance of your parser built with ANTLR. | Continue reading


@tomassetti.me | 2 years ago

Parsing in Python: Tools and Libraries

We present and compare all possible alternatives you can use to parse languages in Python. From libraries to parser generators, we present all options | Continue reading


@tomassetti.me | 2 years ago

Writing an Editor for PlantUML

Introduction In this tutorial, we’ll write an editor for a subset of PlantUML, as an extension to Visual Studio Code. However, we won’t start from scratch like most tutorials do (including our own on implementing high-quality code completion in VSCode with ANTLR and the Language … | Continue reading


@tomassetti.me | 2 years ago

Parsing in JavaScript: all the tools and libraries you can use

We present and compare all possible alternatives you can use to parse languages in JavaScript. From libraries to parser generators, we present all options | Continue reading


@tomassetti.me | 2 years ago

Interview with Matteo Mortari (RedHat) on process automation

Why this interview? Matteo Mortari is a Senior Software Engineer at Red Hat, where he contributes in Drools development and support for the DMN standard. In this interview, we try to find out more about his work in the process automation field. Here there are some quotes I found … | Continue reading


@tomassetti.me | 3 years ago

A tutorial on how to write a compiler using LLVM

In this article we will explore the implementation of a simple compiler able to translate the IBM RPG programming language into executable machine code for modern hardware. It is not a full featured RPG compiler: it implements a few basic constructs of the language but it is good … | Continue reading


@tomassetti.me | 3 years ago

Integrating Code Completion in Visual Studio Code with Language Server Protocol

Introduction Automatic code completion, also known as IntelliSense, is an important part of the modern software development experience. No matter if you’re a programmer writing code in a general-purpose programming language, or a business expert writing rules in some domain-speci … | Continue reading


@tomassetti.me | 3 years ago

Interview with Scott McKinney on improving static typing

Why this interview? Scott McKinney is the creator of Manifold, a plugin that supplements Java with powerful features. In this interview, we’ll try to figure out more about his work. Here there are some quotes I found particularly interesting: We built the rules engine, and it was … | Continue reading


@tomassetti.me | 3 years ago

Code Completion with Antlr4-C3

Introduction: the ANTLR4 Code Completion Core When we think about an editor for code, we think about syntax highlighting: graphically marking different elements of programming constructs, so that we can better interpret the structure of the code at a glance. We’ve written a few a … | Continue reading


@tomassetti.me | 3 years ago

Review of the Book Natural Language Processing for Hackers

This is a review of the book Natural Language Processing for Hackers* by George-Bogdan Ivanov, a NLP expert. When something is written for Hackers there are two possibilities: it is a pragmatic book designed to help you build something practical or an excuse to avoid explaining h … | Continue reading


@tomassetti.me | 3 years ago

How to Write a Transpiler

Introduction A transpiler is a program that can process code in a certain language and generate the corresponding code in another language. You can find also other terms being used, like source-to-source translator. When you may want to use a transpiler? Simply put, when you have … | Continue reading


@tomassetti.me | 3 years ago

Parsing SQL

SQL is a language to handle data in databases. However, it has limitations and you might need to parse SQL to get around them. This article will help you. | Continue reading


@tomassetti.me | 4 years ago

Quick Domain-Specific Languages in Python with TextX

Introduction textX is a suite of Python modules and tools to quickly develop text-based domain-specific languages. Compared to heavyweight language workbenches such as Jetbrains MPS, Eclipse Xtext or Spoofax, textX is less powerful and not as feature-rich; however, it’s directly … | Continue reading


@tomassetti.me | 4 years ago

Domain Specific Languages for smart contracts

There are some ideas that are gaining popularity: blockchains and smart contracts are among them. If we can ignore the hype and the inflated expectations I think they maybe ideas with a strong potential impact. I do not want to talk about these technologies in general but just fr … | Continue reading


@tomassetti.me | 4 years ago

Learning to Build Languages

All the resources you need to learn how to build languages: tutorials, post, checklists, and a book. Learn how to build a complete programming language. | Continue reading


@tomassetti.me | 4 years ago

JaRIKo, an RPG Interpreter in Kotlin

Introduction In this article, we’ll review JaRIKo, an open-source interpreter for a subset of the RPG programming language running on the Java Virtual Machine. People interested in legacy modernization techniques should find this interesting: as we’ll see in the course of the art … | Continue reading


@tomassetti.me | 4 years ago

Not Use (F)Lex, Yacc and Bison

Flex and Bison works, but every day they become less of a good choice. There are much better options and we will explain why. | Continue reading


@tomassetti.me | 4 years ago

A Guide to Parsing: Algorithms and Terminology

An in-depth coverage of parsing terminology an issues, together with an explanation for each one of the major algorithms and when to use them | Continue reading


@tomassetti.me | 4 years ago

Creating a Reverse Dictionary

We explain what word2vec is and how to use it to create a cool reverse dictionary: so you can find a word from it description. | Continue reading


@tomassetti.me | 4 years ago

How to Convert a PDF to Excel

You can convert a PDF to Excel: you can extract tables both from textual PDFs and even from PDF that are just scanned images (if they are high quality). | Continue reading


@tomassetti.me | 4 years ago

How would I go about creating a programming language?

How can we create a programming language in practice? Let's see the process to follow, without too much theory or too low level details | Continue reading


@tomassetti.me | 4 years ago

A complete tutorial on the Drools business rule engine

We will see a complete example on how to use Drools: describing the idea, setting up the project, writing the rules, writing the unit tests. Business rules are a powerfool programming paradigm which is not known by most developers. It is time to fix that. | Continue reading


@tomassetti.me | 5 years ago

The Antlr Mega Tutorial (2017)

The definitive tutorial on ANTLR4. Learn everything you need to know to use it; with code in Javascript, Python, Java and C#. Best practices included. | Continue reading


@tomassetti.me | 5 years ago

68 Resources to Help You to Create Programming Languages

A guide to create programming languages presenting an organized list of selected articles, books, tutorials, and tools on designing languages and compilers. | Continue reading


@tomassetti.me | 5 years ago

Bromium: a DSL to test UI actions

We present a DSL to describe user interactions in a simple way. It can be used to write high level automation tests in the browser. It is more high level than Selenium. | Continue reading


@tomassetti.me | 5 years ago

The complete guide to domain specific languages (2017)

This detailed guide described what are Domain Specific Languages, why to use them, which tools use to build them, present examples and a list of resources | Continue reading


@tomassetti.me | 5 years ago

Designing a DSL for accounting: use a DSL to describe taxes and financials

We will design a Domain Specific Language to describe taxes and pension contributions. This DSL could be used to support accounting and all sort of financial calculations. | Continue reading


@tomassetti.me | 5 years ago

Telosys: A Code Generation Tool by Laurent Guerin

Telosys is an easy to use code generation tool. In this post we discuss about the benefits of code generation with the author of this tool, Laurent Guerin. | Continue reading


@tomassetti.me | 5 years ago

The Best Programming Languages for Each Situation

Best language for each situation: from Enterprise to Game Development. If you want to enter a new field or just want to know the reigning champions | Continue reading


@tomassetti.me | 5 years ago

JArchitect: a review

This is an unbiased review of JArchitect. Let's see how it works in practice on a Java project. What kind of analysis we can perform and which bugs it has. | Continue reading


@tomassetti.me | 5 years ago

Interview to Pedro J. Molina on Domain Specific Languages

We were lucky enough to get an interview from Pedro J. Molina. He has been a well-known protagonist in the Language Engineering field for quite some time. For me it was such an honor to finally meet him, even if virtually. In this interview he tells us about his experience using … | Continue reading


@tomassetti.me | 5 years ago

A guide to Code Generation

Code generation is about generating code from a description or a model. It increases productivity, enforces consistency, simplify and make portable your code. However it increases complexity and maintenance costs. In this article we explain everything you need to know about it. | Continue reading


@tomassetti.me | 6 years ago