
    gYM                         d dl Z d dlZd dlmZ d dlmZ  ed          Zer	d dlmZmZ n G d d          Z G d d	          Z G d
 de          Z	dS )    N)import_module)LaTeXParsingErrorlark)TransformerTokenc                       e Zd Zd ZdS )r   c                     d S N )selfargss     `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/parsing/latex/lark/transformer.py	transformzTransformer.transform   s    D    N)__name__
__module____qualname__r   r   r   r   r   r      s#        	 	 	 	 	r   r   c                       e Zd ZdS )r   N)r   r   r   r   r   r   r   r      s        r   r   c                      e Zd ZdZej        Zej        j        j	        Z
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<d4 Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDd< ZEd= ZFd> ZGd? ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPdH ZQdI ZRdJ ZSdK ZTdL ZUdM ZVdNeWfdOZXdPS )QTransformToSymPyExpra   Returns a SymPy expression that is generated by traversing the ``lark.Tree``
    passed to the ``.transform()`` function.

    Notes
    =====

    **This class is never supposed to be used directly.**

    In order to tweak the behavior of this class, it has to be subclassed and then after
    the required modifications are made, the name of the new class should be passed to
    the :py:class:`LarkLaTeXParser` class by using the ``transformer`` argument in the
    constructor.

    Parameters
    ==========

    visit_tokens : bool, optional
        For information about what this option does, see `here
        <https://lark-parser.readthedocs.io/en/latest/visitors.html#lark.visitors.Transformer>`_.

        Note that the option must be set to ``True`` for the default parser to work.
    c                     t           j        S r
   )sympyoor   tokenss     r   	CMD_INFTYzTransformToSymPyExpr.CMD_INFTY1   s	    xr   c                 f    t          j        dd|dd                    }t          j        |          S )Nvar    )resubr   Symbol)r   r   variable_names      r   GREEK_SYMBOLz!TransformToSymPyExpr.GREEK_SYMBOL4   s/     ub&*55|M***r   c                     |j                             d          \  }}|                    d          r"t          j        |d|dd         d          S t          j        |d|d          S )N_{_{r    })valuesplit
startswithr   r#   )r   r   symbolr"   s       r   BASIC_SUBSCRIPTED_SYMBOLz-TransformToSymPyExpr.BASIC_SUBSCRIPTED_SYMBOL;   sq    l((-->># 	;<VVVS2YYY ?@@@<VVVSSS 9:::r   c                    |j                             d          \  }}t          j        dd|dd                    }|                    d          r"t          j        |d|dd         d          S t          j        |d|d          S )	Nr'   r   r   r    r(   r)   r*   r+   )r,   r-   r!   r"   r.   r   r#   )r   r   greek_letterr"   s       r   GREEK_SUBSCRIPTED_SYMBOLz-TransformToSymPyExpr.GREEK_SUBSCRIPTED_SYMBOLB   s    "L..s33cveRabb)9::>># 	A<\\\3qt999 EFFF<\\\333 ?@@@r   c                 N   |j                             d          \  }}|                    d          r:|dd         }t          j        dd|          }t          j        |d|d          S |d	d          }t          j        dd|          }t          j        |d|d          S )
Nr'   r(      r*   r   r   r)   r+   r    )r,   r-   r.   r!   r"   r   r#   )r   r   r/   r"   r2   s        r   SYMBOL_WITH_GREEK_SUBSCRIPTz0TransformToSymPyExpr.SYMBOL_WITH_GREEK_SUBSCRIPTK   s    l((-->># 		Dqt9L6%\::L<VVV\\\ BCCCqrr7L6%\::L<VVV\\\ BCCCr   c                 6    t          j        |d                   S Nr5   )r   r#   r   s     r   multi_letter_symbolz(TransformToSymPyExpr.multi_letter_symbolX   s    |F1I&&&r   c                     d|d         v r*t           j        j                            |d                   S t           j        j                            |d                   S )N.r   )r   corenumbersFloatIntegerr   s     r   numberzTransformToSymPyExpr.number[   sK    &):%++F1I666:%--fQi888r   c                     |d         S Nr   r   r   s     r   latex_stringz!TransformToSymPyExpr.latex_stringa       ayr   c                     |d         S Nr    r   r   s     r   group_round_parenthesesz,TransformToSymPyExpr.group_round_parenthesesd   rD   r   c                     |d         S rF   r   r   s     r   group_square_bracketsz*TransformToSymPyExpr.group_square_bracketsg   rD   r   c                     |d         S rF   r   r   s     r   group_curly_parenthesesz,TransformToSymPyExpr.group_curly_parenthesesj   rD   r   c                 D    t          j        |d         |d                   S Nr   r5   )r   Eqr   s     r   eqzTransformToSymPyExpr.eqm       xq	6!9---r   c                 D    t          j        |d         |d                   S rM   )r   Ner   s     r   nezTransformToSymPyExpr.nep   rP   r   c                 D    t          j        |d         |d                   S rM   )r   Ltr   s     r   ltzTransformToSymPyExpr.lts   rP   r   c                 D    t          j        |d         |d                   S rM   )r   Ler   s     r   ltezTransformToSymPyExpr.ltev   rP   r   c                 D    t          j        |d         |d                   S rM   )r   Gtr   s     r   gtzTransformToSymPyExpr.gty   rP   r   c                 D    t          j        |d         |d                   S rM   )r   Ger   s     r   gtezTransformToSymPyExpr.gte|   rP   r   c                 D    t          j        |d         |d                   S rM   )r   Addr   s     r   addzTransformToSymPyExpr.add       yF1I...r   c                     t          |          dk    r	|d          S t          |          dk    r"t          j        |d         |d                    S d S )Nr5   r       r   )lenr   ra   r   s     r   r"   zTransformToSymPyExpr.sub   sT    v;;!1I:[[A9VAY
333 r   c                 D    t          j        |d         |d                   S rM   )r   Mulr   s     r   mulzTransformToSymPyExpr.mul   rc   r   c                 j    t          j        |d         t          j        |d         d                    S )Nr   r5   r*   r   rh   Powr   s     r   divzTransformToSymPyExpr.div   s(    yEIfQi$<$<===r   c                    ddl m}m} t          |d         |          r4t          |d         |          rddl m}  ||d         |d                   S |d         t          j        d          k    r|d         |d         fS t          |d         t                    r't          j        |d         |d         d                   S t          j	        |d         |d                   S )Nr   )BraKetr    )OuterProductd)
sympy.physics.quantumro   rp   
isinstancerq   r   r#   tuple
Derivativerh   )r   r   ro   rp   rq   s        r   adjacent_expressionsz)TransformToSymPyExpr.adjacent_expressions   s     	32222222fQi%% 
	3*VAY*D*D 
	3::::::<q	6!9555AY%,s++++!9fQi''q	5)) 	3#F1Ivay|<<<9VAYq	222r   c                 D    t          j        |d         |d                   S rM   )r   rl   r   s     r   superscriptz TransformToSymPyExpr.superscript   rc   r   c                     |d         }t          |d         t                    r|d         \  }}d|fS |d         }t          j        |t          j        |d                    S )Nr    r5   
derivativer*   )rt   ru   r   rh   rl   )r   r   	numeratorr'   variabledenominators         r   fractionzTransformToSymPyExpr.fraction   sc    1I	fQi'' 	D )KAx  )) )K9Y	+r(B(BCCCr   c                 D    t          j        |d         |d                   S )Nr    r5   )r   binomialr   s     r   r   zTransformToSymPyExpr.binomial   s    ~fQi333r   c                 @   d }d }d|v r|                     d          }d|v r|                     d          }|r||dz            nd }|r||dz            nd }|                     |          }|t          d          |                     |          dz   }||         }||t          d          ||t          d          |||dz
  k    rd}	n"|||dz
  k    rd}	n|dk    rd}	n||dz
           }	|t          j        |	|||f          S t          j        |	|          S )	Nr'   ^r    ztDifferential symbol was not found in the expression.Valid differential symbols are "d", "\text{d}, and "\mathrm{d}".FLower bound for the integral was found, but upper bound was not found.FUpper bound for the integral was found, but lower bound was not found.re   r5   )index_extract_differential_symbolr   r   Integral)
r   r   underscore_indexcaret_indexlower_boundupper_bounddifferential_symboldifferential_variable_indexdifferential_variable	integrands
             r   normal_integralz$TransformToSymPyExpr.normal_integral   s   &==  &||C00&== !,,s++K6FPf-122D1<Ff[1_--$"??GG&# %n o o o '-ll3F&G&G!&K# &'B C "{':#$lmmm"{':#$lmmm ',<@[^_@_,_,_ II$8SVW8W)W)W II(A-- II :Q>?I"
 >).C[R]-^___ >)-BCCCr   c                     t          |          dk    r
d|d         fS t          |          dk    r|d         |d         fS d S )Nre   r       r5   )rf   r   s     r   group_curly_parentheses_intz0TransformToSymPyExpr.group_curly_parentheses_int   sO     v;;!fQi<[[A!9fQi'' r   c                 |    |d         \  }}|d         }t          j        |t          j        |d                    |fS )Nr    r5   r*   rk   )r   r   r|   r}   r~   s        r   special_fractionz%TransformToSymPyExpr.special_fraction   s>    $Qi	8Qi yEIk2$>$>??IIr   c                 j   d }d }d|v r|                     d          }d|v r|                     d          }|r||dz            nd }|r||dz            nd }||t          d          ||t          d          |d         \  }}|t          j        ||||f          S t          j        ||          S )Nr'   r   r    r   r   r*   )r   r   r   r   )r   r   r   r   r   r   r   r   s           r   integral_with_special_fractionz3TransformToSymPyExpr.integral_with_special_fraction  s    &==  &||C00&== !,,s++K6FPf-122D1<Ff[1_--$ "{':#$lmmm"{':#$lmmm+1":(	("
 >).C[R]-^___ >)-BCCCr   c                    |                     d          }|                     d          }|                     d|          }|                     d|          }||dz   |         }||dz   d          }|d         }|d         }	|d         }
||	|
fS )Nr'   r   r(   r+   r    r   r*   r   )r   r   r   r   left_brace_indexright_brace_indexbottom_limit	top_limitindex_variablelower_limitupper_limits              r   group_curly_parentheses_specialz4TransformToSymPyExpr.group_curly_parentheses_special*  s    !<<,,ll3'' "<<-=>>"LL.>??.24EEF ;?++,	 &a"2&l {K77r   c                 D    t          j        |d         |d                   S Nr5   r    )r   Sumr   s     r   	summationzTransformToSymPyExpr.summationM  rc   r   c                 D    t          j        |d         |d                   S r   )r   Productr   s     r   productzTransformToSymPyExpr.productP  s    }VAYq	222r   c                     |                     d          }d|v r"|                     d|          }||dz            }n||dz            }|dk    r
|d         dfS |dk    r
|d         dfS |d         dfS )Nr   r(   r    +r   -+-r   )r   r   r   left_curly_brace_index	directions        r   limit_dir_exprz#TransformToSymPyExpr.limit_dir_exprS  s    ll3''&==%+\\#{%C%C"59:II{Q/I!9c>!#!9c>!!9d?"r   c                 ~    |d         }t          |d         t                    r|d         \  }}n
|d         }d}|||fS )Nr    re   r   )rt   ru   r   r   limit_variabledestinationr   s        r   group_curly_parentheses_limz0TransformToSymPyExpr.group_curly_parentheses_limc  sL    fQi'' 	%+AY"K )KI{I55r   c                 T    |d         \  }}}t          j        |d         |||          S Nr5   r*   )r   Limitr   s        r   limitzTransformToSymPyExpr.limitm  s,    17.Y{6":~{INNNr   c                     |d         S rF   r   r   s     r   differentialz!TransformToSymPyExpr.differentialr  rD   r   c                 D    t          j        |d         |d                   S )Nr*      )r   rv   r   s     r   r{   zTransformToSymPyExpr.derivativeu  s    r
F1I666r   c                 R    t          |          dk    r|S d }t          ||          S )Nr    c                 h    t          | t                    r| j        dk    rt          d          dS dS )NCOMMAzAA comma token was expected, but some other token was encountered.FT)rt   r   typer   )r   s    r   remove_tokensz?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens~  s:    dE** !yG++/0sttt 5tr   )rf   filter)r   r   r   s      r   list_of_expressionsz(TransformToSymPyExpr.list_of_expressionsx  s;    v;;! M   -000r   c                 H     t          j        |d                   |d          S rM   )r   Functionr   s     r   function_appliedz%TransformToSymPyExpr.function_applied  s!    (u~fQi((&)44r   c                 *    t          j        |d          S r8   )r   Minr   s     r   minzTransformToSymPyExpr.min      y&)$$r   c                 *    t          j        |d          S r8   )r   Maxr   s     r   maxzTransformToSymPyExpr.max  r   r   c                 0    ddl m}  ||d                   S )Nr   )ro   r    )rs   ro   )r   r   ro   s      r   brazTransformToSymPyExpr.bra  &    ------s6!9~~r   c                 0    ddl m}  ||d                   S )Nr   )rp   r    )rs   rp   )r   r   rp   s      r   ketzTransformToSymPyExpr.ket  r   r   c                 j    ddl m}m}m}  | ||d                    ||d                             S )Nr   )ro   rp   InnerProductr    re   )rs   ro   rp   r   )r   r   ro   rp   r   s        r   inner_productz"TransformToSymPyExpr.inner_product  sJ    @@@@@@@@@@|CCq	NNCCq	NN;;;r   c                 6    t          j        |d                   S rF   )r   sinr   s     r   r   zTransformToSymPyExpr.sin      y###r   c                 6    t          j        |d                   S rF   )r   cosr   s     r   r   zTransformToSymPyExpr.cos  r   r   c                 6    t          j        |d                   S rF   )r   tanr   s     r   r   zTransformToSymPyExpr.tan  r   r   c                 6    t          j        |d                   S rF   )r   cscr   s     r   r   zTransformToSymPyExpr.csc  r   r   c                 6    t          j        |d                   S rF   )r   secr   s     r   r   zTransformToSymPyExpr.sec  r   r   c                 6    t          j        |d                   S rF   )r   cotr   s     r   r   zTransformToSymPyExpr.cot  r   r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   asinrl   r   r   r   exponents      r   	sin_powerzTransformToSymPyExpr.sin_power  H    !9r>>:fRj)))9UYvbz22H===r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acosrl   r   r   s      r   	cos_powerzTransformToSymPyExpr.cos_power  r   r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   atanrl   r   r   s      r   	tan_powerzTransformToSymPyExpr.tan_power  r   r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acscrl   r   r   s      r   	csc_powerzTransformToSymPyExpr.csc_power  r   r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   asecrl   r   r   s      r   	sec_powerzTransformToSymPyExpr.sec_power  r   r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acotrl   r   r   s      r   	cot_powerzTransformToSymPyExpr.cot_power  r   r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arcsinzTransformToSymPyExpr.arcsin      z&)$$$r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arccoszTransformToSymPyExpr.arccos  r   r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arctanzTransformToSymPyExpr.arctan  r   r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arccsczTransformToSymPyExpr.arccsc  r   r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arcseczTransformToSymPyExpr.arcsec  r   r   c                 6    t          j        |d                   S rF   )r   r   r   s     r   arccotzTransformToSymPyExpr.arccot  r   r   c                 6    t          j        |d                   S rF   )r   sinhr   s     r   r  zTransformToSymPyExpr.sinh  r   r   c                 6    t          j        |d                   S rF   )r   coshr   s     r   r	  zTransformToSymPyExpr.cosh  r   r   c                 6    t          j        |d                   S rF   )r   tanhr   s     r   r  zTransformToSymPyExpr.tanh  r   r   c                 6    t          j        |d                   S rF   )r   asinhr   s     r   r  zTransformToSymPyExpr.asinh      {6!9%%%r   c                 6    t          j        |d                   S rF   )r   acoshr   s     r   r  zTransformToSymPyExpr.acosh  r  r   c                 6    t          j        |d                   S rF   )r   atanhr   s     r   r  zTransformToSymPyExpr.atanh  r  r   c                 6    t          j        |d                   S rF   )r   Absr   s     r   abszTransformToSymPyExpr.abs  r   r   c                 6    t          j        |d                   S rF   )r   floorr   s     r   r  zTransformToSymPyExpr.floor   r  r   c                 6    t          j        |d                   S rF   )r   ceilingr   s     r   ceilzTransformToSymPyExpr.ceil  s    }VAY'''r   c                 6    t          j        |d                   S rB   )r   	factorialr   s     r   r  zTransformToSymPyExpr.factorial      vay)))r   c                 6    t          j        |d                   S rF   )r   	conjugater   s     r   r  zTransformToSymPyExpr.conjugate	  r  r   c                     t          |          dk    rt          j        |d                   S t          |          dk    r!t          j        |d         |d                   S d S )Nr5   r    re   )rf   r   sqrtrootr   s     r   square_rootz TransformToSymPyExpr.square_root  sZ    v;;!:fQi((([[A:fQi333 r   c                 6    t          j        |d                   S rF   )r   expr   s     r   exponentialz TransformToSymPyExpr.exponential  r   r   c                 T   |d         j         dk    rt          j        |d         d          S |d         j         dk    rt          j        |d                   S |d         j         dk    r?d|v r!t          j        |d         |d	                   S t          j        |d                   S d S )
Nr   FUNC_LGr    
   FUNC_LNFUNC_LOGr'   re   r5   )r   r   logr   s     r   r,  zTransformToSymPyExpr.log  s    !9>Y&& 9VAY+++AY^y((9VAY'''AY^z))f}}yF1I666 y+++ *)r   sc                 H    h d}t          fd|D             d           }|S )N>   \text{d}
\mathrm{d}rr   c              3   $   K   | ]
}|v |V  d S r
   r   ).0r/   r-  s     r   	<genexpr>zDTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>+  s/      #]#]vQW[\Q\Q\FQ\Q\Q\Q\#]#]r   )next)r   r-  differential_symbolsr   s    `  r   r   z1TransformToSymPyExpr._extract_differential_symbol(  s<    @@@"#]#]#]#]9M#]#]#]_cdd""r   N)Yr   r   r   __doc__r   r#   SYMBOLr<   r=   r?   DIGITr   r%   r0   r3   r6   r9   r@   rC   rG   rI   rK   rO   rS   rV   rY   r\   r_   rb   r"   ri   rm   rw   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r#  r&  r,  strr   r   r   r   r   r      s        . \FJ&E  + + +; ; ;A A AD D D' ' '9 9 9        . . .. . .. . .. . .. . .. . ./ / /4 4 4/ / /> > >3 3 3 / / /
D 
D 
D4 4 4AD AD ADF( ( (J J J%D %D %DN!8 !8 !8F/ / /3 3 3# # # 6 6 6O O O
  7 7 71 1 1 5 5 5% % %% % %    < < <$ $ $$ $ $$ $ $$ $ $$ $ $$ $ $> > >> > >> > >> > >> > >> > >% % %% % %% % %% % %% % %% % %% % %% % %% % %& & && & && & &$ $ $& & &( ( (* * ** * *4 4 4$ $ $, , ,"#c # # # # # #r   r   )
r!   r   sympy.externalr   sympy.parsing.latex.errorsr   r   r   r   r   r   r   r   <module>r<     s    				  ( ( ( ( ( ( 8 8 8 8 8 8}V 	'''''''''       
       
W# W# W# W# W#; W# W# W# W# W#r   