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

Building autocompletion for an editor based on ANTLR

Building autocompletion for an editor based on ANTLR

In this post we are going to see how to build autocompletion in our editor. We will derive the items to suggest automatically from our ANTLR grammar. This post is the part of a series. The goal of the series is to describe how to create a useful language and all the supporting tools. Building a […]

How to create an editor with syntax highlighting for your language using ANTLR and Kotlin

What we are going to build In this post we are going to see how to build a standalone editor with syntax highlighting for our language. The syntax highlighting feature will be based on the ANTLR lexer we have built in the first post. The code will be in Kotlin, however it should be easily […]

Building and testing a parser with ANTLR and Kotlin

This post is the part of a series. The goal of the series is to describe how to create a useful language and all the supporting tools. Building a lexer Building a parser Creating an editor with syntax highlighting Build an editor with autocompletion Mapping the parse tree to the abstract syntax tree Model to model […]

Getting started with ANTLR: building a simple expression language

This post is the part of a series. The goal of the series is to describe how to create a useful language and all the supporting tools. Building a lexer Building a parser Creating an editor with syntax highlighting Build an editor with autocompletion Mapping the parse tree to the abstract syntax tree Model to model […]

Interview with Vaclav Pech on Jetbrains MPS: the community and the future

If you are reading this blog regularly you know that I am interested in many things but language engineering is the topic closest to my heart. You could have also noticed that I am spending a lot of time working with MPS. If you are instead a new reader you may not know that MPS […]

On the need of a generic library around ANTLR_ using reflection to build a metamodel

On the need of a generic library around ANTLR: using reflection to build a metamodel

I am a Language Engineer: I use several tools to define and process languages. Among other tools I use ANTLR: it is simple, it is flexible, I can build things around it. However I find myself rebuilding similar tools around ANTLR for different projects. I see two problems with that: ANTLR is a very good […]

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 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 […]

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. […]