# Federico Tomassetti > Personal technical blog of Federico Tomassetti, co-founder of Strumenta (Turin, Italy). In-depth articles on parsing, ANTLR, domain-specific languages, code generation, language engineering and legacy modernization. Writing here since 2009; the engineering and client work happen at Strumenta. ## Start here - [Home](https://tomassetti.me/): the most recent writing. - [All articles](https://tomassetti.me/articles/): the full archive. - [Topics](https://tomassetti.me/topics/): the subjects the archive keeps returning to — parsing and compilers, DSLs and language workbenches, language engineering, legacy systems, code analysis, automation, the craft of software. - [About](https://tomassetti.me/about/): who is writing and why. ## Parsing - [The ANTLR mega tutorial](https://tomassetti.me/antlr-mega-tutorial/): a long, practical introduction to building parsers with ANTLR. - [A guide to parsing: algorithms and terminology](https://tomassetti.me/guide-parsing-algorithms-terminology/): the vocabulary and the families of parsing algorithms, explained. - [Parsing in Java](https://tomassetti.me/parsing-in-java/): the tools and libraries available for parsing on the JVM. - [Parsing in Python](https://tomassetti.me/parsing-in-python/): the same survey for Python. - [Parsing in JavaScript](https://tomassetti.me/parsing-in-javascript/): the same survey for JavaScript. - [Parsing in C#](https://tomassetti.me/parsing-in-csharp/): the same survey for C#. - [Parsing category](https://tomassetti.me/category/parsing/): every article on parsing. - [ANTLR category](https://tomassetti.me/category/antlr/): every article on ANTLR. ## Languages, DSLs and editors - [A guide to software language engineering](https://tomassetti.me/a-guide-to-software-language-engineering/): what the discipline covers and where to start. - [How to create a programming language](https://tomassetti.me/how-to-create-programming-language/): the steps involved in designing and implementing a language. - [How to write a transpiler](https://tomassetti.me/how-to-write-a-transpiler/): translating source code from one language to another. - [What is the Language Server Protocol](https://tomassetti.me/what-is-the-language-server-protocol/): how editor tooling is built today. - [How to create an editor with syntax highlighting for your DSL](https://tomassetti.me/how-to-create-an-editor-with-syntax-highlighting-dsl/): giving a DSL a usable editor. - [Domain-specific languages category](https://tomassetti.me/category/domain-specific-languages/): every article on DSLs. - [Editors category](https://tomassetti.me/category/editors/): every article on editors and IDE tooling. - [Transpilers category](https://tomassetti.me/category/transpilers/): every article on transpilers. - [Language engineering category](https://tomassetti.me/category/language-engineering/): the broader discipline. ## Legacy modernization - [How to choose the target for a migration from RPG](https://tomassetti.me/how-to-choose-the-target-for-a-migration-from-rpg/): the trade-offs when leaving RPG on IBM i. - [How to validate migrations from one language to another](https://tomassetti.me/how-to-validate-migrations-from-one-language-to-another/): proving that migrated code behaves like the original. - [Legacy modernization category](https://tomassetti.me/category/legacy-modernization/): every article on legacy systems and migrations. ## Optional - [Strumenta](https://strumenta.com/): the company — parsers, transpilers, DSLs, editors and legacy modernization services. - [RSS feed](https://tomassetti.me/feed/): new articles. - [Sitemap](https://tomassetti.me/sitemap_index.xml): the complete list of pages and articles.