Getting compile errors in this plugin? Wondering why? Keep on reading!

This file describes how to build the CTF Java parser files. They are not stored
in the git repository anymore, and must be generated by the build system.

Unfortunately there is no easy way to setup an Eclipse builder to generate those
files, since the Antlr plugin in Orbit only provides the runtime, and not the
tool to generate Java files.

You have two options:
- On Linux distros:
  You can install Antlr 3.2, and then run the generate-grammar.sh script in this
  directory. On Ubuntu 12.04, getting Antlr is a simple
  $ sudo apt-get install antlr3

  The files were only tested with Antlr 3.2 though, so they might not compile
  with other versions.

- On all systems:
  For a more cross-platform solution you can use Maven to generate the parser
  files. If you have Maven installed on your system, you can cd into this
  directory and type "mvn install" in a terminal.

  Another option is to install the Maven Eclipse integration plugin "m2e". It
  can be found in the default Eclipse repository (under "Collaboration"). Once
  it's installed, you can right-click the pom.xml file in this directory and
  choose Run As -> Maven install.

Both methods should create the Java files and put them in the correct directory.
You may need to refresh the project, after which the compilation errors should
disappear.