
U"3Sc                 @   sg   d  d g Z  d d l m Z d d l Td d l Td d l TGd d   d e  Z Gd d    d   Z d S)ParserParserError   )MarkedYAMLError)*c               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r	   r	   -/usr/lib/python3/dist-packages/yaml/parser.pyr   E   s   c               @   s  e  Z d  Z d d d d i Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d  d! d"  Z d# d$   Z d% d&   Z d' d(   Z d) d*   Z d+ d,   Z d- d.   Z d/ d0   Z d  d1 d2  Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z d  d; d<  Z d= d>   Z  d? d@   Z! dA dB   Z" dC S)Dr   !z!!ztag:yaml.org,2002:c             C   s=   d  |  _  d  |  _ i  |  _ g  |  _ g  |  _ |  j |  _ d  S)N)current_eventyaml_versiontag_handlesstatesmarksparse_stream_startstate)selfr	   r	   r
   __init__Q   s    					zParser.__init__c             C   s   g  |  _  d  |  _ d  S)N)r   r   )r   r	   r	   r
   disposeY   s    	zParser.disposec             G   sk   |  j  d  k r' |  j r' |  j   |  _  |  j  d  k	 rg | s@ d Sx$ | D] } t |  j  |  rG d SqG Wd S)NTF)r   r   
isinstance)r   choicesZchoicer	   r	   r
   check_event^   s    	zParser.check_eventc             C   s.   |  j  d  k r' |  j r' |  j   |  _  |  j  S)N)r   r   )r   r	   r	   r
   
peek_eventk   s    	zParser.peek_eventc             C   s=   |  j  d  k r' |  j r' |  j   |  _  |  j  } d  |  _  | S)N)r   r   )r   valuer	   r	   r
   	get_eventr   s    			zParser.get_eventc             C   s:   |  j    } t | j | j d | j } |  j |  _ | S)Nencoding)	get_tokenZStreamStartEvent
start_markend_markr   parse_implicit_document_startr   )r   tokeneventr	   r	   r
   r      s
    zParser.parse_stream_startc             C   s   |  j  t t t  sr |  j |  _ |  j   } | j } } t | | d d } |  j	 j
 |  j  |  j |  _ | S|  j   Sd  S)NexplicitF)check_tokenDirectiveTokenDocumentStartTokenStreamEndTokenDEFAULT_TAGSr   
peek_tokenr   DocumentStartEventr   appendparse_document_endparse_block_noder   parse_document_start)r   r!   r   r   r"   r	   r	   r
   r       s    		z$Parser.parse_implicit_document_startc          	   C   s6  x |  j  t  r |  j   q W|  j  t  s |  j   } | j } |  j   \ } } |  j  t  s t d  d  d |  j   j	 |  j   j   |  j   } | j
 } t | | d d d | d | } |  j j |  j  |  j |  _ nJ |  j   } t | j | j
  } |  j st  |  j s)t  d  |  _ | S)Nz)expected '<document start>', but found %rr#   Tversiontags)r$   DocumentEndTokenr   r'   r)   r   process_directivesr&   r   idr   r*   r   r+   r,   parse_document_contentr   ZStreamEndEventAssertionErrorr   )r   r!   r   r/   r0   r   r"   r	   r	   r
   r.      s.    				zParser.parse_document_startc             C   sn   |  j    } | j } } d } |  j t  rI |  j   } | j } d } t | | d | } |  j |  _ | S)NFTr#   )	r)   r   r$   r1   r   r   ZDocumentEndEventr.   r   )r   r!   r   r   r#   r"   r	   r	   r
   r,      s    		zParser.parse_document_endc             C   sT   |  j  t t t t  rF |  j |  j   j  } |  j j	   |  _
 | S|  j   Sd  S)N)r$   r%   r&   r1   r'   process_empty_scalarr)   r   r   popr   r-   )r   r"   r	   r	   r
   r4      s    	zParser.parse_document_contentc             C   sp  d  |  _  i  |  _ x |  j t  r|  j   } | j d k r |  j  d  k	 rf t d  d  d | j   | j \ } } | d k r t d  d  d | j   | j |  _  q | j d k r | j \ } } | |  j k r t d  d  d | | j   | |  j | <q W|  j r&|  j  |  j j	   f } n |  j  d  f } x4 |  j
 D]) } | |  j k r?|  j
 | |  j | <q?W| S)NZYAMLzfound duplicate YAML directiver   z:found incompatible YAML document (version 1.* is required)ZTAGzduplicate tag handle %r)r   r   r$   r%   r   namer   r   r   copyr(   )r   r!   majorminorhandleprefixr   keyr	   r	   r
   r2      s8    						zParser.process_directivesc             C   s   |  j  d d  S)NblockT)
parse_node)r   r	   r	   r
   r-     s    zParser.parse_block_nodec             C   s
   |  j    S)N)r@   )r   r	   r	   r
   parse_flow_node  s    zParser.parse_flow_nodec             C   s   |  j  d d d d  S)Nr?   Tindentless_sequence)r@   )r   r	   r	   r
   'parse_block_node_or_indentless_sequence  s    z.Parser.parse_block_node_or_indentless_sequenceFc          	   C   s  |  j  t  rK |  j   } t | j | j | j  } |  j j   |  _	 nMd  } d  } d  } } }	 |  j  t
  r |  j   } | j } | j } | j } |  j  t  r;|  j   } | j }	 | j } | j } ng |  j  t  r;|  j   } | j } }	 | j } | j } |  j  t
  r;|  j   } | j } | j } | d  k	 r| \ }
 } |
 d  k	 r|
 |  j k rt d | d |
 |	   |  j |
 | } n | } | d  k r|  j   j } } d  } | d  k p| d k } | r)|  j  t  r)|  j   j } t | | | | |  } |  j |  _	 no|  j  t  r|  j   } | j } | j rb| d  k sn| d k rwd } n | d  k rd } n d } t | | | | j | | d | j } |  j j   |  _	 n|  j  t  r|  j   j } t | | | | | d d } |  j |  _	 n|  j  t  rd|  j   j } t | | | | | d d } |  j |  _	 n4| r|  j  t  r|  j   j } t | | | | | d d } |  j |  _	 n | r|  j  t  r|  j   j } t | | | | | d d } |  j |  _	 n | d  k	 s| d  k	 rTt | | | d f d | |  } |  j j   |  _	 nD | rcd	 } n d
 } |  j   } t d | | d | j | j   | S)Nzwhile parsing a nodezfound undefined tag handle %rr   TFstyle
flow_style r?   Zflowzwhile parsing a %s nodez'expected the node content, but found %r)TF)FT)FF) r$   Z
AliasTokenr   Z
AliasEventr   r   r   r   r7   r   ZAnchorTokenZTagTokenr   r   r)   BlockEntryTokenZSequenceStartEventparse_indentless_sequence_entryZScalarTokenZplainScalarEventrD   ZFlowSequenceStartTokenparse_flow_sequence_first_entryZFlowMappingStartTokenMappingStartEventparse_flow_mapping_first_keyZBlockSequenceStartToken parse_block_sequence_first_entryZBlockMappingStartTokenparse_block_mapping_first_keyr3   )r   r?   rB   r!   r"   Zanchortagr   r   Ztag_markr<   suffixZimplicitZnoder	   r	   r
   r@     s    												!			
zParser.parse_nodec             C   s)   |  j    } |  j j | j  |  j   S)N)r   r   r+   r   parse_block_sequence_entry)r   r!   r	   r	   r
   rM   x  s    z'Parser.parse_block_sequence_first_entryc             C   s   |  j  t  rf |  j   } |  j  t t  sJ |  j j |  j  |  j   S|  j |  _ |  j	 | j
  S|  j  t  s |  j   } t d |  j d d | j | j   |  j   } t | j | j
  } |  j j   |  _ |  j j   | S)Nz while parsing a block collectionr   z"expected <block end>, but found %r)r$   rG   r   BlockEndTokenr   r+   rQ   r-   r   r6   r   r)   r   r   r3   r   SequenceEndEventr7   )r   r!   r"   r	   r	   r
   rQ   }  s     
z!Parser.parse_block_sequence_entryc             C   s   |  j  t  rl |  j   } |  j  t t t t  sP |  j j |  j  |  j	   S|  j |  _
 |  j | j  S|  j   } t | j | j  } |  j j   |  _
 | S)N)r$   rG   r   KeyToken
ValueTokenrS   r   r+   rH   r-   r   r6   r   r)   rT   r   r7   )r   r!   r"   r	   r	   r
   rH     s    	
z&Parser.parse_indentless_sequence_entryc             C   s)   |  j    } |  j j | j  |  j   S)N)r   r   r+   r   parse_block_mapping_key)r   r!   r	   r	   r
   rN     s    z$Parser.parse_block_mapping_first_keyc             C   s   |  j  t  ri |  j   } |  j  t t t  sM |  j j |  j  |  j   S|  j |  _	 |  j
 | j  S|  j  t  s |  j   } t d |  j d d | j | j   |  j   } t | j | j  } |  j j   |  _	 |  j j   | S)Nzwhile parsing a block mappingr   z"expected <block end>, but found %rrR   )r$   rU   r   rV   rS   r   r+   parse_block_mapping_valuerC   r   r6   r   r)   r   r   r3   r   MappingEndEventr7   )r   r!   r"   r	   r	   r
   rW     s     
zParser.parse_block_mapping_keyc             C   s   |  j  t  rl |  j   } |  j  t t t  sM |  j j |  j  |  j   S|  j |  _	 |  j
 | j  Sn( |  j |  _	 |  j   } |  j
 | j  Sd  S)N)r$   rV   r   rU   rS   r   r+   rW   rC   r   r6   r   r)   r   )r   r!   r	   r	   r
   rX     s    
z Parser.parse_block_mapping_valuec             C   s/   |  j    } |  j j | j  |  j d d  S)NfirstT)r   r   r+   r   parse_flow_sequence_entry)r   r!   r	   r	   r
   rJ     s    z&Parser.parse_flow_sequence_first_entryc             C   s"  |  j  t  s | sc |  j  t  r1 |  j   n2 |  j   } t d |  j d d | j | j   |  j  t	  r |  j   } t
 d  d  d | j | j d d } |  j |  _ | S|  j  t  s |  j j |  j  |  j   S|  j   } t | j | j  } |  j j   |  _ |  j j   | S)Nzwhile parsing a flow sequencer   zexpected ',' or ']', but got %rTrE   rR   )r$   FlowSequenceEndTokenFlowEntryTokenr   r)   r   r   r3   r   rU   rK   r   %parse_flow_sequence_entry_mapping_keyr   r   r+   r[   rA   rT   r7   )r   rZ   r!   r"   r	   r	   r
   r[     s,    	
z Parser.parse_flow_sequence_entryc             C   s^   |  j    } |  j t t t  s> |  j j |  j  |  j   S|  j |  _	 |  j
 | j  Sd  S)N)r   r$   rV   r]   r\   r   r+   'parse_flow_sequence_entry_mapping_valuerA   r   r6   r   )r   r!   r	   r	   r
   r^     s    	
z,Parser.parse_flow_sequence_entry_mapping_keyc             C   s   |  j  t  ri |  j   } |  j  t t  sJ |  j j |  j  |  j   S|  j |  _	 |  j
 | j  Sn( |  j |  _	 |  j   } |  j
 | j  Sd  S)N)r$   rV   r   r]   r\   r   r+   %parse_flow_sequence_entry_mapping_endrA   r   r6   r   r)   r   )r   r!   r	   r	   r
   r_      s    
z.Parser.parse_flow_sequence_entry_mapping_valuec             C   s+   |  j  |  _ |  j   } t | j | j  S)N)r[   r   r)   rY   r   )r   r!   r	   r	   r
   r`     s    z,Parser.parse_flow_sequence_entry_mapping_endc             C   s/   |  j    } |  j j | j  |  j d d  S)NrZ   T)r   r   r+   r   parse_flow_mapping_key)r   r!   r	   r	   r
   rL     s    z#Parser.parse_flow_mapping_first_keyc             C   s?  |  j  t  s | sc |  j  t  r1 |  j   n2 |  j   } t d |  j d d | j | j   |  j  t	  r |  j   } |  j  t
 t t  s |  j j |  j  |  j   S|  j |  _ |  j | j  Sn, |  j  t  s |  j j |  j  |  j   S|  j   } t | j | j  } |  j j   |  _ |  j j   | S)Nzwhile parsing a flow mappingr   zexpected ',' or '}', but got %rrR   )r$   FlowMappingEndTokenr]   r   r)   r   r   r3   r   rU   rV   r   r+   parse_flow_mapping_valuerA   r   r6   r   parse_flow_mapping_empty_valuerY   r7   )r   rZ   r!   r"   r	   r	   r
   ra     s.    	

zParser.parse_flow_mapping_keyc             C   s   |  j  t  ri |  j   } |  j  t t  sJ |  j j |  j  |  j   S|  j |  _	 |  j
 | j  Sn( |  j |  _	 |  j   } |  j
 | j  Sd  S)N)r$   rV   r   r]   rb   r   r+   ra   rA   r   r6   r   r)   r   )r   r!   r	   r	   r
   rc   9  s    
zParser.parse_flow_mapping_valuec             C   s"   |  j  |  _ |  j |  j   j  S)N)ra   r   r6   r)   r   )r   r	   r	   r
   rd   G  s    z%Parser.parse_flow_mapping_empty_valuec             C   s   t  d  d  d d | |  S)NTFrF   )TF)rI   )r   Zmarkr	   r	   r
   r6   K  s    zParser.process_empty_scalarN)#r   r   r   r(   r   r   r   r   r   r   r    r.   r,   r4   r2   r-   rA   rC   r@   rM   rQ   rH   rN   rW   rX   rJ   r[   r^   r_   r`   rL   ra   rc   rd   r6   r	   r	   r	   r
   r   H   sB   	/g
N)__all__errorr   tokensZeventsscannerr   r   r	   r	   r	   r
   <module>>   s   


