baseparser.py :  » Parser » SimpleParse » SimpleParse-2.1.1a2 » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Parser » SimpleParse 
SimpleParse » SimpleParse 2.1.1a2 » baseparser.py
"""Base class for real-world parsers (such as parser.Parser)"""
from simpleparse.stt.TextTools.TextTools import *
from simpleparse.generator import Generator

class BaseParser:
  """Class on which real-world parsers build

  Normally you use a sub-class of this class, such as
  simpleparser.parser.Parser
  """
  _rootProduction = ""
  # primary API...
  def 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)
    """
    self.resetBeforeParse()
    if processor is None:
      processor = self.buildProcessor()
    if stop is None:
      stop = len(data)
    value = tag( data, self.buildTagger( production, processor), start, stop )
    if processor and callable(processor):
      return processor( value, data )
    else:
      return value
  # abstract methods
  def 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.
    """
    return None
  def buildTagger( self, name, processor ):
    """Build the tag-table for the parser

    This method must be implemented by your base class and _not_
    call the implementation here.
    """
    raise NotImplementedError( """Parser sub-class %s hasn't implemented a buildTagger method"""%(self.__class__.__name__))
  def 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.
    """
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.