In the past years, and in the last 12 months in particular I wrote tens of posts, some of which got a good response from you (thank you!).
I thought it could be useful to create a list of the most relevant posts for each topic. It could help in particular new readers.
A lot of people love to read about ANTLR! I did not anticipated writing so much about ANTLR, however many posts involve ANTLR but are used to show specific techniques, like building syntax highlighting. I plan to write more about tools built around ANTLR, like editors for the web or the desktop (such as Kanvas).
- Parsing any language in Java in 5 minutes using ANTLR: for example Python how to setup ANTLR and take advantage of the many grammars already existing
- Getting started with ANTLR: building a simple expression language how to write a lexer using ANTLR and Kotlin
- Getting started with ANTLR in C# how to write a lexer and parser ANTLR and C#
- How to create an editor with syntax highlighting for your language using ANTLR and Kotlin how to derive automatically an editor with syntax highlighting from an ANTLR grammar
JavaParser & JavaSymbolSolver
I wrote several more posts about JavaParser, discussing how specific part of JavaParser were implemented. I plan to work more on writing tutorials on JavaParser this year. First of all version 3.0 was just released, then there are other features coming: I have just completed support for Javadoc processing and I am working on lexical preservation. A little voice is even telling me about a book on JavaParser…
- Getting started with JavaParser: analyzing Java Code programmatically showing the typical ways JavaParser can be used and applying those to answer some of the most common questions about JavaParser (taken from StackOverflow)
- Resolve method calls in Java code using the JavaSymbolSolver introduction to JavaSymbolSolver, the JavaParser extension to resolve symbols. It shows how to use it to find the method definition corresponding to a certain method invocation.
This is in interesting topic for me, connected also to my interest to JavaParser. This year my brother Gabriele contributed a few articles on static analysis in the C# world, while I tend to focus more on the JVM world, with excursion to other platforms (like Python).
- Getting started with Roslyn: transforming C# code Roslyn is a very interesting framework that can be used to parse, analyze and transform C# code. In this post we show you how to perform simple transformation to C# code
- Python reflection: how to list modules and inspect functions we combine several reflection techniques to build a model of all Python packages, functions and classes
- Generate diagrams from C# source code using Roslyn we show how to analyze C# code and build an internal model. From that model we generate a few diagrams
I have been using Jetbrains MPS on daily basis and I did quite a few interesting things with it. I should write it more about it this year.
- ANTLR and Jetbrains MPS: Parsing files and display the AST using the tree notation it shows how to combine ANTLR and Jetbrains MPS. We use ANTLR to parse existing files and import them in MPS
- Interview to Vaclav Pech on Jetbrains MPS: the community and the future Vaclav is a technical leader at Jetbrains, involved with MPS for several years. He was kind enough to answer all the questions I had on the development of MPS. Quite an interesting reading
Other related to languages
There are so many other things I would like to talk about which are broadly related to languages. Interviews to very interesting people like Jan or Vaclav are high on my list. Also discussing generation, for example targeting the LLVM or interpretation are topics that I think could interest some of you.
- Interview with Jan Köhnlein on TypeFox, DSLs and Xtext Jan is one of the most well-known committers of the Xtext project. He recently created a company named TypeFox, focusing on building DSLs using Xtext. We discuss about Xtext and his company
- Generating bytecode parsing is fun, I know, but after having parsed code you need to generate something from it. Bytecode is a very good choice. In this post we explain how to generate bytecode.
In the end…
There are topics that I love, and I will keep writing about those even if I am the only one reading those posts. However I also try to be useful here, so if there are topics related to language engineering that you feel are not explained well feel free to reach me (write to me at federico at tomassetti dot me, use the contact page, ping me on twitter) and let me know.