simpleparse.parser
index
/usr/src/tmp/python3-module-simpleparse-buildroot/usr/lib/python3/site-packages/simpleparse/parser.py

Real-world parsers using the SimpleParse EBNF

 
Modules
       
simpleparse.baseparser
simpleparse.common
simpleparse.simpleparsegrammar

 
Classes
       
BaseParser(object)
Parser

 
class Parser(BaseParser)
    EBNF-generated Parsers with results-handling
 
The Parser is a two-stage object:
    Passed an EBNF definition during initialisation,
    it compiles the definition into a tagging table
    (which in turn requires creating a tagging table
    for parsing the EBNF).
 
    You then call the parser's parse method to
    perform the actual parsing of your data, with the
    parser passing the results to your processor object
    and then back to you.
 
 
Method resolution order:
Parser
BaseParser
object

Methods defined here:
__init__(self, declaration, root='root', prebuilts=(), definitionSources=[{'locale_day_abbrs': FirstOfGroup(value=[Literal(value='Wed',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_day_abbrs_lc': FirstOfGroup(value=[Literal(value='wed',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_day_abbrs_uc': FirstOfGroup(value=[Literal(value='WED',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_day_names': FirstOfGroup(value=[Literal(value='Wednesday',re...,repeating=False,expanded=False,lookahead=False ), 'locale_day_names_lc': FirstOfGroup(value=[Literal(value='wednesday',re...,repeating=False,expanded=False,lookahead=False ), 'locale_day_names_uc': FirstOfGroup(value=[Literal(value='WEDNESDAY',re...,repeating=False,expanded=False,lookahead=False ), 'locale_month_abbrs': FirstOfGroup(value=[Literal(value='Sep',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_month_abbrs_lc': FirstOfGroup(value=[Literal(value='sep',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_month_abbrs_uc': FirstOfGroup(value=[Literal(value='SEP',report=T...,repeating=False,expanded=False,lookahead=False ), 'locale_month_names': FirstOfGroup(value=[Literal(value='September',re...,repeating=False,expanded=False,lookahead=False ), ...}, {'EOF': EOF(value=None,report=True,negative=False,option...,repeating=False,expanded=False,lookahead=False ), 'EOL': FirstOfGroup(value=[Literal(value='\r\n',report=...,repeating=False,expanded=False,lookahead=False ), 'ascii_letter': Range(value='abcdefghijklmnopqrstuvwxyzABCDEFGHI...,repeating=False,expanded=False,lookahead=False ), 'ascii_letters': Range(value='abcdefghijklmnopqrstuvwxyzABCDEFGHI...alse,repeating=1,expanded=False,lookahead=False ), 'ascii_lowercase': Range(value='abcdefghijklmnopqrstuvwxyz',report=...alse,repeating=1,expanded=False,lookahead=False ), 'ascii_lowercasechar': Range(value='abcdefghijklmnopqrstuvwxyz',report=...,repeating=False,expanded=False,lookahead=False ), 'ascii_uppercase': Range(value='ABCDEFGHIJKLMNOPQRSTUVWXYZ',report=...alse,repeating=1,expanded=False,lookahead=False ), 'ascii_uppercasechar': Range(value='ABCDEFGHIJKLMNOPQRSTUVWXYZ',report=...,repeating=False,expanded=False,lookahead=False ), 'digit': Range(value='0123456789',report=True,negative=Fa...,repeating=False,expanded=False,lookahead=False ), 'digits': Range(value='0123456789',report=True,negative=Fa...alse,repeating=1,expanded=False,lookahead=False ), ...}, {'c_comment': LibraryElement(value='slashbang_comment',report=...,repeating=False,expanded=False,lookahead=False ), 'c_nest_comment': LibraryElement(value='slashbang_nest_comment',re...,repeating=False,expanded=False,lookahead=False ), 'hash_comment': LibraryElement(value='hash_comment',report=True,...,repeating=False,expanded=False,lookahead=False ), 'semicolon_comment': LibraryElement(value='semicolon_comment',report=...,repeating=False,expanded=False,lookahead=False ), 'slashbang_comment': LibraryElement(value='slashbang_comment',report=...,repeating=False,expanded=False,lookahead=False ), 'slashbang_nest_comment': LibraryElement(value='slashbang_nest_comment',re...,repeating=False,expanded=False,lookahead=False ), 'slashslash_comment': LibraryElement(value='slashslash_comment',report...,repeating=False,expanded=False,lookahead=False )}, {'binary_number': LibraryElement(value='binary_number',report=True...,repeating=False,expanded=False,lookahead=False ), 'float': LibraryElement(value='float',report=True,negativ...,repeating=False,expanded=False,lookahead=False ), 'float_floatexp': LibraryElement(value='float_floatexp',report=Tru...,repeating=False,expanded=False,lookahead=False ), 'hex': LibraryElement(value='hex',report=True,negative=...,repeating=False,expanded=False,lookahead=False ), 'imaginary_number': LibraryElement(value='imaginary_number',report=T...,repeating=False,expanded=False,lookahead=False ), 'int': LibraryElement(value='int',report=True,negative=...,repeating=False,expanded=False,lookahead=False ), 'int_unsigned': LibraryElement(value='int_unsigned',report=True,...,repeating=False,expanded=False,lookahead=False ), 'number': LibraryElement(value='number',report=True,negati...,repeating=False,expanded=False,lookahead=False ), 'number_full': LibraryElement(value='number_full',report=True,n...,repeating=False,expanded=False,lookahead=False )}, {'ISO_date': LibraryElement(value='ISO_date',report=True,nega...,repeating=False,expanded=False,lookahead=False ), 'ISO_date_time': LibraryElement(value='ISO_date_time',report=True...,repeating=False,expanded=False,lookahead=False ), 'ISO_time': LibraryElement(value='ISO_time',report=True,nega...,repeating=False,expanded=False,lookahead=False )}, {'ISO_date_loose': LibraryElement(value='ISO_date_loose',report=Tru...,repeating=False,expanded=False,lookahead=False ), 'ISO_date_time_loose': LibraryElement(value='ISO_date_time_loose',repor...,repeating=False,expanded=False,lookahead=False ), 'ISO_time_loose': LibraryElement(value='ISO_time_loose',report=Tru...,repeating=False,expanded=False,lookahead=False )}, {'military_alphabet_char': FirstOfGroup(value=[Literal(value='Alpha',report...,repeating=False,expanded=False,lookahead=False ), 'military_alphabet_char_lower': FirstOfGroup(value=[Literal(value='alpha',report...,repeating=False,expanded=False,lookahead=False )}, {'string': LibraryElement(value='string',report=True,negati...,repeating=False,expanded=False,lookahead=False ), 'string_double_quote': LibraryElement(value='str',report=True,negative=...,repeating=False,expanded=False,lookahead=False ), 'string_single_quote': LibraryElement(value='str',report=True,negative=...,repeating=False,expanded=False,lookahead=False ), 'string_triple_double': LibraryElement(value='str',report=True,negative=...,repeating=False,expanded=False,lookahead=False ), 'string_triple_single': LibraryElement(value='str',report=True,negative=...,repeating=False,expanded=False,lookahead=False )}, {'civilian_timezone_name': FirstOfGroup(value=[Literal(value='ZP6',report=T...,repeating=False,expanded=False,lookahead=False ), 'military_timezone_name': FirstOfGroup(value=[Literal(value='Zulu',report=...,repeating=False,expanded=False,lookahead=False ), 'timezone_name': FirstOfGroup(value=[Literal(value='Zulu',report=...,repeating=False,expanded=False,lookahead=False )}])
Initialise the parser, creating the tagging table for it
 
declaration -- simpleparse ebnf declaration of the language being parsed
root -- root production used for parsing if none explicitly specified
prebuilts -- sequence of (name,value) tuples with prebuilt tables, values
    can be either objectgenerator EventToken sub-classes or TextTools
    tables
definitionSources -- dictionaries of common constructs for use
    in building your grammar
buildParser(self, production=None, processor=None)
Get a particular parsing table for a particular production

Methods inherited from BaseParser:
buildProcessor(self)
Build default processor object for this parser class
 
The default implementation returns None.  The processor
can either implement the "method source" API (just provides
information about Callouts and the like), or the processor
API and the method-source API.  The processor API merely
requires that the object be callable, and have the signature:
 
    object( (success, children, nextPosition), buffer)
 
(Note: your object can treat the first item as a single tuple
if it likes).
 
See: simpleparse.processor module for details.
parse(self, data, production=None, processor=None, start=0, stop=None)
Parse data with production "production" of this parser
 
data -- data to be parsed, a Python string, for now
production -- optional string specifying a non-default production to use
    for parsing data
processor -- optional pointer to a Processor or MethodSource object for
    use in determining reporting format and/or post-processing the results
    of the parsing pass.  Can be None if neither is desired (default)
start -- starting index for the parsing, default 0
stop -- stoping index for the parsing, default len(data)
resetBeforeParse(self)
Called just before the parser's parse method starts working,
 
Allows you to set up special-purpose structures, such as stacks
or local storage values.  There is no base implementation.  The
base implementation does nothing.

Data descriptors inherited from BaseParser:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Data
        __file__ = '/usr/src/tmp/python3-module-simpleparse-buildroo...r/lib/python3/site-packages/simpleparse/parser.py'
__name__ = 'simpleparse.parser'
__package__ = 'simpleparse'