B
    Æ‹d—c  ã               @   sN   d dgZ ddlmZ ddlT ddlT ddlT G dd„ deƒZG dd „ d ƒZdS )ÚParserÚParserErroré   )ÚMarkedYAMLError)Ú*c               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   úX/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/yaml/parser.pyr   E   s   c               @   s  e Zd Zd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„ ZdDd!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ ZdEd1d2„Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ ZdFd;d<„Zd=d>„ Z d?d@„ Z!dAdB„ Z"dCS )Gr   ú!ztag:yaml.org,2002:)r   z!!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   sN   | j d kr| jr|  ¡ | _ | j d k	rJ|s,dS x|D ]}t| j |ƒr2dS q2W dS )NTF)r   r   Ú
isinstance)r   ÚchoicesÚchoicer	   r	   r
   Úcheck_event^   s    



zParser.check_eventc             C   s    | j d kr| jr|  ¡ | _ | 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 }d | _ |S )N)r   r   )r   Úvaluer	   r	   r
   Ú	get_eventr   s    

zParser.get_eventc             C   s(   |   ¡ }t|j|j|jd}| 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\   |   ttt¡sP| j| _|  ¡ }|j }}t||dd}| j	 
| j¡ | j| _|S |  ¡ S d S )NF)Úexplicit)Ú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   sÐ   x|   t¡r|  ¡  qW |   t¡sœ|  ¡ }|j}|  ¡ \}}|   t¡sdtd d d|  ¡ j	 |  ¡ jƒ‚|  ¡ }|j
}t||d||d}| j | j¡ | j| _n0|  ¡ }t|j|j
ƒ}| jr¼t‚| jrÆt‚d | _|S )Nz)expected '<document start>', but found %rT)r$   ÚversionÚtags)r%   ÚDocumentEndTokenr   r(   r*   r   Úprocess_directivesr'   r   Úidr    r+   r   r,   r-   Úparse_document_contentr   ZStreamEndEventÚAssertionErrorr   )r   r"   r   r0   r1   r    r#   r	   r	   r
   r/   Ÿ   s.    





zParser.parse_document_startc             C   sL   |   ¡ }|j }}d}|  t¡r2|  ¡ }|j}d}t|||d}| j| _|S )NFT)r$   )	r*   r   r%   r2   r   r    ZDocumentEndEventr/   r   )r   r"   r   r    r$   r#   r	   r	   r
   r-   ¾   s    

zParser.parse_document_endc             C   s<   |   tttt¡r0|  |  ¡ j¡}| j 	¡ | _
|S |  ¡ S d S )N)r%   r&   r'   r2   r(   Úprocess_empty_scalarr*   r   r   Úpopr   r.   )r   r#   r	   r	   r
   r5   Ð   s    
zParser.parse_document_contentc             C   s   d | _ i | _x¢|  t¡r®|  ¡ }|jdkrp| j d k	rDtd d d|jƒ‚|j\}}|dkrft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 	¡ f}n
| j d f}x(| j
D ]}|| jkrÚ| j
| | j|< qÚW |S )NÚ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
   r3   Ù   s8    









zParser.process_directivesc             C   s   | j ddS )NT)Úblock)Ú
parse_node)r   r	   r	   r
   r.     s    zParser.parse_block_nodec             C   s   |   ¡ S )N)rB   )r   r	   r	   r
   Úparse_flow_node  s    zParser.parse_flow_nodec             C   s   | j dddS )NT)rA   Úindentless_sequence)rB   )r   r	   r	   r
   Ú'parse_block_node_or_indentless_sequence  s    z.Parser.parse_block_node_or_indentless_sequenceFc          	   C   sR  |   t¡r4|  ¡ }t|j|j|jƒ}| j ¡ | _	nd }d }d  } }}	|   t
¡r’|  ¡ }|j}|j}|j}|   t¡rØ|  ¡ }|j}	|j}|j}nF|   t¡rØ|  ¡ }|j }}	|j}|j}|   t
¡rØ|  ¡ }|j}|j}|d k	r&|\}
}|
d k	r"|
| jkrtd|d|
 |	ƒ‚| j|
 | }n|}|d kr>|  ¡ j }}d }|d kpR|dk}|rŒ|   t¡rŒ|  ¡ j}t|||||ƒ}| j| _	nÂ|   t¡r|  ¡ }|j}|jr¸|d ksÂ|dkrÈd}n|d krØd}nd}t||||j|||jd}| j ¡ | _	nH|   t¡r<|  ¡ j}t|||||dd	}| j| _	n|   t¡rp|  ¡ j}t|||||dd	}| j| _	nÞ|rª|   t¡rª|  ¡ j}t|||||d
d	}| j| _	n¤|rä|   t¡rä|  ¡ j}t|||||d
d	}| j| _	nj|d k	sø|d k	rt|||d
fd||ƒ}| j ¡ | _	n2|r(d}nd}|  ¡ }td| |d|j |jƒ‚|S )Nzwhile parsing a nodezfound undefined tag handle %rr   )TF)FT)FF)ÚstyleT)Ú
flow_styleFÚ rA   Zflowzwhile parsing a %s nodez'expected the node content, but found %r) r%   Z
AliasTokenr   Z
AliasEventr   r   r    r   r8   r   ZAnchorTokenZTagTokenr   r   r*   ÚBlockEntryTokenZSequenceStartEventÚparse_indentless_sequence_entryZScalarTokenÚplainÚScalarEventrF   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_keyr4   )r   rA   rD   r"   r#   ÚanchorÚtagr   r    Ztag_markr>   ÚsuffixZimplicitÚnoder	   r	   r
   rB     s®    


















zParser.parse_nodec             C   s   |   ¡ }| j |j¡ |  ¡ S )N)r   r   r,   r   Úparse_block_sequence_entry)r   r"   r	   r	   r
   rP   x  s    z'Parser.parse_block_sequence_first_entryc             C   s¦   |   t¡rH|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _|  	|j
¡S |   t¡sv|  ¡ }td| jd d|j |jƒ‚|  ¡ }t|j|j
ƒ}| j ¡ | _| j ¡  |S )Nz while parsing a block collectionéÿÿÿÿz"expected <block end>, but found %r)r%   rI   r   ÚBlockEndTokenr   r,   rV   r.   r   r7   r    r*   r   r   r4   r   ÚSequenceEndEventr8   )r   r"   r#   r	   r	   r
   rV   }  s     


z!Parser.parse_block_sequence_entryc             C   sr   |   t¡rL|  ¡ }|   tttt¡s8| j | j¡ |  	¡ S | j| _
|  |j¡S |  ¡ }t|j|jƒ}| j ¡ | _
|S )N)r%   rI   r   ÚKeyTokenÚ
ValueTokenrX   r   r,   rJ   r.   r   r7   r    r*   rY   r   r8   )r   r"   r#   r	   r	   r
   rJ   ’  s    

z&Parser.parse_indentless_sequence_entryc             C   s   |   ¡ }| j |j¡ |  ¡ S )N)r   r   r,   r   Úparse_block_mapping_key)r   r"   r	   r	   r
   rQ   ¦  s    z$Parser.parse_block_mapping_first_keyc             C   s¨   |   t¡rJ|  ¡ }|   ttt¡s6| j | j¡ |  ¡ S | j| _	|  
|j¡S |   t¡sx|  ¡ }td| jd d|j |jƒ‚|  ¡ }t|j|jƒ}| j ¡ | _	| j ¡  |S )Nzwhile parsing a block mappingrW   z"expected <block end>, but found %r)r%   rZ   r   r[   rX   r   r,   Úparse_block_mapping_valuerE   r   r7   r    r*   r   r   r4   r   ÚMappingEndEventr8   )r   r"   r#   r	   r	   r
   r\   «  s     


zParser.parse_block_mapping_keyc             C   sl   |   t¡rL|  ¡ }|   ttt¡s6| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S )N)r%   r[   r   rZ   rX   r   r,   r\   rE   r   r7   r    r*   r   )r   r"   r	   r	   r
   r]   ¾  s    
z Parser.parse_block_mapping_valuec             C   s"   |   ¡ }| j |j¡ | jddS )NT)Úfirst)r   r   r,   r   Úparse_flow_sequence_entry)r   r"   r	   r	   r
   rM   ×  s    z&Parser.parse_flow_sequence_first_entryc             C   sÌ   |   t¡sœ|sF|   t¡r"|  ¡  n$|  ¡ }td| jd d|j |jƒ‚|   t	¡r||  ¡ }t
d d d|j|jdd}| j| _|S |   t¡sœ| j | j¡ |  ¡ S |  ¡ }t|j|jƒ}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow sequencerW   zexpected ',' or ']', but got %rT)rG   )r%   ÚFlowSequenceEndTokenÚFlowEntryTokenr   r*   r   r   r4   r   rZ   rN   r    Ú%parse_flow_sequence_entry_mapping_keyr   r   r,   r`   rC   rY   r8   )r   r_   r"   r#   r	   r	   r
   r`   Ü  s,    





z Parser.parse_flow_sequence_entryc             C   sD   |   ¡ }|  ttt¡s,| j | j¡ |  ¡ S | j| _	|  
|j¡S d S )N)r   r%   r[   rb   ra   r   r,   Ú'parse_flow_sequence_entry_mapping_valuerC   r   r7   r    )r   r"   r	   r	   r
   rc   ö  s    z,Parser.parse_flow_sequence_entry_mapping_keyc             C   sj   |   t¡rJ|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S )N)r%   r[   r   rb   ra   r   r,   Ú%parse_flow_sequence_entry_mapping_endrC   r   r7   r    r*   r   )r   r"   r	   r	   r
   rd      s    
z.Parser.parse_flow_sequence_entry_mapping_valuec             C   s   | j | _|  ¡ }t|j|jƒS )N)r`   r   r*   r^   r   )r   r"   r	   r	   r
   re     s    z,Parser.parse_flow_sequence_entry_mapping_endc             C   s"   |   ¡ }| j |j¡ | jddS )NT)r_   )r   r   r,   r   Úparse_flow_mapping_key)r   r"   r	   r	   r
   rO     s    z#Parser.parse_flow_mapping_first_keyc             C   sâ   |   t¡s²|sF|   t¡r"|  ¡  n$|  ¡ }td| jd d|j |jƒ‚|   t	¡r’|  ¡ }|   t
tt¡s|| j | j¡ |  ¡ S | j| _|  |j¡S n |   t¡s²| j | j¡ |  ¡ S |  ¡ }t|j|jƒ}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow mappingrW   zexpected ',' or '}', but got %r)r%   ÚFlowMappingEndTokenrb   r   r*   r   r   r4   r   rZ   r[   r   r,   Úparse_flow_mapping_valuerC   r   r7   r    Úparse_flow_mapping_empty_valuer^   r8   )r   r_   r"   r#   r	   r	   r
   rf     s.    





zParser.parse_flow_mapping_keyc             C   sj   |   t¡rJ|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S )N)r%   r[   r   rb   rg   r   r,   rf   rC   r   r7   r    r*   r   )r   r"   r	   r	   r
   rh   9  s    
zParser.parse_flow_mapping_valuec             C   s   | j | _|  |  ¡ j¡S )N)rf   r   r7   r*   r   )r   r	   r	   r
   ri   G  s    z%Parser.parse_flow_mapping_empty_valuec             C   s   t d d dd||ƒS )N)TFrH   )rL   )r   Úmarkr	   r	   r
   r7   K  s    zParser.process_empty_scalarN)FF)F)F)#r   r   r   r)   r   r   r   r   r   r   r!   r/   r-   r5   r3   r.   rC   rE   rB   rP   rV   rJ   rQ   r\   r]   rM   r`   rc   rd   re   rO   rf   rh   ri   r7   r	   r	   r	   r
   r   H   sB   	/
g


N)Ú__all__Úerrorr   ÚtokensÚeventsÚscannerr   r   r	   r	   r	   r
   Ú<module>>   s   