spug.nml.parse
index
/home/mmuller/w/spug/nml/parse.py

#==============================================================================
#
#  $Id: parse.py 848 2004-10-02 01:08:06Z mike $
#
#  Contains DocParser which parses an NML TextBlock out of a stream.
#
#  Copyright (C) 1998 Michael A. Muller
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#  $Log: parse.py,v $
#  Revision 1.10  2004/10/02 01:08:06  mike
#  Fixed exception.
#
#  Revision 1.9  2001/11/28 01:41:41  mike
#  Fixes for 2.1
#
#  Revision 1.8  2000/02/13 22:08:52  mike
#  Doc fixes.
#
#  Revision 1.7  1999/05/23 17:55:34  mike
#  Fixed comments and added a warning message if block formatting constructs
#  are discovered in a text formatting entry.
#
#  Revision 1.6  1999/05/10 22:27:52  mike
#  Definition terms can now safely contain embedded double-colons.
#
#  Revision 1.5  1998/12/02 20:48:06  mike
#  Added special syntax for level 1, 2, and 3 headers.
#
#  Revision 1.4  1998/11/03 01:37:35  mike
#  Improved error processing, fixed problem with block terminators.
#
#  Revision 1.3  1998/08/14 15:26:32  mike
#  Added support for parsing "exec" blocks.
#
#  Revision 1.2  1998/06/14 00:40:39  mike
#  Changed name of 'code' type to 'tele'.
#
#  Revision 1.1  1998/06/11 01:27:27  mike
#  Initial revision
#
#
#==============================================================================

 
Modules
       
os
re
string

 
Classes
       
exceptions.Exception(exceptions.BaseException)
nml.parse.DocParseError
nml.parse.DocParser

 
class DocParseError(exceptions.Exception)
    DocParseError is thrown when an error occurs while parsing a document.
 
XXX should be derived from @StdError.FileParseError
 
 
Method resolution order:
DocParseError
exceptions.Exception
exceptions.BaseException
__builtin__.object

Methods defined here:
__init__(self, txt, src=None, blk=None)
Constructs a *DocParseError*.
/txt/::
    exception text
/src/::
    Source file.  Used to provide error location information.
/blk/::
    Block that the exception was thrown during the parsing of (used
    to provide a block start location.
__str__(self)
Formats the receiver as a string.  The string form of a block is the
members of the block seperated by whitespace.  No leading or trailing
whitespace is appended, all nested blocks are recursively converted to
strings.

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8140ce0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
class DocParser
    A Document parser us used to parse a TextBlock out of a stream.
 
  Methods defined here:
__init__(self, src)
Constructs a DocParser from the given source stream.
parseAnything(self, block, indent)
Not entirely sure where this fits in: parses meta-level structures,
recognizes special sequences for unordered lists and definition lists
and paragraphs.
parseDoc(self)
Parse (and return) the entire document from the stream.

Data and other attributes defined here:
blockTerminatorrx = <_sre.SRE_Pattern object at 0x82e6788>
definitionrx = <_sre.SRE_Pattern object at 0x82674b8>
definitiontokrx = <_sre.SRE_Pattern object at 0x8223910>
preEndrx = <_sre.SRE_Pattern object at 0x8223860>
preStartrx = <_sre.SRE_Pattern object at 0x82237b0>
prelitEndrx = <_sre.SRE_Pattern object at 0x8223700>
prelitStartrx = <_sre.SRE_Pattern object at 0x8223650>
rxspecial = (')', ']', '}')
special = <_sre.SRE_Pattern object at 0x82e29c0>
types = {'#': <nml.block.BlockType instance at 0x82ab8ac>, '*': <nml.block.BlockType instance at 0x82ab86c>, '/': <nml.block.BlockType instance at 0x82ab82c>, r'\': <nml.block.AnyBlockType instance at 0x82ab96c>, '_': <nml.block.BlockType instance at 0x82ab80c>, '`': <nml.block.BlockType instance at 0x82ab90c>}
underlinerx = <_sre.SRE_Pattern object at 0x82e26d8>
unorderedrx = <_sre.SRE_Pattern object at 0x8213d40>
wsrx = <_sre.SRE_Pattern object at 0x821a800>

 
Functions
       
escapeString(str)
This function is used to take a string that contains literal text
and escape all special NML characters in it.  Block level formatting
sequences are not considered.

 
Data
        StringTypes = (<type 'str'>, <type 'unicode'>)
special = <_sre.SRE_Pattern object at 0x401d8e30>