This document describes how to make ANTLR generate parsers in a new language, X.
Creating a new target involves the following key elements:
Target in package
org.antlr.v4.codegen.target. This class describes language specific details about escape characters and strings and so on. There is very little to do here typically.
*X*.stg in directory
tool/resources/org/antlr/v4/tool/templates/codegen/*X*/*X*.stg. This is a StringTemplate group file (
.stg) that tells ANTLR how to express all the parsing elements needed to generate code. You will see templates called
AltBlock, etc... Each of these must be described how to build the indicated chunk of code. Your best bet is to find the closest existing target, copy that template file, and tweak to suit.
runtime/*X*, you are in complete control of the directory structure as dictated by common usage of that target language. For example, Java has:
runtime/Java/src directories. Under
src, you will find a directory structure for package
org.antlr.v4.runtime and below.
runtime-testsuite will automatically generate code using these templates for each target and check the test results. It needs to know how to define various class fields, compare members and so on. You must create a
*X*.test.stg file underneath runtime-testsuite/resources/org/antlr/v4/test/runtime and
Test.*x*.stg underneath runtime-testsuite/resources/org/antlr/v4/test/runtime/helpers. Again, your best bet is to copy the templates from the closest language to your target and tweak it to suit.
/runtime-testsuite/test/org/antlr/v4/test/runtime/X/BaseXTest.java which defines how test cases will execute and output.
antlr/antlr4 repository at GitHub to your own user so that you have repository
username/antlr4, the forked repository, to your local disk. Your remote
origin will be the forked repository on GitHub. Add a remote
upstream to the original
antlr/antlr4 repository (URL
https://github.com/antlr/antlr4.git). Changes that you would like to contribute back to the project are done with pull requests.
$ mvn compile
That should proceed with success. See Building ANTLR for more details.