3
<zWc                 @   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	   -/usr/lib/python3/dist-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 | _ | j d k	rJ|s,dS x|D ]}t| j |r2dS q2W d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|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\   | j tttsP| j| _| j }|j }}t||dd}| j	j
| j | j| _|S | j 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| j tr| j  qW | j ts| j }|j}| j \}}| j tsdtd d d| j j	 | j j| j }|j
}t||d||d}| jj| j | j| _n4| j }t|j|j
}| j st| j st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   r/   r0   r   r"   r	   r	   r
   r.      s.    



zParser.parse_document_startc             C   sL   | j  }|j }}d}| jtr2| j }|j}d}t|||d}| j| _|S )NFT)r#   )	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   s<   | j ttttr0| j| j j}| jj	 | _
|S | j S d 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   s   d | _ i | _x| jtr| j }|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rtd d d| |j|| j|< qW | jr| j | jj	 f}n
| j d f}x(| j
D ]}|| jkr| j
| | j|< qW |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 )NT)block)
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S )NT)r?   indentless_sequence)r@   )r   r	   r	   r
   'parse_block_node_or_indentless_sequence  s    z.Parser.parse_block_node_or_indentless_sequenceFc          	   C   sR  | j tr4| j }t|j|j|j}| jj | _	nd }d }d  } }}	| j t
r| j }|j}|j}|j}| j tr| j }|j}	|j}|j}nF| 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pR|dk}|r| j tr| j j}t|||||}| j| _	n| j tr| j }|j}|jr|d ks|dkrd}n|d krd}nd}t||||j|||jd}| jj | _	nH| j tr<| j j}t|||||dd}| j| _	n| j trp| j j}t|||||dd}| j| _	n|r| j tr| j j}t|||||dd}| j| _	n|r| j tr| j j}t|||||dd}| j| _	nj|d k	s|d k	rt|||dfd||}| jj | _	n2|r(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rH| j }| j tts4| jj| j | j S | j| _| j	|j
S | j tsv| 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   sr   | j trL| j }| j tttts8| 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rJ| j }| j ttts6| jj| j | j S | j| _	| j
|jS | j tsx| 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   sl   | j trL| j }| j ttts6| jj| j | j S | j| _	| j
|jS n| j| _	| j }| j
|jS d 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 )NT)first)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|sF| j tr"| j  n$| 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 %rT)rE   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   sD   | j  }| jttts,| jj| j | j S | j| _	| j
|jS d 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   sj   | j trJ| j }| j tts4| jj| j | j S | j| _	| j
|jS n| j| _	| j }| j
|jS d 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 )NT)rZ   )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|sF| j tr"| j  n$| 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S n | 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   sj   | j trJ| j }| j tts4| jj| j | j S | j| _	| j
|jS n| j| _	| j }| j
|jS d 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)FF)F)F)#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   