The parser framework
Parsing is done by Parser#parse
invokation after parser
creation .Before parsing It is possible to setup the parse session using Parser#getParseSession , and then set it.
It is possible at Parser construction to allow missing match manager class.
Before parsing a parser setup can be done using:
the compute syntax node make able to obtains a syntax tree in parsing
result. Usualy enable this is done when match manager are not use.
By default parse node are not keep in memory when they are no more needed. Parse node can be keep in memory for debug purpose.
When manage ambiguous grammar make abel to give a number of alternative limit.
The parser data used by parser ( parameter of parser constructor ) is
generated using the
parser data generator
lexical analysis included : whitespace management and token are defined
in the input
grammar parameter of the
parser data generator.
If ambiguity detected and not allowed then a HasAmbiguityParserException is throw, and ambiguous parse(s) node(s) are output in 'runtime/parsetree <[0-9]+> .xml' file(s). The show parse tree tool can be used to visualize for analysis the ambigous parse tree ( screen shot for an ambiguity ).
The parsing result : error, parse node tree, syntax node tree, and data generated by match
manager ( getUniqData and getDataByAlternative of IParseNode )
It is also possible to get parsing result information from parse session.
Each parse node give the text it match in parsed input: start line/column and end line/column.
parse node have a data field computed by match manager, the data field
of root resulting parse node can be the reference on parsing result:
can be a specific AST.
case of reduce error ( runtime exception ) the error is memorized and
then parsing is resumed whithout invoking match manager. In this case
parsing can fall in ambiguity error if ambiguities are managed at semantic level ( in match manager class ).
© 2008-2009, parser4j