README for Tree::DAG_Node Time-stamp: "2001-02-23 11:37:30 MST" Tree::DAG_Node [Partially excerpted from the POD.] Tree::DAG_Node is a (super)class for representing nodes in a tree. This class encapsulates/makes/manipulates objects that represent nodes in a tree structure. The tree structure is not an object itself, but is emergent from the linkages you create between nodes. This class provides the methods for making linkages that can be used to build up a tree, while preventing you from ever making any kinds of linkages which are not allowed in a tree (such as having a node be its own mother or ancestor, or having a node have two mothers). This is what I mean by a "tree structure", a bit redundantly stated: * A tree is a special case of an acyclic directed graph. * A tree is a network of nodes where there's exactly one root node (i.e., 'the top'), and the only primary relationship between nodes is the mother-daugher relationship. * No node can be its own mother, or its mother's mother, etc. * Each node in the tree has exactly one "parent" (node in the "up" direction) -- except the root, which is parentless. * Each node can have any number (0 to any finite number) of daughter nodes. A given node's daughter nodes constitute an *ordered* list. (However, you are free to consider this ordering irrelevant. Some applications do need daughters to be ordered, so I chose to consider this the general case.) * A node can appear in only one tree, and only once in that tree. Notably (notable because it doesn't follow from the two above points), a node cannot appear twice in its mother's daughter list. * In other words, there's an idea of up (toward the root) versus down (away from the root), and left (i.e., toward the start (index 0) of a given node's daughter list) versus right (toward the end of a given node's daughter list). Trees as described above have various applications, among them: representing syntactic constituency, in formal linguistics; representing contingencies in a game tree; representing abstract syntax in the parsing of any computer language -- whether in expression trees for programming languages, or constituency in the parse of a markup language document. (Some of these might not use the fact that daughters are ordered.) Note: B-Trees are a very special case of the above kinds of trees, and are best treated with their own class. Check CPAN for modules encapsulating B-Trees; or if you actually want a database, and for some reason ended up looking here, go look at the AnyDBM_File manpage.) Many base classes are not usable except as such -- but Tree::DAG_Node can be used as a normal class. PREREQUISITES This suite requires Perl 5; I've only used it under Perl 5.004, so for anything lower, you're on your own. Tree::DAG_Node doesn't use any nonstandard modules. INSTALLATION You install Tree::DAG_Node, as you would install any perl module library, by running these commands: perl Makefile.PL make make test make install If you want to install a private copy of Tree::DAG_Node in your home directory, then you should try to produce the initial Makefile with something like this command: perl Makefile.PL LIB=~/perl Then you may need something like setenv PERLLIB "\$HOME/perl" in your shell initialization file (e.g., ~/.cshrc). See perldoc perlmodinstall for more information on installing modules. DOCUMENTATION POD-format documentation is included in DAG_Node.pm. POD is readable with the 'perldoc' utility. See ChangeLog for recent changes. MACPERL INSTALLATION NOTES Don't bother with the makefiles. Just make a Tree directory in your MacPerl site_lib or lib directory, and move DAG_Node.pm into there. SUPPORT Questions, bug reports, useful code bits, and suggestions for Tree::DAG_Node should just be sent to me at sburke@cpan.org AVAILABILITY The latest version of Tree::DAG_Node is available from the Comprehensive Perl Archive Network (CPAN). Visit to find a CPAN site near you. COPYRIGHT Copyright 1998- by Sean M. Burke , all rights reserved.