This directory contains a number of example files of using treecc
to implement expression grammars.  The code is more involved than
the examples in the Texinfo documentation to give you a better feel
for how to use treecc in a realistic setting.

expr_c.tc       Treecc input file for the C version of the example
gram_c.y        Yacc input file for the C version of the example
scan_c.l        Lex input file for the C version of the example

expr_cpp.tc     Treecc input file for the C++ version of the example
gram_cpp.yy     Yacc input file for the C++ version of the example
scan_cpp.ll     Lex input file for the C++ version of the example

expr_java.tc    Treecc input file for the Java version of the example
eval_value.java Helper class used by the Java version of the example
mkjava          Shell script for building the Java version of the example

expr_cs.tc      Treecc input file for the C# version of the example
mkcsharp        Shell script for building the C# version of the example

expr_ruby.tc    Treecc input file for the Ruby version of the example

The C++ example demonstrates creating a reentrant system.

The Java and C# versions build and compile, but cannot run because
they don't yet have lexing or parsing support.

The Java version is built in a subdirectory called "outjava".
