
tFSc           @   s  d  Z  d Z d d l Z d d l Z d d l Z d d l Z d d l Z y e j e j f Z	 Wn e
 k
 r} e e f Z	 n Xe j d d k  r d   Z n	 d   Z e j d  Z d	 e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d f  d     YZ d   Z d   Z d   Z d   Z d   Z d e f d     YZ e e d d d d d d e e d 
 Z e e d  Z  d   Z! e! Z" d S(   s   3.4s   3.2iNi    i   c         C   s   |  j  S(   N(   t	   func_code(   t   f(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR    3   s    c         C   s   |  j  S(   N(   t   __code__(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR    6   s    s   ^[a-zA-Z0-9_]+$t   LexErrorc           B   s   e  Z d    Z RS(   c         C   s   | f |  _  | |  _ d  S(   N(   t   argst   text(   t   selft   messaget   s(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __init__@   s    (   t   __name__t
   __module__R	   (    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   ?   s   t   LexTokenc           B   s   e  Z d    Z d   Z RS(   c         C   s    d |  j  |  j |  j |  j f S(   Ns   LexToken(%s,%r,%d,%d)(   t   typet   valuet   linenot   lexpos(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __str__F   s    c         C   s
   t  |   S(   N(   t   str(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __repr__H   s    (   R
   R   R   R   (    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   E   s   	t	   PlyLoggerc           B   s8   e  Z d    Z d   Z d   Z d   Z e Z e Z RS(   c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR	   O   s    c         O   s   |  j  j | | d  d  S(   Ns   
(   R   t   write(   R   t   msgR   t   kwargs(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   criticalQ   s    c         O   s    |  j  j d | | d  d  S(   Ns	   WARNING: s   
(   R   R   (   R   R   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   warningT   s    c         O   s    |  j  j d | | d  d  S(   Ns   ERROR: s   
(   R   R   (   R   R   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   errorW   s    (   R
   R   R	   R   R   R   t   infot   debug(    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   N   s   				t
   NullLoggerc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  S(   N(    (   R   t   name(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __getattribute___   s    c         O   s   |  S(   N(    (   R   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __call__a   s    (   R
   R   R   R    (    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   ^   s   	t   Lexerc           B   s   e  Z d    Z d d  Z d d  Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z e Z RS(   c         C   s   d  |  _ d  |  _ i  |  _ i  |  _ i  |  _ d |  _ g  |  _ d  |  _ i  |  _	 i  |  _
 d |  _ d  |  _ d |  _ d |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ d |  _ d |  _ d  S(   Nt   INITIALi    t    i   (   t   Nonet   lexret	   lexretextt
   lexstateret   lexstateretextt   lexstaterenamest   lexstatet   lexstatestackt   lexstateinfot   lexstateignoret   lexstateerrorft
   lexreflagst   lexdataR   t   lexlent	   lexerrorft	   lextokenst	   lexignoret   lexliteralst	   lexmoduleR   t   lexoptimize(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR	   s   s*    																				c      	   C   s3  t  j  |   } | r/i  } x |  j j   D] \ } } g  } xw | D]o \ } } g  }	 xZ | D]R }
 |
 su |
 d r |	 j |
  q] n  |	 j t | |
 d j  |
 d f  q] WqD W| j | |	 f  | | | <q+ W| | _ i  | _ x6 |  j j   D]% \ } } t | | j  | j | <q W| | _ n  | S(   Ni    i   (   t   copyR'   t   itemst   appendt   getattrR
   R.   R6   (   R   t   objectt   ct   newtabt   keyt   ritemt   newret   cret   findext	   newfindexR   t   ef(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   clone   s(    /		R#   c         C   si  t  | t j  r d  S| j d  d } t j j | |  d } t | d  } | j d | t	 f  | j d t
 t	   | j d t
 |  j   | j d t
 |  j   | j d	 t
 |  j   | j d
 t
 |  j   i  } |  j d } g  } xC | D]; }	 x2 |	 d D]& }
 |
 r|
 d r| j |
  qqWqWx |  j j   D]s \ } } g  } xT t t |   D]@ } | j |  j | | t | | d |  j | |  f  q{W| | | <qVW| j d t
 |   | j d t
 |  j   i  } x= |  j j   D], \ } } | r6| j | | <qd  | | <qW| j d t
 |   | j   d  S(   Nt   .is   .pyt   wsJ   # %s.py. This file automatically created by PLY (version %s). Don't edit!
s   _tabversion   = %s
s   _lextokens    = %s
s   _lexreflags   = %s
s   _lexliterals  = %s
s   _lexstateinfo = %s
R"   i   i    s   _lexstatere   = %s
s   _lexstateignore = %s
s   _lexstateerrorf = %s
(   t
   isinstancet   typest
   ModuleTypet   splitt   ost   patht   joint   openR   t   __version__t   reprR3   R/   R5   R,   R'   R:   R9   t   ranget   lenR(   t   _funcs_to_namesR)   R-   R.   R
   R$   t   close(   R   t   tabfilet	   outputdirt   basetabfilenamet   filenamet   tft   tabret   initialt   initialfuncst   partR   R?   t   lret   titemt   it   taberrRE   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   writetab   s@    >c         B   s  e  | e j  r | } nG e j d d k  r= d | d  Un% i  } d | | | f d  U| d } e | d d  e k r e d   n  | j |  _	 | j
 |  _ | j |  _ | j |  _ | j |  _ i  |  _ i  |  _ x | j j   D] \ } } g  } g  } xq e e |   D]] }	 | j e j | |	 d | j
 e j B e | |	 d |  f  | j | |	 d  qW| |  j | <| |  j | <q Wi  |  _ x. | j j   D] \ } }
 | |
 |  j | <qW|  j d	  d  S(
   Ni    i   s   import %s as lextabt   lextabt   _tabversions   0.0s   Inconsistent PLY versioni   R"   (    RI   RJ   RK   t   syst   version_infoR;   RQ   t   ImportErrort
   _lextokensR3   t   _lexreflagsR/   t   _lexliteralsR5   t   _lexstateinfoR,   t   _lexstateignoreR-   R'   R(   t   _lexstatereR9   RS   RT   R:   t   ret   compilet   VERBOSEt   _names_to_funcsR.   t   _lexstateerrorft   begin(   R   RW   t   fdictRe   t   envR?   R`   Ra   t   txtitemRb   RE   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   readtab   s8    	
		B	c         C   sM   | d  } t  | t  s( t d   n  | |  _ d |  _ t |  |  _ d  S(   Ni   s   Expected a stringi    (   RI   t   StringTypest
   ValueErrorR0   R   RT   R1   (   R   R   R=   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   input   s    
		c         C   s{   | |  j  k r t d   n  |  j  | |  _ |  j | |  _ |  j j | d  |  _ |  j j | d   |  _
 | |  _ d  S(   Ns   Undefined stateR#   (   R'   R{   R%   R(   R&   R-   t   getR4   R.   R$   R2   R*   (   R   t   state(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyRu     s    c         C   s$   |  j  j |  j  |  j |  d  S(   N(   R+   R:   R*   Ru   (   R   R~   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt
   push_state  s    c         C   s   |  j  |  j j    d  S(   N(   Ru   R+   t   pop(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt	   pop_state  s    c         C   s   |  j  S(   N(   R*   (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   current_state   s    c         C   s   |  j  | 7_  d  S(   N(   R   (   R   t   n(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   skip&  s    c         C   s  |  j  } |  j } |  j } |  j } x| | k  r| | | k rS | d 7} q' n  x|  j D]Q\ } } | j | |  } | s q] n  t   } | j   | _ |  j	 | _	 | | _  | j
 }	 | |	 \ }
 | _ |
 s| j r | j   |  _  | S| j   } Pn  | j   } |  | _ | |  _ | |  _  |
 |  } | sQ|  j  } |  j } Pn  |  j s| j |  j k rt d t |
  j t |
  j |
 j | j f | |   qn  | SW| | |  j k rt   } | | | _ |  j	 | _	 | j | _ | | _  | d |  _  | S|  j rt   } |  j | | _ |  j	 | _	 d | _ |  | _ | | _  | |  _  |  j |  } | |  j  k rt d | | | |   n  |  j  } | sq' n  | S| |  _  t d | | | f | |   q' W| d |  _  |  j d  k rt d   n  d  S(   Ni   s4   %s:%d: Rule '%s' returned an unknown token type '%s'R   s&   Scanning error. Illegal character '%s's"   Illegal character '%s' at index %ds"   No input string given with input()(   R   R1   R4   R0   R%   t   matchR   t   groupR   R   t	   lastindexR   t   endt   lexert   lexmatchR7   R3   R   R    t   co_filenamet   co_firstlinenoR
   R5   R2   R$   t   RuntimeError(   R   R   R1   R4   R0   R%   t   lexindexfunct   mt   tokRb   t   funct   newtok(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   token0  s    				
 										#									 	%c         C   s   |  S(   N(    (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   __iter__  s    c         C   s%   |  j    } | d  k r! t  n  | S(   N(   R   R$   t   StopIteration(   R   t   t(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   next  s    	N(   R
   R   R	   R$   RF   Rd   Ry   R|   Ru   R   R   R   R   R   R   R   t   __next__(    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR!   r   s   	+	%						
	a		c         C   s   y
 t   Wn t  k
 r t j   \ } } } | j } x# |  d k r] | j } |  d 8}  q; W| j j   } | j | j k r | j | j  n  | SXd  S(   Ni    i   (	   R   Rg   t   exc_infot   tb_framet   f_backt	   f_globalsR8   t   f_localst   update(   t   levelst   et   bR   R   t   ldict(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   get_caller_module_dict  s    
		c         C   sa   g  } xT t  |  |  D]C \ } } | rL | d rL | j | | d f  q | j |  q W| S(   Ni    i   (   t   zipR:   (   t   funclistt   namelistt   resultR   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyRU     s    c         C   sZ   g  } xM |  D]E } | rE | d rE | j  | | d | d f  q | j  |  q W| S(   Ni    i   (   R:   (   R   Rv   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyRs     s    "c         C   s  |  s
 g  Sd j  |   } y t j | t j | B } d  g t | j j    d } | } x | j j   D] \ } }	 | j	 | d   }
 t
 |
  t j t j f k r |
 | | f | |	 <| | |	 <ql |
 d  k	 rl | | |	 <| j d  d k rd | |	 <qd  | | f | |	 <ql ql W| | f g | g | g f SWn t k
 rt t |   d  } | d k rtd } n  t |  |  | | |  \ } } } t |  | | | |  \ } } } | | | | | | f SXd  S(   Nt   |i   t   ignore_i    i   (   NN(   RO   Rp   Rq   Rr   R$   t   maxt
   groupindext   valuesR9   R}   R   RJ   t   FunctionTypet
   MethodTypet   findt	   Exceptiont   intRT   t   _form_master_re(   t   relistt   reflagsR   t   toknamest   regexR%   R   t   lexindexnamesR   Rb   t   handleR   t   llistR`   t   lnamest   rlistt   rret   rnames(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     s2      
  	""c         C   s   d } |  j  d  } xA t d t |   D]* } | | | k r+ | | d k r+ Pq+ q+ W| d k r{ t | d | ! } n d } d | k r t |  } n  d j | |  } | | f S(   Ni   t   _t   ANYR"   (   s   INITIAL(   RL   RS   RT   t   tupleRO   (   R   t   namest   nonstatet   partsRb   t   statest	   tokenname(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   _statetoken	  s      t   LexerReflectc           B   sq   e  Z d d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z RS(   i    c         C   st   | |  _  d  |  _ g  |  _ | |  _ i d d 6|  _ i  |  _ d |  _ | d  k rg t t	 j
  |  _ n	 | |  _ d  S(   Nt	   inclusiveR"   i    (   R   R$   t
   error_funct   tokensR   t	   stateinfot   filesR   R   Rg   t   stderrt   log(   R   R   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR	   !  s    						c         C   s,   |  j    |  j   |  j   |  j   d  S(   N(   t
   get_tokenst   get_literalst
   get_statest	   get_rules(   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   get_all0  s    


c         C   s%   |  j    |  j   |  j   |  j S(   N(   t   validate_tokenst   validate_literalst   validate_rulesR   (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   validate_all7  s    


c         C   s   |  j  j d d   } | s8 |  j j d  d |  _ d  St | t t f  sj |  j j d  d |  _ d  S| s |  j j d  d |  _ d  S| |  _ d  S(   NR   s   No token list is definedi   s   tokens must be a list or tuples   tokens is empty(	   R   R}   R$   R   R   RI   t   listR   R   (   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   >  s    			c         C   sx   i  } xk |  j  D]` } t j |  sD |  j j d |  d |  _ n  | | k rf |  j j d |  n  d | | <q Wd  S(   Ns   Bad token name '%s'i   s   Token '%s' multiply defined(   R   t   _is_identifierR   R   R   R   (   R   t	   terminalsR   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   R  s    c         C   s   |  j  j d d  |  _ d  S(   Nt   literalsR#   (   R   R}   R   (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   ]  s    c         C   s   yb x[ |  j  D]P } t | t  s5 t |  d k r |  j j d t |   d |  _ q q q WWn* t k
 r |  j j d  d |  _ n Xd  S(   Ni   s.   Invalid literal %s. Must be a single charactersI   Invalid literals specification. literals must be a sequence of characters(   R   RI   Rz   RT   R   R   RR   t	   TypeError(   R   R=   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   a  s    "	c         C   su  |  j  j d d   |  _ |  j rqt |  j t t f  sU |  j j d  d |  _ qqx|  j D]} t | t  s t	 |  d k r |  j j d t
 |   d |  _ q_ n  | \ } } t | t  s |  j j d t
 |   d |  _ q_ n  | d k p| d k s,|  j j d	 |  d |  _ q_ n  | |  j k r]|  j j d
 |  d |  _ q_ n  | |  j | <q_ Wn  d  S(   NR   s)   states must be defined as a tuple or listi   i   sM   Invalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')s   State name %s must be a stringR   t	   exclusives:   State type for state %s must be 'inclusive' or 'exclusive's   State '%s' already defined(   R   R}   R$   R   RI   R   R   R   R   RT   RR   Rz   R   (   R   R   R   t	   statetype(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   m  s0    	"				c   	      C   s8  g  |  j  D] } | d  d k r
 | ^ q
 } i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ x+ |  j D]  } g  |  j | <g  |  j | <qc Wt |  d k r |  j j	 d  d |  _	 d  Sx| D]} |  j  | } t
 | |  j  \ } } | |  j | <t | d  r| d k r1x | D] } | |  j | <qWq| d k rt |  j } t |  j } |  j j	 d	 | | | j  d |  _	 qx | D]  } |  j | j | | f  qWq t | t  rh| d k rx | D] } | |  j | <qWd
 | k re|  j j d |  qeq| d k r:|  j j	 d |  d |  _	 qxG | D]  } |  j | j | | f  qAWq |  j j	 d |  d |  _	 q WxP |  j j   D]? } t j d d k  r| j d    q| j d d    qWxV |  j j   D]E } t j d d k  r| j d    q| j d d   d t  qWd  S(   Ni   t   t_i    s+   No rules of the form t_rulename are definedi   R    R   t   ignores,   %s:%d: Rule '%s' must be defined as a strings   \s#   %s contains a literal backslash '\'s'   Rule '%s' must be defined as a functions&   %s not defined as a function or stringi   c         S   s'   t  t |  d  j t | d  j  S(   Ni   (   t   cmpR    R   (   t   xt   y(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   <lambda>  s    R?   c         S   s   t  |  d  j S(   Ni   (   R    R   (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     s    c         S   s<   t  |  d  t  | d  k  t  |  d  t  | d  k S(   Ni   (   RT   (   R   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     s    c         S   s   t  |  d  S(   Ni   (   RT   (   R   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     s    t   reverse(   R   R   t   funcsymt   strsymR   t   errorfR   RT   R   R   R   t   hasattrR    R   R   R
   R:   RI   Rz   R   R   Rg   Rh   t   sortt   True(	   R   R   t   tsymbolsR   R   R   t   toknamet   linet   file(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     sb    ,						!!c         C   s  x|  j  D]} x|  j | D]\ } } t |  j } t |  j } d |  j | <|  j | } t | t j	  r} d } n d } t |  j
 } | | k r |  j j d | | | j  d |  _ q n  | | k  r |  j j d | | | j  d |  _ q n  | j s4|  j j d | | | j  d |  _ q n  yd t j d | | j f t j |  j B }	 |	 j d  r|  j j d | | | j  d |  _ n  Wq t j k
 rt j   \ }
 } } |  j j d	 | | | j |  d
 | j k r|  j j d | | | j  n  d |  _ q Xq Wxd|  j | D]U\ } } |  j | } | d k rs|  j j d |  d |  _ q,n  | |  j k r| j d  d k  r|  j j d | |  d |  _ q,n  yX t j d | | f t j |  j B }	 |	 j d  r|  j j d |  d |  _ n  Wq,t j k
 rt j   \ }
 } } |  j j d | |  d
 | k rt|  j j d |  n  d |  _ q,Xq,W|  j | r|  j | r|  j j d |  d |  _ n  |  j j | d   } | r
 | } t |  j } t |  j } d |  j | <t | t j	  r'd } n d } t |  j
 } | | k rp|  j j d | | | j  d |  _ n  | | k  r|  j j d | | | j  d |  _ qq
 q
 Wx |  j D] } |  j |  qWd  S(   Ni   i   s'   %s:%d: Rule '%s' has too many argumentss%   %s:%d: Rule '%s' requires an arguments2   %s:%d: No regular expression defined for rule '%s's
   (?P<%s>%s)R#   s<   %s:%d: Regular expression for rule '%s' matches empty strings3   %s:%d: Invalid regular expression for rule '%s'. %st   #s6   %s:%d. Make sure '#' in rule '%s' is escaped with '\#'R   s'   Rule '%s' must be defined as a functionR   i    s-   Rule '%s' defined for an unspecified token %ss5   Regular expression for rule '%s' matches empty strings,   Invalid regular expression for rule '%s'. %ss/   Make sure '#' in rule '%s' is escaped with '\#'s   No rules defined for state '%s'(   R   R   R    R   R   R   R   RI   RJ   R   t   co_argcountR   R   R
   t   __doc__Rp   Rq   Rr   R   R   Rg   R   R   R   R   R   R}   R$   t   validate_file(   R   R~   t   fnameR   R   R   R   t   reqargst   nargsR=   t   _etypeR   t   _etraceR   t   rt   efunc(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR     s    					)	$	&	c         C   s>  d d  l  } | j j |  \ } } | d k r4 d  Sy& t |  } | j   } | j   Wn t k
 rn d  SXt j d  } t j d  } i  }	 d }
 x | D] } | j	 |  } | s | j	 |  } n  | r,| j
 d  } |	 j |  } | s|
 |	 | <q,|  j j d | |
 | |  d |  _ n  |
 d 7}
 q Wd  S(   Nis   .pys   \s*def\s+(t_[a-zA-Z_0-9]*)\(s   \s*(t_[a-zA-Z_0-9]*)\s*=i   s7   %s:%d: Rule %s redefined. Previously defined on line %d(   t   os.pathRN   t   splitextRP   t	   readlinesRV   t   IOErrorRp   Rq   R   R   R}   R   R   (   R   RZ   RM   t   baset   extR   t   linest   fret   sret	   counthasht   linent   lR   R   t   prev(    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR   =  s4     N(   R
   R   R$   R	   R   R   R   R   R   R   R   R   R   R   (    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyR      s   								G	jRe   R#   c
       	   C   s  d  }
 i d d 6} t   } | | _ |	 d  k rC t t j  }	 n  | rj | d  k rj t t j  } qj n  | ry | }  n  |  r g  t |   D] } | t |  |  f ^ q } t |  }
 n t	 d  }
 t
 |
 d |	 d | } | j   | s| j   rt d   qn  | ra| ray0 | j | |
  | j a | j a | a | SWqat k
 r]qaXn  | r| j d | j  | j d | j  | j d	 | j  n  i  | _ x | j D] } d
 | j | <qWt | j t t f  rt | j d    j | j  | _ n | j | _ | j } i  } x | D] } g  } xu | j | D]f \ } } t |  j  } t |  j! } | j" d | | j# f  | rI| j d | | j# |  qIqIWxQ | j$ | D]B \ } } | j" d | | f  | r| j d | | |  qqW| | | <q/W| r+| j d  n  x | D] } t% | | | |
 | j&  \ } } } | | j' | <| | j( | <| | j) | <| r2x7 t* t+ |   D]  } | j d | | | |  qWq2q2Wx | j,   D]x \ } } | d k r| d k r| j' | j- | j' d  | j( | j- | j( d  | j) | j- | j) d  qqW| | _. | j' d | _/ | j( d | _0 | | _1 | j2 | _3 | j3 j4 d d  | _5 | j6 | _7 | j6 j4 d d   | _8 | j8 s|	 j9 d  n  x | j,   D] \ } } | d k rY| | j6 k r+|	 j9 d |  n  | | j2 k r| j5 r|	 j9 d |  qq| d k r| | j6 k r| j6 j4 d d   | j6 | <n  | | j2 k r| j2 j4 d d  | j2 | <qqqW| j a | j a | a | r| r| j: | |  n  | S(   NR   R"   i   R   R   s   Can't build lexers   lex: tokens   = %rs   lex: literals = %rs   lex: states   = %ri   i    s
   (?P<%s>%s)s(   lex: Adding rule %s -> '%s' (state '%s')s#   lex: ==== MASTER REGEXS FOLLOW ====s"   lex: state '%s' : regex[%d] = '%s'R#   s   No t_error rule is definedR   s1   No error rule is defined for exclusive state '%s's2   No ignore rule is defined for exclusive state '%s'(;   R$   R!   R7   R   Rg   R   t   dirR;   t   dictR   R   R   R   t   SyntaxErrorRy   R   R|   R   Ri   R   R   R   R   R3   RI   R   R   R   RO   R5   R   R    R   R   R:   R   R   R   R   R'   R(   R)   RS   RT   R9   t   extendR,   R%   R&   R/   R   R-   R}   R4   R   R.   R2   R   Rd   (    t   moduleR<   R   t   optimizeRe   R   t   nowarnRX   t   debuglogt   errorlogR   R   t   lexobjt   kt   _itemst   linfoR   t   regexsR~   t
   regex_listR   R   R   R   R   R   R%   t   re_textt   re_namesRb   t   stypeR   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   lexa  s    		 	.
			(	 %%"			&		c         C   s   | so y3 t  j d } t |  } | j   } | j   Wqo t k
 rk t  j j d  t  j j   } qo Xn  |  r |  j	 } n t	 } | |  |  r |  j
 } n t
 } xB |   } | s Pn  t  j j d | j | j | j | j f  q d  S(   Ni   s/   Reading from standard input (type EOF to end):
s   (%s,%r,%d,%d)
(   Rg   t   argvRP   t   readRV   t
   IndexErrort   stdoutR   t   stdinR|   R   R   R   R   R   (   R   t   dataRZ   R   t   _inputt   _tokenR   (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   runmain  s*    
	 c            s     f d   } | S(   Nc            s+   t    d  r   j |  _ n	   |  _ |  S(   NR    (   R   R   (   R   (   R   (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   set_doc  s    	(    (   R   R$  (    (   R   sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   TOKEN  s    (#   RQ   t   __tabversion__Rp   Rg   RJ   R8   RM   t
   StringTypet   UnicodeTypeRz   t   AttributeErrorR   t   bytesRh   R    Rq   R   R   R   R<   R   R   R   R!   R   RU   Rs   R   R   R   R$   R  R#  R%  t   Token(    (    (    sE   /home/users/norris/public_html/pat/assignments/assignment1/ply/lex.pyt   <module>"   s6   <		 :				'	 B'!	
