TWIG(1)                                                   TWIG(1)

     NAME
          twig - tree-manipulation language

     SYNOPSIS
          twig [ -sASC ] [ -w suffix ] file.mt

     DESCRIPTION
          Twig converts a tree-specification scheme consisting of
          pattern-action rules with associated costs into C functions
          that can be called to manipulate input trees.  The C func-
          tions first find a minimum-cost covering of an input tree
          using a dynamic programming algorithm and then execute the
          actions associated with the patterns used in the covering.
          The tree-specification scheme may allow several coverings
          for an input tree, but the dynamic programming algorithm
          resolves any ambiguities by selecting a cheapest covering.

          The input file containing the tree-specification scheme must
          have the suffix `.mt'.  Twig produces two output files:
          walker.c, which becomes the source file for the tree
          matcher, and symbols.h, which contains the definitions for
          the node and label symbols used in the source file.

          To build walker.c, twig uses an internal template file, by
          default one appropriate for use with fprintf(2).

          The options are

          -A         Use a template file for ANSI/POSIX source files.

          -C         Use a template file for files that use libc's
                     print(2) routines.

          -S         Use a template file for files that use
                     fprintf(2).

          -s         Do not produce a symbols.h file.

          -w suffix  Use the template file
                     /sys/lib/twig/walker.suffix.

     FILES
          /sys/lib/twig  System area for template files.

     SOURCE
          /sys/src/cmd/twig

     SEE ALSO
          yacc(1)
          S. W. K. Tjiang, ``The Twig Reference Manual'', Computing

     TWIG(1)                                                   TWIG(1)

          Science Technical Report No. 120, AT&T Bell Laboratories,
          Murray Hill, N.J.
          A. V. Aho, M. Ganapathi, and S. W. K. Tjiang, ``Code genera-
          tion using tree matching and dynamic programming.''

     BUGS
          When tree matching fails, the debugging output is cryptic.