The xtc (eXTensible Compiler) project is exploring novel programming languages and tools to improve the expressiveness, safety, and efficiency of complex systems.
Highlights of xtc’s features include:
Additionally, xtc includes support for common tool tasks, such as processing command line flags, managing file search paths, setting character encodings, and reporting program errors.
Discontinued components include:
These components are still accessible through version 1.15.0 of the source release (see below).
Select publications:
See Robert Grimm’s publications for a list of all papers and talks on xtc.
User guides:
xtc is mostly released under the GNU GPL version 2. The main exception is the Rats! runtime, which is released under the GNU LGPL version 2.1. See xtc’s sources and Javadoc documentation for a detailed list of these classes.
xtc’s current distribution is version 2.3.1, which was released 4/4/12. It includes the following files:
-lgpl
command line option.Note that the binary distribution xtc.jar contains all
classes contained in the parser binary rats.jar and the
parser runtime rats-runtime.jar.
Version 1.8.0 of the source distribution is still available to ensure the repeatability of the experimental results reported in the PLDI ’06 paper “Better Extensibility through Modular Syntax.” Version 1.15.0 is the last version to contain several discontinued tools. We preserve both source code and test suite.
The source distribution comes with extensive
documentation, including installation
instructions (step-by-step.html in xtc’s root
directory), an overview of our
setup (development.html), and Javadoc-generated class
documentation (execute
“make doc”).
This page provides
an introduction to Rats!, our parser
generator. It is part of xtc’s Javadoc documentation (hence the
@link mark-up) and uses examples from Rats!’ own
grammar as well as from our Java and C grammars (look in
the src/xtc/parser and src/xtc/lang
directories in the source distribution).
The binary distribution is invoked from the command line by typing:
java -cp xtc.jar tool-class-name
where valid tool class names include:
xtc.parser.Rats for the Rats! parser generator.xtc.lang.FactoryFactory for the concrete syntax tool.xtc.lang.cpp.SuperC for the SuperC tool.xtc.lang.jeannie.Jeannie for the Jeannie compiler.When invoked without additional arguments, each tool prints usage instructions including recognized command line arguments.
xtc’s dependencies include the following Java packages:
junit.jarccl.jarjavacc.jarjavancss.jarjhbasic.jarJFlex.jarjavabdd.jarFor the source release, the corresponding jar files should be
placed into the bin directory of the distribution. The
JUnit and JavaBDD jar files should also be added to the class
path.
For your convience, dependencies.zip contains the jar files for JUnit 4.8.2, JavaNCSS 32.53, JFlex 1.4.3, and JavaBDD 1.0b2.
The source distribution of the Marco macro processor is available as a separate download.
xtc and Rats! (including new
releases).xtc is currently being developed by Paul Gazzillo, Robert Grimm, and Robert Soulé.
Major contributors are Marc Fiuczynski, Buğra Gedik, Laune Harris, Martin Hirzel, Anh Le, Byeongcheol Lee, Kathryn McKinley, Joe Pamer, Ben Wiedermann, and Marco Yuen.
Further contributors are Ken Britton, Chris Capel, Christopher Conway, Christine Flood, Hunter Freyer, Marek Gilbert, Ben Goldberg, Eric Hielscher, Thomas Huston, Chris Jones, Yonas Jongkind, Dejan Jovanović, Adam Kravetz, Stacey Kuznetsov, Petar Maymounkov, Thomas Moschny, William Moy, Janus Dam Nielsen, Karen Osmond, Robin Lee Powell, Matt Renzelmann, Sukyoung Ryu, Jacob Shufro, Uwe Simm, and Mengtao Sun.
xtc is used by:
This material is based in part upon work supported by the National Science Foundation under grants CNS-0448349, CNS-0615129, and CCF-1017849. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.