-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Home
The grammars-v4
repository is a collection of ANTLR4 grammars contributed by authors around the world. Grammars-v4 uses trgen, antlr4test-maven-plugin, a number of scripts in the _scripts directory, and Github Actions to ensure that all grammars on the tree build and parse input files properly with ANTLR4.
Each grammar has a directory of examples, which contains input files and the expected output from the parse (parse errors contained in .errors
files; parse tree of the input contained in .tree
files). Testing is performed across: Ubuntu, macOS, and Windows operating systems; Cpp (C++), CSharp (C#), Dart (Dart2), Go, Java, JavaScript, PHP, and Python3 targets; Bash and Powershell environments.
A core value of grammars-v4 is that any grammar downloaded from grammars-v4 will compile properly with ANTLR4, and has been validated against some example inputs.
There is no single license for the grammars; each grammar has its own license. Check inside the grammar files for licensing terms.
You are welcome to submit an issue ticket, and contributions to the grammars tree are also welcome.
If you add a grammar, you should add a desc.xml, an examples/ directory to test it, and a readme.md to document the grammar.
If your PR breaks the existing tests, it will be rejected. Additionally, we ask that any incremental changes made to grammar files have examples contributed to the /examples
directory for that grammar to ensure that future changes to the grammars don't introduce regressions.
Look here
All grammars in the repository are formatted according to common rules. Formatting is tested for each PR and if that fails the PR is rejected. The tool used to format an ANTLR4 grammar is antlr-format. You need Node.js installed to run it.
All grammars in the repository contain formatting options that mirror the common rules. These options must not be changed in a PR, unless the maintainers change these rules and reformat the entire repository again.
New grammars usually do not contain these formatting options. You can either copy them from an existing grammar or let the antlr-format
tool add them for you. Consult the readme of the antlr-format terminal tool how to run it and read the Configuration section for details of the config file to use, to prepare your new grammar for a PR. Existing grammars don't need a config file (they have all options as comments), which look like:
// $antlr-format alignTrailingComments true, columnLimit 150, useTab false ...
There is an example at /tcpheader/
Use download-maven-plugin
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>https://raw.githubusercontent.com/antlr/grammars-v4/master/arithmetic/arithmetic.g4</url>
<outputFileName>arithmetic.g4</outputFileName>
<outputDirectory>src/main/antlr4/com/khubla/antlr4example/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
- Install dotnet version 7.
- Install target-specific support, e.g., G++, Dart, Go, etc.
- Install the Trash toolkit installed. See the documentation.
git clone https://github.com/antlr/grammars-v4.git
-
cd grammars-v4/<grammar-of-your-choice>
. E.g.,cd grammars-v4/java/java
. -
trgen
. This will create a driver for all implemented targets that work with the grammar. See the desc.xml file for this list. -
cd Generated-<target-of-your-choice>
. E.g.,cd Generated-CSharp
. - In a Bash prompt, type
make; make test
. Or, in a Powershell prompt, typepwsh build.ps1; pwsh test.ps1
. The scripts create temporary files used in the build. Usegit clean -f
to remove these files. - Tests create .errors and .tree files automatically. If you want, you can check these in for testing across targets and OSes.
- Clone grammars-v4.
git clone https://github.com/antlr/grammars-v4.git
- Make sure you have Maven installed. See the documentation.
-
cd grammars-v4
(the root directory), or to a grammarcd grammars-v4/java/java
. - Execute
mvn clean test
.