internal package Foswiki::Infix::Parser internal package Foswiki::Infix::Parser Escapes are supported in strings, using backslash.
ClassMethod new($node_factory, \%options) → $parser_object Creates a new infix parser. Operators must be added for it to be useful.
The tokeniser matches tokens in the following order: operators, quotes (" and '), numbers, words, brackets. If you have any overlaps (e.g. an operator '<' and a bracket operator '<<') then the first choice will match.
$node_factory needs to be ( the name of a package | an object ) that supports the
following two functions: newLeaf($val, $type) - create a terminal. $type will be: words specification (see below).
numbers specification (see below)
newNode($op, @params) - create a new operator node. @params is a variable-length list of parameters, left to right. $op is a reference to the operator hash in the \@opers list.
words=>qr// - should be an RE specifying legal words (unquoted terminals that are not operators i.e. names and numbers). By default this is \w+. It's ok if operator names match this RE; operators always have precedence over names.
numbers=>qr// - should be an RE specifying legal numbers (unquoted terminals that are not operators or words). By default this is qr/[+-]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][+-]?\d+)?/, which matches integers and floating-point numbers. Number matching always takes precedence over word matching (i.e. "1xy" will be parsed as a number followed by a word. A typical usage of this option is when you only want to recognise integers, in which case you would set this to numbers => qr/\d+/.
ObjectMethod addOperator($oper) $oper is an object that implements the Foswiki::Infix::OP interface.
ObjectMethod parse($string) → $parseTree $string, calling newLeaf and newNode in the client class
as necessary to create a parse tree. Returns the result of calling newNode
on the root of the parse.
Throws Foswiki::Infix::Error in the event of parse errors.
ObjectMethod onCloseExpr($@opands)