"LaTeXML::MathParser" parses the
mathematical content of a document. It uses Parse::RecDescent and a grammar
"MathGrammar".
The following functions are exported for convenience in writing
the grammar productions.
- "$node = New($name,$content,%attributes);"
- Creates a new "XMTok" node with given
$name (a string or undef), and
$content (a string or undef) (but at least one of
name or content should be provided), and attributes.
- "$node = Arg($node,$n);"
- Returns the $n-th argument of an
"XMApp" node; 0 is the operator
node.
- "Annotate($node,%attributes);"
- Add attributes to $node.
- "$node = Apply($op,@args);"
- Create a new "XMApp" node representing
the application of the node $op to the nodes
@args.
- "$node = ApplyDelimited($op,@stuff);"
- Create a new "XMApp" node representing
the application of the node $op to the arguments
found in @stuff. @stuff
are delimited arguments in the sense that the leading and trailing nodes
should represent open and close delimiters and the arguments are separated
by punctuation nodes. The text of these delimiters and punctuation are
used to annotate the operator node with
"argopen",
"argclose" and
"separator" attributes.
- "$node = InterpretDelimited($op,@stuff);"
- Similar to "ApplyDelimited", this
interprets sequence of delimited, punctuated items as being the
application of $op to those items.
- "$node = recApply(@ops,$arg);"
- Given a sequence of operators and an argument, forms the nested
application "op(op(...(arg)))">.
- "$node = InvisibleTimes;"
- Creates an invisible times operator.
- "$boole = isMatchingClose($open,$close);"
- Checks whether $open and
$close form a `normal' pair of delimiters, or if
either is ".".
- "$node = Fence(@stuff);"
- Given a delimited sequence of nodes, starting and ending with open/close
delimiters, and with intermediate nodes separated by punctuation or such,
attempt to guess what type of thing is represented such as a set, absolute
value, interval, and so on. If nothing specific is recognized, creates the
application of "FENCED" to the
arguments.
This would be a good candidate for customization!
- "$node = NewFormulae(@stuff);"
- Given a set of formulas, construct a
"Formulae" application, if there are
more than one, else just return the first.
- "$node = NewList(@stuff);"
- Given a set of expressions, construct a
"list" application, if there are more
than one, else just return the first.
- "$node = LeftRec($arg1,@more);"
- Given an expr followed by repeated (op expr), compose the left recursive
tree. For example "a + b + c - d" would
give "(- (+ a b c) d)">
- "MaybeFunction($token);"
- Note the possible use of $token as a function,
which may cause incorrect parsing. This is used to generate warning
messages.
Bruce Miller <bruce.miller@nist.gov>
Public domain software, produced as part of work done by the
United States Government & not subject to copyright in the US.