xtc is a framework for building extensible source-to-source translators and compilers.

#### License

xtc is copyrighted in parts by Robert Grimm, New York University, Princeton University, and IBM; see each file's header for the relevant copyright notice. xtc also is open source software and released in parts under the GNU General Public License (GPL) version 2 and the GNU Lesser General Public License (LGPL) version 2.1, again as documented in each file's header.

Generally, most code in xtc is released under the GPL. However, most runtime classes for Rats!-generated parsers, including classes for representing AST nodes, are released under the LGPL. Furthermore, all runtime classes for Typical-generated type checkers are released under the LGPL. In detail, the classes released under the LGPL are:

- {@link xtc.parser.ParserBase}
- {@link xtc.parser.Column}
- {@link xtc.parser.Result}
- {@link xtc.parser.SemanticValue}
- {@link xtc.parser.ParseError}
- {@link xtc.parser.ParseException}
- {@link xtc.tree.Location}
- {@link xtc.tree.Locatable}
- {@link xtc.tree.Node}
- {@link xtc.tree.Token}
- {@link xtc.tree.Annotation}
- {@link xtc.tree.Formatting}
- {@link xtc.tree.GNode}
- {@link xtc.typical.Analyzer}
- {@link xtc.typical.Name}
- {@link xtc.typical.Primitives}
- {@link xtc.typical.Record}
- {@link xtc.typical.Reduction}
- {@link xtc.typical.Scope}
- {@link xtc.typical.ScopeKind}
- {@link xtc.typical.Tuple}
- {@link xtc.typical.Variant}
- {@link xtc.util.Action}
- {@link xtc.util.EmptyIterator}
- {@link xtc.util.Function}
- {@link xtc.util.Pair}
- {@link xtc.util.Runtime}
- {@link xtc.util.SingletonIterator}
- {@link xtc.util.State}
- {@link xtc.util.SymbolTable}
- {@link xtc.util.Tool}
- {@link xtc.util.Utilities}

To ensure that a Rats!-generated parser is compatible with the LGPL, invoke Rats! with the `-lgpl` command line argument.