term% cat index.txt TWIG(1) General Commands Manual 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 ma‐
nipulate input trees. The C functions first find a minimum-cost cover‐
ing of an input tree using a dynamic programming algorithm and then ex‐
ecute 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 Twig produces two output files: walker.c, which becomes the
source file for the tree matcher, and symbols.h, which contains the de‐
finitions 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) rou‐
tines.
-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 Science Tech‐
nical Report No. 120, AT&T Bell Laboratories, Murray Hill, N.J.
A. V. Aho, M. Ganapathi, and S. W. K. Tjiang, ‘‘Code generation using
tree matching and dynamic programming.''
BUGS
When tree matching fails, the debugging output is cryptic.
TWIG(1)