Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

twig(1) [plan9 man page]

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 manipulate input trees. The C functions 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 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 Science Technical 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)

Check Out this Related Man Page

xmerl_xs(3erl)						     Erlang Module Definition						    xmerl_xs(3erl)

NAME
xmerl_xs - Erlang has similarities to XSLT since both languages have a functional programming approach. DESCRIPTION
Erlang has similarities to XSLT since both languages have a functional programming approach. Using xmerl_xpath it is possible to write XSLT like transforms in Erlang. XSLT stylesheets are often used when transforming XML documents, to other XML documents or (X)HTML for presentation. XSLT contains quite many functions and learning them all may take some effort. This document assumes a basic level of understanding of XSLT. Since XSLT is based on a functional programming approach with pattern matching and recursion it is possible to write similar style sheets in Erlang. At least for basic transforms. This document describes how to use the XPath implementation together with Erlangs pattern match- ing and a couple of functions to write XSLT like transforms. This approach is probably easier for an Erlanger but if you need to use real XSLT stylesheets in order to "comply to the standard" there is an adapter available to the Sablotron XSLT package which is written i C++. See also the Tutorial . EXPORTS
built_in_rules(Fun, E) -> List The default fallback behaviour. Template funs should end with: template(E) -> built_in_rules(fun template/1, E) . select(String::string(), E) -> E Extracts the nodes from the xml tree according to XPath. See also: value_of/1 . value_of(E) -> List Types E = unknown() Concatenates all text nodes within the tree. Example: <xsl:template match="title"> <div align="center"> <h1><xsl:value-of select="." /></h1> </div> </xsl:template> becomes: template(E = #xmlElement{name='title'}) -> ["<div align="center"><h1>", value_of(select(".", E)), "</h1></div>"] xslapply(Fun::Function, EList::list()) -> List Types Function = () -> list() xslapply is a wrapper to make things look similar to xsl:apply-templates. Example, original XSLT: <xsl:template match="doc/title"> <h1> <xsl:apply-templates/> </h1> </xsl:template> becomes in Erlang: template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) -> ["<h1>", xslapply(fun template/1, E), "</h1>"]; AUTHORS
<> xmerl 1.2.8 xmerl_xs(3erl)
Man Page