o
    i"                     @   s  d dgZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+ad,d- Zd.d  Z d/d Z!d0d1 Z"e#d2kre"  d+S d+S )3count	invregexp    )Combine)Literal)ParseFatalException)ParseResults)ParserElement)SkipTo)Suppress)Word)nums)oneOf)opAssoc)operatorPrecedence
printables)srangec                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CharacterRangeEmitterc                    s$   t   d fdd|D | _d S )N c                 3   s&    | ]}| vr  |p|V  qd S N)add.0cseen T/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/util/invregexp.py	<genexpr>A   s   $ z1CharacterRangeEmitter.__init__.<locals>.<genexpr>)setjoincharset)selfcharsr   r   r   __init__>   s   zCharacterRangeEmitter.__init__c                 C      d| j  d S N[]r"   r#   r   r   r   __str__C      zCharacterRangeEmitter.__str__c                 C   r&   r'   r*   r+   r   r   r   __repr__F   r-   zCharacterRangeEmitter.__repr__c                        fdd}|S )Nc                  3   s     j D ]} | V  qd S r   r*   sr+   r   r   	gen_charsJ   s   
z7CharacterRangeEmitter.make_generator.<locals>.gen_charsr   )r#   r2   r   r+   r   make_generatorI      z$CharacterRangeEmitter.make_generatorN__name__
__module____qualname__r%   r,   r.   r3   r   r   r   r   r   =   s
    r   c                   @      e Zd Zdd Zdd ZdS )OptionalEmitterc                 C   
   || _ d S r   )expr)r#   r<   r   r   r   r%   Q      
zOptionalEmitter.__init__c                    r/   )Nc                  3   s$    dV   j   D ]} | V  q
d S )Nr   )r<   r3   r0   r+   r   r   optional_genU   s
   z4OptionalEmitter.make_generator.<locals>.optional_genr   )r#   r>   r   r+   r   r3   T   s   zOptionalEmitter.make_generatorNr6   r7   r8   r%   r3   r   r   r   r   r:   P       r:   c                   @   s   e Zd Zdd ZdS )
DotEmitterc                 C   s   dd }|S )Nc                  s   s    t D ]} | V  qd S r   r   )r   r   r   r   dot_gen^   s   z*DotEmitter.make_generator.<locals>.dot_genr   )r#   rB   r   r   r   r3   ]   s   zDotEmitter.make_generatorN)r6   r7   r8   r3   r   r   r   r   rA   \   s    rA   c                   @   r9   )GroupEmitterc                 C   s   t || _d S r   )r   exprsr#   rD   r   r   r   r%   e   r-   zGroupEmitter.__init__c                    r/   )Nc                  3   s2     fdd j r j D ]} | V  qd S d S )Nc                 3   sd    t | dkr| d   D ]}|V  qd S | d   D ]} | dd  D ]}|| V  q'qd S )N   r   )lenr3   )elistr1   s2recurse_listr   r   rK   j   s   zDGroupEmitter.make_generator.<locals>.group_gen.<locals>.recurse_listrD   r0   r+   rJ   r   	group_geni   s   z.GroupEmitter.make_generator.<locals>.group_genr   )r#   rM   r   r+   r   r3   h   s   zGroupEmitter.make_generatorNr?   r   r   r   r   rC   d   r@   rC   c                   @   r9   )AlternativeEmitterc                 C   r;   r   rL   rE   r   r   r   r%   z   r=   zAlternativeEmitter.__init__c                    r/   )Nc                  3   s(     j D ]} |   D ]}|V  qqd S r   )rD   r3   )er1   r+   r   r   alt_gen~   s   
z2AlternativeEmitter.make_generator.<locals>.alt_genr   )r#   rP   r   r+   r   r3   }   s   z!AlternativeEmitter.make_generatorNr?   r   r   r   r   rN   y   r@   rN   c                   @   r   )
LiteralEmitterc                 C   r;   r   lit)r#   rS   r   r   r   r%      r=   zLiteralEmitter.__init__c                 C   
   d| j  S NzLit:rR   r+   r   r   r   r,      r=   zLiteralEmitter.__str__c                 C   rT   rU   rR   r+   r   r   r   r.      r=   zLiteralEmitter.__repr__c                    r/   )Nc                   3   s     j V  d S r   rR   r   r+   r   r   lit_gen   s   z.LiteralEmitter.make_generator.<locals>.lit_genr   )r#   rV   r   r+   r   r3      r4   zLiteralEmitter.make_generatorNr5   r   r   r   r   rQ      s
    rQ   c                 C   s   t t| d S Nr   )r   r   toksr   r   r   handle_range   s   rZ   c                 C   s   | d } | d dv rt ddd| d dkrt| d S d| v r,t| d gt| j S d| v rkt| j}t| j}|| }|rdt| d }td|D ]}tt| d |g}qKt| d g| |g S | d g| S d S )	Nr   rF   z*+r   z,unbounded repetition operators not supported?r   minCount)r   r:   rC   intr   r\   maxCountrange)rY   mincountmaxcountoptcountoptir   r   r   handle_repetition   s$   

re   c                 C   sN   d}| D ]}|d dkr|d dkr|d7 }q||d 7 }q||7 }qt |S )Nr   r   \rF   t	)rQ   )rY   rS   rg   r   r   r   handle_literal   s   

ri   c                 C   sT   | d d }|dkrt dS |dkrt tdS |dkr tdS td	dd
| d )Nr   rF   d
0123456789wz[A-Za-z0-9_]r1    r   zunsupported macro character ())r   r   rQ   r   )rY   	macroCharr   r   r   handle_macro   s   rp   c                 C      t | d S rW   )rC   rX   r   r   r   handle_sequence      rr   c                   C   s   t tS r   )r   r   r   r   r   r   
handle_dot   s   rt   c                 C   rq   rW   )rN   rX   r   r   r   handle_alternative   rs   ru   Nc                  C   sZ  t d u rtd ttd\} }}}}}tdttd }| tdttt  }d	dd tD d }t| t
||d | }	|tt|B }
td	}|ttd
 | |ttd d ttd | B ttdB }|	t |
t |t |t |
|	B |B |B }t||dtjtfd dtjtftddtjtfg}|a t S )Nr   z[]{}()rf   dwsc                 s   s    | ]	}|d vr|V  qdS )z\[]{}().*?+|Nr   r   r   r   r   r      s    zparser.<locals>.<genexpr>z 	)ignore.r   r\   ,r^   z*+?rF      |)_parserr   setDefaultWhitespaceCharsmapr   r   r   listr   r!   r	   r   r   setResultsNamesetParseActionrZ   ri   rp   rt   r   r   LEFTre   rr   r
   ru   )lbrackrbracklbracerbracelparenrparenreMacroescapedCharreLiteralCharreRange	reLiteralreDot
repetitionreTermreExprr   r   r   parser   s6   
&




r   c                 C   s   d}| D ]}|d7 }q|S )zHSimple function to count the number of elements returned by a generator.r   rF   r   )genrd   r1   r   r   r   r      s   
c                 C   s   t t |  }| S )zCall this routine as a generator to return all the strings that
       match the input regular expression.
           for s in invregexp("[A-Z]{3}\d{3}"):
               print s
    )rC   r   parseStringr3   )regexinvReGeneratorr   r   r   r     s   c                  C   s   d d} | D ]D}| }|sqtd t| zttt| t|D ]}t| q%W n tyG } zt|j t  W Y d }~qd }~ww t  qd S )Na(  
    [A-EA]
    [A-D]*
    [A-D]{3}
    X[A-C]{3}Y
    X[A-C]{3}\(
    X\d
    foobar\d\d
    foobar{2}
    foobar{2,9}
    fooba[rz]{2}
    (foobar){2}
    ([01]\d)|(2[0-5])
    ([01]\d\d)|(2[0-4]\d)|(25[0-5])
    [A-C]{1,2}
    [A-C]{0,3}
    [A-C]\s[A-C]\s[A-C]
    [A-C]\s?[A-C][A-C]
    [A-C]\s([A-C][A-C])
    [A-C]\s([A-C][A-C])?
    [A-C]{2}\d{2}
    @|TH[12]
    @(@|TH[12])?
    @(@|TH[12]|AL[12]|SP[123]|TB(1[0-9]?|20?|[3-9]))?
    @(@|TH[12]|AL[12]|SP[123]|TB(1[0-9]?|20?|[3-9])|OH(1[0-9]?|2[0-9]?|30?|[4-9]))?
    (([ECMP]|HA|AK)[SD]|HS)T
    [A-CV]{2}
    A[cglmrstu]|B[aehikr]?|C[adeflmorsu]?|D[bsy]|E[rsu]|F[emr]?|G[ade]|H[efgos]?|I[nr]?|Kr?|L[airu]|M[dgnot]|N[abdeiop]?|Os?|P[abdmortu]?|R[abefghnu]|S[bcegimnr]?|T[abcehilm]|Uu[bhopqst]|U|V|W|Xe|Yb?|Z[nr]
    (a|b)|(x|y)
    (a|b) (x|y)
    
z2--------------------------------------------------)splitstripprintr   r   r   msg)testsrg   r1   pfer   r   r   main  s,    

r   __main__)$__all__	pyparsingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   objectr   r:   rA   rC   rN   rQ   rZ   re   ri   rp   rr   rt   ru   r|   r   r   r   r   r6   r   r   r   r   <module>   sH   *$
5
