U
    :qLe(                     @   s   d dl mZ d dlmZ d dlmZ G dd deZdZeeddd	Z	dZ
eedd
dZeddd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
e e_dS )    )
Recognizer)RuleContext)StringIOc                   @   s0   e Zd ZdZeedddZeedddZdS )SemanticContextNparserouterContextc                 C   s   d S N selfr   r   r
   r
   q/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/atn/SemanticContext.pyeval'   s    zSemanticContext.evalc                 C   s   | S r	   r
   r   r
   r
   r   evalPrecedence<   s    zSemanticContext.evalPrecedence)__name__
__module____qualname__NONEr   r   r   r   r
   r
   r
   r   r      s   r   Nabc                 C   sV   | d ks| t jkr|S |d ks(|t jkr,| S t| |}t|jdkrN|jd S |S d S N   r   )r   r   ANDlenopndsr   r   resultr
   r
   r   
andContextB   s    

r   c                 C   s\   | d kr|S |d kr| S | t jks,|t jkr2t jS t| |}t|jdkrT|jd S |S d S r   )r   r   ORr   r   r   r
   r
   r   	orContextP   s    

r    
collectionc                 C   s   dd | D S )Nc                 S   s   g | ]}t |tr|qS r
   )
isinstancePrecedencePredicate).0contextr
   r
   r   
<listcomp>^   s     
 z.filterPrecedencePredicates.<locals>.<listcomp>r
   r!   r
   r
   r   filterPrecedencePredicates]   s    r(   c                   @   sH   e Zd ZdeeedddZeedddZd	d
 Z	dd Z
dd ZdS )	PredicateF	ruleIndex	predIndexisCtxDependentc                 C   s   || _ || _|| _d S r	   r+   )r   r,   r-   r.   r
   r
   r   __init__c   s    zPredicate.__init__r   c                 C   s    | j r
|nd }||| j| jS r	   )r.   sempredr,   r-   )r   r   r   localctxr
   r
   r   r   h   s    zPredicate.evalc                 C   s   t | j| j| jfS r	   )hashr,   r-   r.   r   r
   r
   r   __hash__l   s    zPredicate.__hash__c                 C   s>   | |krdS t |tsdS | j|jko<| j|jko<| j|jkS NTF)r#   r)   r,   r-   r.   r   otherr
   r
   r   __eq__o   s    


zPredicate.__eq__c                 C   s    dt | j d t | j d S )N{:z}?)strr,   r-   r3   r
   r
   r   __str__x   s    zPredicate.__str__N)r*   r*   F)r   r   r   intboolr/   r   r   r   r4   r8   r<   r
   r
   r
   r   r)   a   s
   	r)   c                   @   sT   e Zd ZdedddZeedddZeeddd	Zd
d Z	dd Z
dd ZdS )r$   r   
precedencec                 C   s
   || _ d S r	   r?   )r   r@   r
   r
   r   r/   ~   s    zPrecedencePredicate.__init__r   c                 C   s   | || jS r	   )precpredr@   r   r
   r
   r   r      s    zPrecedencePredicate.evalc                 C   s   | || jrtjS d S d S r	   )rA   r@   r   r   r   r
   r
   r   r      s    z"PrecedencePredicate.evalPrecedencec                 C   s   | j |j k S r	   r?   r6   r
   r
   r   __lt__   s    zPrecedencePredicate.__lt__c                 C   s   dS )N   r
   r3   r
   r
   r   r4      s    zPrecedencePredicate.__hash__c                 C   s*   | |krdS t |tsdS | j|jkS d S r5   )r#   r$   r@   r6   r
   r
   r   r8      s
    
zPrecedencePredicate.__eq__N)r   )r   r   r   r=   r/   r   r   r   r   rB   r4   r8   r
   r
   r
   r   r$   |   s   r$   c                   @   sT   e Zd ZeedddZdd Zdd Zeedd	d
Z	eedddZ
dd ZdS )r   r   c                 C   s~   t  }t|tr||j n
|| t|tr@||j n
|| t|}t|dkrpt|}|| t	|| _d S )Nr   )
setr#   r   updater   addr(   r   minlist)r   r   r   operandsprecedencePredicatesreducedr
   r
   r   r/      s    




zAND.__init__c                 C   s*   | |krdS t |tsdS | j|jkS d S r5   )r#   r   r   r6   r
   r
   r   r8      s
    
z
AND.__eq__c                 C   s(   d}| j D ]}t||f}q
t|dfS )Nr   r   r   r2   r   hor
   r
   r   r4      s    
zAND.__hash__r   c                    s   t  fdd| jD S )Nc                 3   s   | ]}|  V  qd S r	   r   r%   Zopndr   r   r
   r   	<genexpr>   s     zAND.eval.<locals>.<genexpr>)allr   r   r
   rR   r   r      s    zAND.evalc           	      C   s   d}g }| j D ]>}|||}|||k	O }|d kr8 d S |tjk	r|| q|sV| S t|dkrhtjS d }|D ]}|d kr|nt||}qp|S NFr   )r   r   r   r   appendr   r   	r   r   r   ZdiffersrI   r&   	evaluatedr   rO   r
   r
   r   r      s"    

zAND.evalPrecedencec              
   C   sV   t  F}d}| jD ]$}|s$|d |t| d}q| W  5 Q R  S Q R X d S )NTz&&Fr   r   writer;   getvaluer   buffirstrO   r
   r
   r   r<      s    

zAND.__str__Nr   r   r   r   r/   r8   r4   r   r   r   r   r<   r
   r
   r
   r   r      s   r   c                   @   sT   e Zd ZeedddZdd Zdd Zeedd	d
Z	eedddZ
dd ZdS )r   r   c                 C   s   t  }t|tr||j n
|| t|tr@||j n
|| t|}t|dkrxt|}|d }|| t	|| _d S )Nr   r*   )
rD   r#   r   rE   r   rF   r(   r   sortedrH   )r   r   r   rI   rJ   srK   r
   r
   r   r/      s    




zOR.__init__c                 C   s*   | |krdS t |tsdS | j|jkS d S r5   )r#   r   r   r6   r
   r
   r   r8     s
    
z	OR.__eq__c                 C   s(   d}| j D ]}t||f}q
t|dfS )Nr   r   rL   rM   r
   r
   r   r4     s    
zOR.__hash__r   c                    s   t  fdd| jD S )Nc                 3   s   | ]}|  V  qd S r	   rP   rQ   rR   r
   r   rS     s     zOR.eval.<locals>.<genexpr>)anyr   r   r
   rR   r   r     s    zOR.evalc           	      C   s   d}g }| j D ]B}|||}|||k	O }|tjkr>tj  S |d k	r|| q|sZ| S t|dkrjd S d }|D ]}|d kr|nt||}qr|S rU   )r   r   r   r   rV   r   r    rW   r
   r
   r   r     s"    


zOR.evalPrecedencec              
   C   sV   t  F}d}| jD ]$}|s$|d |t| d}q| W  5 Q R  S Q R X d S )NTz||FrY   r\   r
   r
   r   r<   5  s    

z
OR.__str__Nr_   r
   r
   r
   r   r      s   
r   )antlr4.Recognizerr   antlr4.RuleContextr   ior   objectr   r   r   r   r    rD   r(   r)   r$   r   r
   r
   r
   r   <module>   s   -TP