
    ЦiYM                         S SK r S SKrS SKJr  S SKJr  \" S5      r\(       a	  S SKJrJr  O " S S5      r " S S	5      r " S
 S\5      r	g)    N)import_module)LaTeXParsingErrorlark)TransformerTokenc                       \ rS rSrS rSrg)r      c                     g N )selfargss     c/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/parsing/latex/lark/transformer.py	transformTransformer.transform   s        r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    	r   r   c                       \ rS rSrSrg)r      r   N)r   r   r   r   r   r   r   r   r   r      s    r   r   c                   F   \ rS rSrSr\R                  r\R                  R                  R                  rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S) r2S* r3S+ r4S, r5S- r6S. r7S/ r8S0 r9S1 r:S2 r;S3 r<S4 r=S5 r>S6 r?S7 r@S8 rAS9 rBS: rCS; rDS< rES= rFS> rGS? rHS@ rISA rJSB rKSC rLSD rMSE rNSF rOSG rPSH rQSI rRSJ rSSK rTSL rUSM rVSN rWSO\X4SP jrYSQrZgR)STransformToSymPyExpr   a  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                 "    [         R                  $ r   )sympyoor   tokenss     r   	CMD_INFTYTransformToSymPyExpr.CMD_INFTY1   s    xxr   c                 d    [         R                  " SSUSS  5      n[        R                  " U5      $ )Nvar    )resubr   Symbol)r   r!   variable_names      r   GREEK_SYMBOL!TransformToSymPyExpr.GREEK_SYMBOL4   s+     ub&*5||M**r   c                     UR                   R                  S5      u  p#UR                  S5      (       a!  [        R                  " U< SUSS < S35      $ [        R                  " U< SU< S35      $ )N_{_{r'   })valuesplit
startswithr   r*   )r   r!   symbolr)   s       r   BASIC_SUBSCRIPTED_SYMBOL-TransformToSymPyExpr.BASIC_SUBSCRIPTED_SYMBOL;   sU    ll((->>#<<VS2Y ?@@<<VS 9::r   c                    UR                   R                  S5      u  p#[        R                  " SSUSS  5      nUR	                  S5      (       a!  [
        R                  " U< SUSS < S35      $ [
        R                  " U< SU< S35      $ )	Nr/   r%   r&   r'   r0   r1   r2   r3   )r4   r5   r(   r)   r6   r   r*   )r   r!   greek_letterr)   s       r   GREEK_SUBSCRIPTED_SYMBOL-TransformToSymPyExpr.GREEK_SUBSCRIPTED_SYMBOLB   so    "LL..s3vveRab)9:>>#<<\3q9 EFF<<\3 ?@@r   c                 T   UR                   R                  S5      u  p#UR                  S5      (       a;  USS n[        R                  " SSU5      n[
        R                  " U< SU< S35      $ US	S  n[        R                  " SSU5      n[
        R                  " U< SU< S35      $ )
Nr/   r0      r2   r%   r&   r1   r3   r'   )r4   r5   r6   r(   r)   r   r*   )r   r!   r7   r)   r;   s        r   SYMBOL_WITH_GREEK_SUBSCRIPT0TransformToSymPyExpr.SYMBOL_WITH_GREEK_SUBSCRIPTK   s    ll((->>#q9L66%\:L<<V\ BCCqr7L66%\:L<<V\ BCCr   c                 4    [         R                  " US   5      $ Nr?   )r   r*   r    s     r   multi_letter_symbol(TransformToSymPyExpr.multi_letter_symbolX   s    ||F1I&&r   c                     SUS   ;   a,  [         R                  R                  R                  US   5      $ [         R                  R                  R	                  US   5      $ )N.r   )r   corenumbersFloatIntegerr    s     r   numberTransformToSymPyExpr.number[   sL    &)::%%++F1I66::%%--fQi88r   c                     US   $ Nr   r   r    s     r   latex_string!TransformToSymPyExpr.latex_stringa       ayr   c                     US   $ Nr'   r   r    s     r   group_round_parentheses,TransformToSymPyExpr.group_round_parenthesesd   rR   r   c                     US   $ rT   r   r    s     r   group_square_brackets*TransformToSymPyExpr.group_square_bracketsg   rR   r   c                     US   $ rT   r   r    s     r   group_curly_parentheses,TransformToSymPyExpr.group_curly_parenthesesj   rR   r   c                 <    [         R                  " US   US   5      $ Nr   r?   )r   Eqr    s     r   eqTransformToSymPyExpr.eqm       xxq	6!9--r   c                 <    [         R                  " US   US   5      $ r^   )r   Ner    s     r   neTransformToSymPyExpr.nep   rb   r   c                 <    [         R                  " US   US   5      $ r^   )r   Ltr    s     r   ltTransformToSymPyExpr.lts   rb   r   c                 <    [         R                  " US   US   5      $ r^   )r   Ler    s     r   lteTransformToSymPyExpr.ltev   rb   r   c                 <    [         R                  " US   US   5      $ r^   )r   Gtr    s     r   gtTransformToSymPyExpr.gty   rb   r   c                 <    [         R                  " US   US   5      $ r^   )r   Ger    s     r   gteTransformToSymPyExpr.gte|   rb   r   c                 <    [         R                  " US   US   5      $ r^   )r   Addr    s     r   addTransformToSymPyExpr.add       yyF1I..r   c                     [        U5      S:X  a  US   * $ [        U5      S:X  a  [        R                  " US   US   * 5      $ g )Nr?   r'      r   )lenr   rx   r    s     r   r)   TransformToSymPyExpr.sub   sF    v;!1I:[A99VAY
33 r   c                 <    [         R                  " US   US   5      $ r^   )r   Mulr    s     r   mulTransformToSymPyExpr.mul   r{   r   c                 f    [         R                  " US   [         R                  " US   S5      5      $ )Nr   r?   r2   r   r   Powr    s     r   divTransformToSymPyExpr.div   s&    yyEIIfQi$<==r   c                    SSK JnJn  [        US   U5      (       a)  [        US   U5      (       a  SSK Jn  U" US   US   5      $ US   [
        R                  " S5      :X  a
  US   US   4$ [        US   [        5      (       a   [
        R                  " US   US   S   5      $ [
        R                  " US   US   5      $ )Nr   )BraKetr'   )OuterProductd)
sympy.physics.quantumr   r   
isinstancer   r   r*   tuple
Derivativer   )r   r!   r   r   r   s        r   adjacent_expressions)TransformToSymPyExpr.adjacent_expressions   s     	3fQi%%*VAY*D*D:q	6!955AY%,,s++!9fQi''q	5))##F1Ivay|<<99VAYq	22r   c                 <    [         R                  " US   US   5      $ r^   )r   r   r    s     r   superscript TransformToSymPyExpr.superscript   r{   r   c                     US   n[        US   [        5      (       a  US   u  p4SU4$ US   n[        R                  " U[        R                  " US5      5      $ )Nr'   r?   
derivativer2   )r   r   r   r   r   )r   r!   	numeratorr/   variabledenominators         r   fractionTransformToSymPyExpr.fraction   sY    1I	fQi'' )KA  )) )K99Y		+r(BCCr   c                 <    [         R                  " US   US   5      $ )Nr'   r?   )r   binomialr    s     r   r   TransformToSymPyExpr.binomial   s    ~~fQi33r   c                    S nS nSU;   a  UR                  S5      nSU;   a  UR                  S5      nU(       a  XS-      OS nU(       a  XS-      OS nU R                  U5      nUc  [        S5      eUR                  U5      S-   nX   nUb  Uc  [        S5      eUb  Uc  [        S5      eUb  X'S-
  :X  a  Sn	OUb  X7S-
  :X  a  Sn	OUS:X  a  Sn	OXS-
     n	Ub  [        R                  " XXE45      $ [        R                  " X5      $ )	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.r}   r?   )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_integral$TransformToSymPyExpr.normal_integral   sW   &=  &||C0&= !,,s+K6Ff12D1<f1_-$"??G&# %n o o '-ll3F&G!&K# & C "{':#$lmm"{':#$lmm ',<^_@_,_ I$VW8W)W I(A- I Q>?I"
 >>)[-^__ >>)CCr   c                 b    [        U5      S:X  a  SUS   4$ [        U5      S:X  a
  US   US   4$ g )Nr}   r'      r?   )r~   r    s     r   group_curly_parentheses_int0TransformToSymPyExpr.group_curly_parentheses_int   sB     v;!fQi<[A!9fQi'' r   c                 v    US   u  p#US   n[         R                  " U[         R                  " US5      5      U4$ )Nr'   r?   r2   r   )r   r!   r   r   r   s        r   special_fraction%TransformToSymPyExpr.special_fraction   s:    $Qi	Qi yyEIIk2$>?IIr   c                 Z   S nS nSU;   a  UR                  S5      nSU;   a  UR                  S5      nU(       a  XS-      OS nU(       a  XS-      OS nUb  Uc  [        S5      eUb  Uc  [        S5      eUS   u  pgUb  [        R                  " XgXE45      $ [        R                  " Xg5      $ )Nr/   r   r'   r   r   r2   )r   r   r   r   )r   r!   r   r   r   r   r   r   s           r   integral_with_special_fraction3TransformToSymPyExpr.integral_with_special_fraction  s    &=  &||C0&= !,,s+K6Ff12D1<f1_-$ "{':#$lmm"{':#$lmm+1":(	"
 >>)[-^__ >>)CCr   c                     UR                  S5      nUR                  S5      nUR                  SU5      nUR                  SU5      nXS-   U nXS-   S  nUS   nUS   n	US   n
XU
4$ )Nr/   r   r0   r3   r'   r   r2   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_special4TransformToSymPyExpr.group_curly_parentheses_special*  s    !<<,ll3' "<<-=>"LL.>?24EF ?+,	 &a"2&l K77r   c                 <    [         R                  " US   US   5      $ Nr?   r'   )r   Sumr    s     r   	summationTransformToSymPyExpr.summationM  r{   r   c                 <    [         R                  " US   US   5      $ r   )r   Productr    s     r   productTransformToSymPyExpr.productP  s    }}VAYq	22r   c                     UR                  S5      nSU;   a  UR                  SU5      nXS-      nOXS-      nUS:X  a  US   S4$ US:X  a  US   S4$ US   S4$ )Nr   r0   r'   +r   -+-r   )r   r!   r   left_curly_brace_index	directions        r   limit_dir_expr#TransformToSymPyExpr.limit_dir_exprS  s{    ll3'&=%+\\#{%C"9:IQ/I!9c>!#!9c>!!9d?"r   c                 b    US   n[        US   [        5      (       a  US   u  p4OUS   nSnX#U4$ )Nr'   r}   r   )r   r   r   r!   limit_variabledestinationr   s        r   group_curly_parentheses_lim0TransformToSymPyExpr.group_curly_parentheses_limc  sC    fQi''%+AY"K )KII55r   c                 H    US   u  p#n[         R                  " US   X#U5      $ Nr?   r2   )r   Limitr   s        r   limitTransformToSymPyExpr.limitm  s'    17.Y{{6":~INNr   c                     US   $ rT   r   r    s     r   differential!TransformToSymPyExpr.differentialr  rR   r   c                 <    [         R                  " US   US   5      $ )Nr2      )r   r   r    s     r   r   TransformToSymPyExpr.derivativeu  s    r
F1I66r   c                 @    [        U5      S:X  a  U$ S n[        X!5      $ )Nr'   c                 f    [        U [        5      (       a  U R                  S:w  a  [        S5      egg)NCOMMAzAA comma token was expected, but some other token was encountered.FT)r   r   typer   )r   s    r   remove_tokens?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens~  s-    dE**yyG+/0stt r   )r~   filter)r   r!   r   s      r   list_of_expressions(TransformToSymPyExpr.list_of_expressionsx  s'    v;! M -00r   c                 @    [         R                  " US   5      " US   6 $ r^   )r   Functionr    s     r   function_applied%TransformToSymPyExpr.function_applied  s    ~~fQi(&)44r   c                 .    [         R                  " US   6 $ rC   )r   Minr    s     r   minTransformToSymPyExpr.min      yy&)$$r   c                 .    [         R                  " US   6 $ rC   )r   Maxr    s     r   maxTransformToSymPyExpr.max  r   r   c                 $    SSK Jn  U" US   5      $ )Nr   )r   r'   )r   r   )r   r!   r   s      r   braTransformToSymPyExpr.bra      -6!9~r   c                 $    SSK Jn  U" US   5      $ )Nr   )r   r'   )r   r   )r   r!   r   s      r   ketTransformToSymPyExpr.ket  r  r   c                 L    SSK JnJnJn  U" U" US   5      U" US   5      5      $ )Nr   )r   r   InnerProductr'   r}   )r   r   r   r  )r   r!   r   r   r  s        r   inner_product"TransformToSymPyExpr.inner_product  s%    @@Cq	NCq	N;;r   c                 4    [         R                  " US   5      $ rT   )r   sinr    s     r   r  TransformToSymPyExpr.sin      yy##r   c                 4    [         R                  " US   5      $ rT   )r   cosr    s     r   r  TransformToSymPyExpr.cos  r  r   c                 4    [         R                  " US   5      $ rT   )r   tanr    s     r   r  TransformToSymPyExpr.tan  r  r   c                 4    [         R                  " US   5      $ rT   )r   cscr    s     r   r  TransformToSymPyExpr.csc  r  r   c                 4    [         R                  " US   5      $ rT   )r   secr    s     r   r  TransformToSymPyExpr.sec  r  r   c                 4    [         R                  " US   5      $ rT   )r   cotr    s     r   r  TransformToSymPyExpr.cot  r  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   asinr   r  r   r!   exponents      r   	sin_powerTransformToSymPyExpr.sin_power  C    !9r>::fRj))99UYYvbz2H==r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   acosr   r  r  s      r   	cos_powerTransformToSymPyExpr.cos_power  r#  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   atanr   r  r  s      r   	tan_powerTransformToSymPyExpr.tan_power  r#  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   acscr   r  r  s      r   	csc_powerTransformToSymPyExpr.csc_power  r#  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   asecr   r  r  s      r   	sec_powerTransformToSymPyExpr.sec_power  r#  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r   )r   acotr   r  r  s      r   	cot_powerTransformToSymPyExpr.cot_power  r#  r   c                 4    [         R                  " US   5      $ rT   )r   r  r    s     r   arcsinTransformToSymPyExpr.arcsin      zz&)$$r   c                 4    [         R                  " US   5      $ rT   )r   r%  r    s     r   arccosTransformToSymPyExpr.arccos  r;  r   c                 4    [         R                  " US   5      $ rT   )r   r)  r    s     r   arctanTransformToSymPyExpr.arctan  r;  r   c                 4    [         R                  " US   5      $ rT   )r   r-  r    s     r   arccscTransformToSymPyExpr.arccsc  r;  r   c                 4    [         R                  " US   5      $ rT   )r   r1  r    s     r   arcsecTransformToSymPyExpr.arcsec  r;  r   c                 4    [         R                  " US   5      $ rT   )r   r5  r    s     r   arccotTransformToSymPyExpr.arccot  r;  r   c                 4    [         R                  " US   5      $ rT   )r   sinhr    s     r   rL  TransformToSymPyExpr.sinh  r;  r   c                 4    [         R                  " US   5      $ rT   )r   coshr    s     r   rO  TransformToSymPyExpr.cosh  r;  r   c                 4    [         R                  " US   5      $ rT   )r   tanhr    s     r   rR  TransformToSymPyExpr.tanh  r;  r   c                 4    [         R                  " US   5      $ rT   )r   asinhr    s     r   rU  TransformToSymPyExpr.asinh      {{6!9%%r   c                 4    [         R                  " US   5      $ rT   )r   acoshr    s     r   rY  TransformToSymPyExpr.acosh  rW  r   c                 4    [         R                  " US   5      $ rT   )r   atanhr    s     r   r\  TransformToSymPyExpr.atanh  rW  r   c                 4    [         R                  " US   5      $ rT   )r   Absr    s     r   absTransformToSymPyExpr.abs  r  r   c                 4    [         R                  " US   5      $ rT   )r   floorr    s     r   rc  TransformToSymPyExpr.floor   rW  r   c                 4    [         R                  " US   5      $ rT   )r   ceilingr    s     r   ceilTransformToSymPyExpr.ceil  s    }}VAY''r   c                 4    [         R                  " US   5      $ rO   )r   	factorialr    s     r   rj  TransformToSymPyExpr.factorial      vay))r   c                 4    [         R                  " US   5      $ rT   )r   	conjugater    s     r   rn  TransformToSymPyExpr.conjugate	  rl  r   c                     [        U5      S:X  a  [        R                  " US   5      $ [        U5      S:X  a  [        R                  " US   US   5      $ g )Nr?   r'   r}   )r~   r   sqrtrootr    s     r   square_root TransformToSymPyExpr.square_root  sK    v;!::fQi(([A::fQi33 r   c                 4    [         R                  " US   5      $ rT   )r   expr    s     r   exponential TransformToSymPyExpr.exponential  r  r   c                 T   US   R                   S:X  a  [        R                  " US   S5      $ US   R                   S:X  a  [        R                  " US   5      $ US   R                   S:X  a<  SU;   a  [        R                  " US   US	   5      $ [        R                  " US   5      $ g )
Nr   FUNC_LGr'   
   FUNC_LNFUNC_LOGr/   r}   r?   )r   r   logr    s     r   r~  TransformToSymPyExpr.log  s    !9>>Y& 99VAY++AY^^y(99VAY''AY^^z)f}yyF1I66 yy++ *r   sc                 <   ^ 1 Skn[        U4S jU 5       S 5      nU$ )N>   r   \text{d}
\mathrm{d}c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fr   r   ).0r7   r  s     r   	<genexpr>DTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>+  s     #]9Mv[\Q\FF9Ms   		)next)r   r  differential_symbolsr   s    `  r   r   1TransformToSymPyExpr._extract_differential_symbol(  s$    @"#]9M#]_cd""r   r   N)[r   r   r   r   __doc__r   r*   SYMBOLrH   rI   rK   DIGITr"   r,   r8   r<   r@   rD   rL   rP   rU   rX   r[   r`   re   ri   rm   rq   ru   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.  r2  r6  r9  r=  r@  rC  rF  rI  rL  rO  rR  rU  rY  r\  r`  rc  rg  rj  rn  rs  rw  r~  strr   r   r   r   r   r   r      s   . \\FJJ&&E+;AD'9....../4/>3 /
D4ADF(J%DN!8F/3# 6O
71 5%%<$$$$$$>>>>>>%%%%%%%%%&&&$&(**4$,"#c #r   r   )
r(   r   sympy.externalr   sympy.parsing.latex.errorsr   r   r   r   r   r   r   r   <module>r     sF    	  ( 8V'' 
 
W#; W#r   