*
':c       s    d  Z    d k Z d k Z  d k Z  d k Z  e i Z ! d f  d     YZ M d e f d     YZ d d e f d     YZ  d e f d	     YZ	  d
 e f d     YZ
  d e f d     YZ  d e f d     YZ  d   Z  d e f d     YZ  d e f d     YZ  d e f d     YZ d e f d     YZ ~d e f d     YZ d e f d     YZ d e f d     YZ d e f d      YZ (d! e f d"     YZ ;d# e f d$     YZ `d% e f d&     YZ d'   Z h  d( d) <d* d+ <d, d- <d. d/ <d0 d1 <d2 d3 <d4 d5 <d6 d7 <d8 d9 <d: d; <d< d= <Z d>   Z d?   Z d@   Z d S(A   s  Classes for nodes in the Expression tree

  Expression
   |--- Any           - match (or don't match) a set of characters
   |--- AnyEol        - match any newline representation ("
", "" or "
")
   |--- Assert        - used for positive and negative lookahead assertions 
   |--- AtBeginning   - match the beginning of a line
   |--- AtEnd         - match the end of a line
   |--- Dot           - match any character except newline
   |--- Group         - give a group name to an expression
   |--- GroupRef      - match a previously identified expression
   |--- Literal       - match (or don't match) a single character
   |--- MaxRepeat     - greedy repeat of an expression, within min/max bounds
   |--- PassThrough   - used when overriding 'make_parser'; match its subexp
   |      |--- HeaderFooter - files with a header, records and a footer
   |      `--- ParseRecords - parse a record at a time
   |--- Str           - match a given string
   `--- ExpressionList  - expressions containing several subexpressions
          |--- Alt    - subexp1 or subexp2 or subexp3 or ...
          `--- Seq    - subexp1 followed by subexp2 followed by subexp3 ...


Ns
   Expressionc      st   ! d  Z  " # d   Z ( d   Z - d   Z 1 d   Z 9 d   Z = d   Z A d d  Z G d d	  Z RS(
   s+   Base class for nodes in the Expression treec    sA   # $ % t  o t | t  p
 t d  & t |  | f  Sd S(   sA   returns an Expression to match this Expression then the other ones   RHS of '+' not an ExpressionN(   s	   __debug__s
   isinstances   others
   Expressions   AssertionErrors   Seqs   self(   s   selfs   other(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __add__# s   $c    sA   ( ) * t  o t | t  p
 t d  + t |  | f  Sd S(   sO   returns an Expression matching this Expression or (if that fails) the other ones   RHS of '|' not an ExpressionN(   s	   __debug__s
   isinstances   others
   Expressions   AssertionErrors   Alts   self(   s   selfs   other(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __or__( s   $c    s   - . / f  Sd S(   s@   the list of group names used by this Expression and its childrenN(    (   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_names- s   c    s   1 5 7 d S(   s   internal function used by 'select_names'.

        Don't call this function.  Will likely be removed in future versions.
        N(    (   s   selfs   names(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _select_names1 s   c    s   9 : ; t   d S(   s&   do a deep copy on this Expression treeN(   s   NotImplementedError(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy9 s   c    s   = > ? t   d S(   s    the corresponding pattern stringN(   s   NotImplementedError(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__= s   i    c    sJ   A B C d k  } D | i |  |  \ } } E t i | | | f  Sd S(   s-   create a SAX compliant parser for this regexpN(   s   Generates   generates   selfs   debug_levels   tagtables   want_flgs   Parser(   s   selfs   debug_levels   want_flgs   Generates   tagtable(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_parserA s   c    s2   G H I d k  } J | i  |  i |  |  Sd S(   s"   create an iterator for this regexpN(   s   Iterators   selfs   make_parsers   debug_levels   tag(   s   selfs   tags   debug_levels   Iterator(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_iteratorG s   (	   s   __doc__s   __add__s   __or__s   group_namess   _select_namess   copys   __str__s   make_parsers   make_iterator(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys
   Expression! s   	s   Anyc      s,   M N d d  Z  W d   Z [ d   Z RS(   Ni    c    s"   N S T | |  _  U | |  _ d S(   s   (chars, invert = 0)

        Match any of the characters appearing in the 'chars' string.
        If 'invert' is true, match a character not in the string.
        N(   s   charss   selfs   invert(   s   selfs   charss   invert(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__N s   c    s    W X Y t  |  i |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   Anys   selfs   charss   invert(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copyW s   c    sC   [ \ ] |  i o ^ d t |  i  Sn ` d t |  i  Sd S(   s    the corresponding pattern strings   [^%s]s   [%s]N(   s   selfs   inverts   _minimize_any_ranges   chars(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__[ s   (   s   __init__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   AnyM s   	s   Assertc      s,   d e d d  Z  t d   Z x d   Z RS(   Ni    c    s"   e p q | |  _  r | |  _ d S(   s  (expression, invert = 0)

        A non-consuming assertion using the given expression.
        The default is a positive lookahead, which matches if the expression
        matches at the current position, but does not affect the character
        position.

        If 'invert' is false, this is a negative lookahead assertion,
        and matches if the expression does not match.  Again, the character
        position is not affected.
        N(   s
   expressions   selfs   invert(   s   selfs
   expressions   invert(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__e s   c    s&   t u v t  |  i i   |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   Asserts   selfs
   expressions   copys   invert(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copyt s   c    sC   x y z |  i o { d t |  i  Sn } d t |  i  Sd S(   s    the corresponding pattern strings   (?!%s)s   (?=%s)N(   s   selfs   inverts   strs
   expression(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__x s   (   s   __init__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Assertd s   s   AtBeginningc      s&    d  Z    d   Z  d   Z RS(   s   Match the beginning of a linec    s      t    Sd S(   s&   do a deep copy on this Expression treeN(   s   AtBeginning(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s      d Sd S(   s    the corresponding pattern strings   ^N(    (   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __doc__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   AtBeginning s   	s   AtEndc      s&    d  Z    d   Z  d   Z RS(   s   Match the end of a linec    s      t    Sd S(   s&   do a deep copy on this Expression treeN(   s   AtEnd(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s      d Sd S(   s    the corresponding pattern strings   $N(    (   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __doc__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   AtEnd s   	s   Dotc      s&    d  Z    d   Z  d   Z RS(   s"   Match any character except newlinec    s      t    Sd S(   s&   do a deep copy on this Expression treeN(   s   Dot(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s      d Sd S(   s    the corresponding pattern strings   .N(    (   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __doc__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Dot s   	s   AnyEolc      s&    d  Z    d   Z  d   Z RS(   s"   Match a newline ("
", "" or "
")c    s      t    Sd S(   s&   do a deep copy on this Expression treeN(   s   AnyEol(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s      d Sd S(   s    the corresponding pattern strings
   (\n|\r\n?)N(    (   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __doc__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   AnyEol s   	c    sP     t  o |  p
 t d   t i |   o  t d t |    n d  S(   Ns&   Group name can not be the empty strings"   Illegal character in group name %s(   s	   __debug__s   ss   AssertionErrors	   sre_parses   isnames   repr(   s   s(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _verify_name s   s   Groupc      sA     d   Z   d   Z  d   Z  d   Z  d   Z RS(   Nc    sC      | t j	 o  t |  n  | |  _   | |  _ d S(   sc   (name, expression)

        Create a group named 'name' which matches the given expression
        N(   s   names   Nones   _verify_names   selfs
   expression(   s   selfs   names
   expression(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__ s
   c    si      |  i i   }  |  i t j	 o3  |  i | j o  | Sn  |  i f | Sn  | Sd S(   s@   the list of group names used by this Expression and its childrenN(   s   selfs
   expressions   group_namess   subnamess   names   None(   s   selfs   subnames(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_names s   c    sP      |  i t j	 o |  i | j o  t |  _ n  |  i i |  d S(   s   internal function: do not useN(   s   selfs   names   Nones   namess
   expressions   _select_names(   s   selfs   names(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _select_names s   #c    s&      t  |  i |  i i    Sd S(   s&   do a deep copy on this Expression treeN(   s   Groups   selfs   names
   expressions   copy(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    sR      |  i t j o  d t |  i  Sn  d |  i t |  i  f Sd S(   s    the corresponding pattern strings   (%s)s
   (?P<%s>%s)N(   s   selfs   names   Nones   strs
   expression(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __init__s   group_namess   _select_namess   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Group s
   	
s   GroupRefc      s)     d   Z   d   Z  d   Z RS(   Nc    s#      t  |   | |  _ d S(   sV   (name)

        Match the same text previously found by the given named group
        N(   s   _verify_names   names   self(   s   selfs   name(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__ s   c    s      t  |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   GroupRefs   selfs   name(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s      d |  i Sd S(   s    the corresponding pattern strings   (?P=%s)N(   s   selfs   name(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ s   (   s   __init__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   GroupRef s   s   Literalc      s,     d d  Z   d   Z d   Z RS(   Ni    c    s"      | |  _   | |  _ d S(   s   (char, invert = 0)

        Match the given character or, if 'invert' is true, match a character
        which is not this character.
        N(   s   chars   selfs   invert(   s   selfs   chars   invert(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__ s   c    s      t  |  i |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   Literals   selfs   chars   invert(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy s   c    s?   t  |  i  } |  i o d | Sn | Sd S(   s    the corresponding pattern strings   [^%s]N(   s   escapes   selfs   chars   cs   invert(   s   selfs   c(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__s
   (   s   __init__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Literal s   	s	   MaxRepeatc      sG   d e  d  Z :d   Z @d   Z Ed   Z Id   Z RS(   Ni    c    s  ')| |  _  ,t |  t d  j ot -t o d | j p t d |  /t |  t d  j o/ 0t o! | | j p t d | | f  n nF 3t |  t d  j o) 4t o | d j p t d |  n 7| |  _ 8| |  _ d S(   s  (expression, min_count = 0, max_count = MAXREPEAT)

        Match the expression at least 'min_count' times and no more
        than 'max_count' times.  If max_count == MAXREPEAT then
        there is no fixed upper limit.

        min_count and max_count can be strings, in which case they are
        used as "named group repeats."  That is, they are taken to be
        group names and used to find the repeat counts during
        evaluation time.  The current implementation only understands
        named group repeats when min_count == max_count.

        The grouping is greedy.

        WARNING: There is no check to ensure that a match of 0 size is
        repeated indefinitely, as with "(a?)*" against the string "b".
        This will loop forever.

        WARNING: The current implementation does not support
        backtracking in MaxRepeats, so ".*
" will not match "
".
        Use a more explicit construct instead, like "[^
]*
".

        i    s&   min_count must be non-negative, not %ds(   min_count (%d) must be <= max_count (%d)s&   max_count must be non-negative, not %dN(   s
   expressions   selfs   types	   min_counts	   __debug__s   AssertionErrors	   max_count(   s   selfs
   expressions	   min_counts	   max_count(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__s   %3)c    s   :;>|  i i   Sd S(   s@   the list of group names used by this Expression and its childrenN(   s   selfs
   expressions   group_names(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_names:s   c    s/   @ABt  |  i i   |  i C|  i  Sd S(   s&   do a deep copy on this Expression treeN(   s	   MaxRepeats   selfs
   expressions   copys	   min_counts	   max_count(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy@s   c    s   EFG|  i i |  d S(   s   internal function: do not useN(   s   selfs
   expressions   _select_namess   names(   s   selfs   names(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _select_namesEs   c    sA  IJK|  i } L|  i } M|  i } Rt | t  o Sd } n* Tt | t  o Wd } n
 Yd } [| o \d t	 |  } n ^t	 |  } at |  t d  j p t |  t d  j o8 c| | j o dd | } n fd | | f } n#i| d j o
 | t j o jd } n k| d j o
 | t j o ld } n m| d j o
 | d j o nd	 } n o| | j o
 d j n o pd } nw q| | j o rd
 | } nV s| d j o td | } n5 u| t j o vd | } n xd | | f } z| | Sd S(   s    the corresponding pattern stringi   i    s   (%s)s    s   {%s}s   {%s,%s}s   *s   +s   ?s   {%d}s   {,%d}s   {%d,}s   {%d,%d}N(   s   selfs	   min_counts	   max_counts
   expressions   subexps
   isinstances   ExpressionLists
   need_groups   Strs   strs   ss   types   exts	   MAXREPEAT(   s   selfs	   min_counts
   need_groups   ss	   max_counts   exts   subexp(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__Is@   	
5!(   s	   MAXREPEATs   __init__s   group_namess   copys   _select_namess   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys	   MaxRepeats
   +s   PassThroughc      sA   ~d   Z  d   Z d   Z d   Z d   Z RS(   Nc    s   | |  _  d S(   s   (expression)

        Match the given subexpression.  This class should not be used
        directly.  It is meant for generating specialized parsers which
        read a record at a time.
        N(   s
   expressions   self(   s   selfs
   expression(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__s   c    s   |  i i |  d  S(   N(   s   selfs
   expressions   _select_namess   names(   s   selfs   names(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _select_namess   c    s   t  |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   PassThroughs   selfs
   expression(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copys   c    s   t  |  i  Sd S(   s    the corresponding pattern stringN(   s   strs   selfs
   expression(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__s   c    s   |  i i   Sd  S(   N(   s   selfs
   expressions   group_names(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_namess   (   s   __init__s   _select_namess   copys   __str__s   group_names(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   PassThrough~s
   s   HeaderFooterc      sG   d   Z  d   Z d d  Z d d  Z d   Z RS(   Nc    sN  | t j oA t o! | t j o
 | t j p t  t | d  } n | t | d  } | t j	 o | | } n, t o! |	 t j o
 |
 t j p t  t i |  t | |   | |  _ | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _	 |	 |  _
 |
 |  _ d  S(   Ni   (   s   header_expressions   Nones	   __debug__s   make_header_readers   header_argss   AssertionErrors	   MaxRepeats   record_expressions   exps   footer_expressions   make_footer_readers   footer_argss   PassThroughs   __init__s   selfs   Groups   format_names   make_record_readers   record_args(   s   selfs   format_names   header_expressions   make_header_readers   header_argss   record_expressions   make_record_readers   record_argss   footer_expressions   make_footer_readers   footer_argss   exp(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__s$   ++c    s   |  i } | t j	 o | i   } n |  i } | t j	 o | i   } n |  i } | t j	 o | i   } n t	 |  i
 | |  i |  i | |  i |  i | |  i |  i 
 Sd  S(   N(   s   selfs   header_expressions
   header_exps   Nones   copys   record_expressions
   record_exps   footer_expressions
   footer_exps   HeaderFooters   format_names   make_header_readers   header_argss   make_record_readers   record_argss   make_footer_readers   footer_args(   s   selfs
   footer_exps
   header_exps
   record_exp(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copys      i    c    s  d  k  } d  k } d } |  i t j	 o@ | i |  i d | \ } }	 |  i
 } |  i } n( f  } d }	 t f } t } | i |  i d | \ } } |  i } |  i }
 | p |	 } |  i t j	 o@ | i |  i d | \ } } |  i } |  i } n% f  } d }	 t } t } | p |	 } t i |  i | | | | |
 | | | | | | f  Sd  S(   Ni    s   debug_level(   s   Generates   RecordReaders   wants   selfs   header_expressions   Nones   generates   debug_levels   header_tagtables   want_flgs   make_header_readers   header_argss   record_expressions   record_tagtables	   want_flags   make_record_readers   record_argss   footer_expressions   footer_tagtables   make_footer_readers   footer_argss   Parsers   HeaderFooterParsers   format_name(   s   selfs   debug_levels   header_tagtables   make_header_readers   Generates   make_record_readers   record_tagtables   footer_argss   wants   want_flgs   record_argss   footer_tagtables   RecordReaders   make_footer_readers	   want_flags   header_args(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_parsers>   								c    s)   t  d  |  i i |  |  Sd  S(   Ns   Need an IteratorHeaderFooter(   s   NotImplementedErrors   selfs
   expressions   make_iterators   tag(   s   selfs   tags   debug_level(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_iterators   c    s   |  i i   Sd  S(   N(   s   selfs
   expressions   group_names(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_namess   (   s   __init__s   copys   make_parsers   make_iterators   group_names(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   HeaderFooters
   -s   ParseRecordsc      sJ   f  d  Z  d   Z  d d  Z d d  Z d   Z RS(   Nc    s_   t  i |  t | t | d    | |  _ | |  _ | |  _ | |  _ d  S(   Ni   (	   s   PassThroughs   __init__s   selfs   Groups   format_names	   MaxRepeats   record_expressions   make_readers   reader_args(   s   selfs   format_names   record_expressions   make_readers   reader_args(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__s   c    s5   t  |  i |  i i   |  i |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   ParseRecordss   selfs   format_names   record_expressions   copys   make_readers   reader_args(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copys   i    c    se    d  k  } | i |  i |  \ } } t i |  i	 | | | f |  i
 |  i  Sd  S(   N(   s   Generates   generates   selfs   record_expressions   debug_levels   tagtables   want_flgs   Parsers   RecordParsers   format_names   make_readers   reader_args(   s   selfs   debug_levels   want_flgs   Generates   tagtable(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_parser s   c    sq   	
d k  } | |  i j o |  i i |  |  Sn | i |  i i |  |  i
 |  i |  Sd S(   s"   create an iterator for this regexpN(   s   Iterators   tags   selfs   format_names
   expressions   make_iterators   IteratorRecordss   record_expressions   make_parsers   debug_levels   make_readers   reader_args(   s   selfs   tags   debug_levels   Iterator(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   make_iterators   c    s   |  i i   Sd  S(   N(   s   selfs
   expressions   group_names(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_namess   (   s   __init__s   copys   make_parsers   make_iterators   group_names(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   ParseRecordss
   
s   Strc      s)   d   Z  d   Z "d   Z RS(   Nc    s   | |  _ d S(   sN   (s)

        Match the given string exactly (not as a regexp pattern)
        N(   s   ss   selfs   string(   s   selfs   s(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__s   c    s    t  |  i  Sd S(   s&   do a deep copy on this Expression treeN(   s   Strs   selfs   string(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copys   c    s   "#$t  |  i  Sd S(   s    the corresponding pattern stringN(   s   escapes   selfs   string(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__"s   (   s   __init__s   copys   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Strs   s   ExpressionListc      s2   (d  Z  )*d   Z 1d   Z 5d   Z RS(   s?   shares implementation used by 'Expressions with subexpressions'c    sn   *+,h  } -xB |  i d -r2 } .x& | i   d .r } /d | | <q9 Wq W0t | i    Sd S(   s?   the list of group names used by this Expression or its childreni    i   N(   s   namess   selfs   expressionss   exps   group_namess   names   tuples   keys(   s   selfs   exps   namess   name(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   group_names*s   	 	 	c    s6   123x& |  i d 3r } 4| i |  q Wd S(   s   internal function.  Do not use.i    N(   s   selfs   expressionss   exps   _select_namess   names(   s   selfs   namess   exp(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _select_names1s    	c    s)   567|  i t d   |  i   Sd S(   s&   do a deep copy on this Expression treec    s   7|  i   S(   N(   s   xs   copy(   s   x(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   <lambda>7s    N(   s   selfs	   __class__s   maps   expressions(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   copy5s   (   s   __doc__s   group_namess   _select_namess   copy(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   ExpressionList(s   	s   Altc      s2   ;d  Z  >?d   Z Nd   Z Zd   Z RS(   s:   An Expression tree with a list of alternate matches.

    c    sE   ?IJt  |  t  g   j o Kt |  } n L| |  _ d S(   sP  (expressions)

        Match one of a list of alternate expressions.  The expressions are
        tested in their input order.

        For example, Alt( (exp1, exp2, exp3) ) means try to match exp1,
        and if that fails try to match exp2, and if that fails, try to
        match exp3.  If *that* fails, the match failed.

        N(   s   types   expressionss   tuples   self(   s   selfs   expressions(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__?s   
c    sL   NQt  | t  o Vt |  i | i  Sn Xt |  i | f  Sd  S(   N(   s
   isinstances   others   Alts   selfs   expressions(   s   selfs   other(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __or__Ns   c    s)   Z[\t  i t t |  i  d  Sd S(   s    the corresponding pattern strings   |N(   s   strings   joins   maps   strs   selfs   expressions(   s   self(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__Zs   (   s   __doc__s   __init__s   __or__s   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Alt;s   	s   Seqc      s2   `d  Z  abd   Z nd   Z td   Z RS(   sC   An Expression matching a set of subexpressions, in sequential orderc    sE   bhit  |  t  g   j o kt |  } n l| |  _ d S(   s   (expressions)

        Match the list of sequential expressions, in order.  Each
        expression starts matching at the point where the previous
        match finished.
        N(   s   types   expressionss   tuples   self(   s   selfs   expressions(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __init__bs   c    sL   npt  | t  o qt |  i | i  Sn rt |  i | f  Sd  S(   N(   s
   isinstances   others   Seqs   selfs   expressions(   s   selfs   other(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __add__ns   c    s   tuwg  } xx` |  i d xrP } yt |  } zt | t  o {| i d |  n }| i |  q W~t	 i
 | d  Sd S(   s    the corresponding pattern stringi    s   (%s)s    N(   s   patternss   selfs   expressionss   exps   strs   patterns
   isinstances   Alts   appends   strings   join(   s   selfs   exps   patterns   patterns(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   __str__ts   	 	(   s   __doc__s   __init__s   __add__s   __str__(    (    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   Seq`s   	c    s   t  |   } t i d t i d } xr t t |    d rY } |  | } | | j o6 | d j o d | | <n d | | | <n qH Wt i | d  Sd S(	   s2   Escape all non-alphanumeric characters in pattern.s   _s    i    s    s   \000s   \s    N(   s   lists   patterns   results   strings   letterss   digitss   alphanums   ranges   lens   is   chars   join(   s   patterns   is   results   alphanums   char(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   escapes    	 s   \as   s   \bs   s   \ns   
s   \rs   s   \ts   	s   \fs   s   \vs   s   \[s   [s   \]s   ]s   \\s   \s   \^s   ^c    sc   t  i |   } | t j o0 t |   d j  o d |  Sn |  Sn | Sd S(   s>   (c) -> into an appropriately escaped pattern for the characteri    s   \N(   s   _minimize_escape_charss   gets   cs   xs   Nones   ord(   s   cs   x(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _minimize_escape_chars   c    s   t  |   d t  |  j o t |   t |  Sn |  d j o
 | d j o d Sn t |   d t |  Sd S(   sE   (c1, c2) -> the pattern for the range bounded by those two charactersi   s   0s   9s   \ds   -N(   s   ords   c1s   c2s   _minimize_escape_char(   s   c1s   c2(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _minimize_escape_ranges    c    s_  |  o |  Sn d } d |  j o% d } t i |  d d  }  n t |   } | i   g  } t }
 x@ | d r3 }	 |	 |
 j o | i |	  |	 }
 n q Wt i | d  }  d } t } d } d } x | d r }	 t |	  } | d | j o{ | t j o d } n[ | | d j o | t |  |  } n# | t |  | |  | d  } | } n | } | d } qW|  oU | | d j o | t |  |  } n# | t |  | |  | d  } n | o | d } n | Sd S(   s   s -> a string useable inside [] which matches all the characters in s

    For example, passing in "0123456789" returns "\d".

    This code isn't perfect.  For example, "_ABC...Zabc...z" should
    convert to "\w".
    i    s   -i   s    N(   s   ss
   has_hyphens   strings   replaces   lists   charss   sorts   uniques   Nones   prev_cs   cs   appends   joins   ts   prevs   prev_poss   poss   ords   vals   _minimize_escape_chars   _minimize_escape_range(   s   ss   prev_poss   prevs   ts
   has_hyphens   poss   uniques   charss   vals   cs   prev_c(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   _minimize_any_rangesT   				 					 	"	
&
(   s   __doc__s   res   strings	   sre_parses   Parsers	   MAXREPEATs
   Expressions   Anys   Asserts   AtBeginnings   AtEnds   Dots   AnyEols   _verify_names   Groups   GroupRefs   Literals	   MaxRepeats   PassThroughs   HeaderFooters   ParseRecordss   Strs   ExpressionLists   Alts   Seqs   escapes   _minimize_escape_charss   _minimize_escape_chars   _minimize_escape_ranges   _minimize_any_range(   s   Anys   HeaderFooters	   sre_parses   strings   Alts   res   Asserts   _minimize_escape_chars   _minimize_any_ranges   GroupRefs   Parsers   _verify_names   ParseRecordss   Seqs	   MaxRepeats   _minimize_escape_charss   Dots
   Expressions   _minimize_escape_ranges   escapes   Strs   ExpressionLists   Literals   AtEnds   PassThroughs   AnyEols   Groups   AtBeginnings	   MAXREPEAT(    (    s;   /mit/seven/lib/python2.1/site-packages/Martel/Expression.pys   ? s8   ,!

'p`$%$l	