Changes for version 1.002 - 2013-09-17

  • optimized matching by addition of more caching and elimination of much array copying

Modules

general purpose path languages for trees
handles evaluating an attribute for a particular node
compares an attribute value to another value
a collection of attributes beyond the standard set
the standard collection of attributes available to any forester by default
takes ASTs and returns compiled TPath::Expression objects
handles the string concatenation in //@foo[1 ~ @bar ~ "quux"]
the context in which a node is evaluated during a search
a compiled TPath expression
a generator of TPath expressions for a particular class of nodes
implements the functions in expressions such as //*[:abs(@foo) = 1] and //*[:sqrt(@bar) == 2]
parses TPath expressions into ASTs
general purpose path languages for trees
role of log-like things
handles the arithmetic in //foo[1 + @bar = @quux]
role of things that evaluate to numbers
interface of square bracket sub-expressions in TPath expressions
implements the [@foo] in //a/b[@foo]
implements the [@foo = 1] in //a/b[@foo = 1]
implements the [@foo or @bar ] in //a/b[@foo or @bar]
implements the [c] in //a/b[c]
implements the [0] in //a/b[0]
an interface for classes that select nodes from a candidate collection
selector that handles the parenthesized portion of a(/foo and a(/foo; also all of (//*)[0]
TPath::Selector that implements id(foo)
TPath::Selector that implements ..
role of selectors that have predicates
TPath::Selector that implements :p
handles expressions like a? and //foo*
TPath::Selector that implements .
role of selectors that apply some test to a node to select it
handles //* expression
handles //@foo expression
handles //~foo~ expression
handles //foo expression
handles /ancestor::@foo or /preceding::@foo where this is not the first step in the path, or ancestor::@foo, etc.
handles /ancestor::~foo~ or /preceding::~foo~ where this is not the first step in the path, or ancestor::~foo~, etc.
handles /ancestor::foo or /preceding::foo where this is not the first step in the path, or ancestor::foo
handles /ancestor::* or /preceding::* where this is not the first step in the path, or ancestor::*, etc.
handles /@foo where this is not the first step in the path, or child::@foo
handles /~foo~ where this is not the first step in the path, or child::~foo~
handles /foo where this is not the first step in the path, or child::foo
role for all matching selectors
implementation of TPath::LogStream that simply prints to STDERR
role requiring that a class have a to_string method
interface of conditional expressions in predicates
implements logical conjunction of tests
any empty role used to tag boolean TPath::Tests
role of TPath::Tests that combine multiple other tests under some boolean operator
role for tests determining whether a node has some property
TPath::Test::Node implementing attributes; e.g., //@foo
TPath::Test::Node implementing matching; e.g., //^~foo~, //^foo, and //^@foo
TPath::Test::Node implementing matching; e.g., //~foo~
TPath::Test::Node implementing basic tag pattern; e.g., //foo
TPath::Test::Node implementing the wildcard; e.g., //*
implements logical negation of a test
implements logical function of tests which returns true iff only one test is true
implements logical disjunction of tests
applies type constraint on nodes
assorted type constraints