§
    OŠtjN  ã                   óž   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ  ed¦  «        Z	 G d„ d¦  «        Z
e	�
 e
¦   «         Zdefd	„Zdd„ZdS )é    N)ÚPath)Úimport_module)ÚTransformToSymPyExprÚlarkc                   ó&   — e Zd ZdZdd„Zdefd„ZdS )	ÚLarkLaTeXParseraF  Class for converting input `\mathrm{\LaTeX}` strings into SymPy Expressions.
    It holds all the necessary internal data for doing so, and exposes hooks for
    customizing its behavior.

    Parameters
    ==========

    print_debug_output : bool, optional

        If set to ``True``, prints debug output to the logger. Defaults to ``False``.

    transform : bool, optional

        If set to ``True``, the class runs the Transformer class on the parse tree
        generated by running ``Lark.parse`` on the input string. Defaults to ``True``.

        Setting it to ``False`` can help with debugging the `\mathrm{\LaTeX}` grammar.

    grammar_file : str, optional

        The path to the grammar file that the parser should use. If set to ``None``,
        it uses the default grammar, which is in ``grammar/latex.lark``, relative to
        the ``sympy/parsing/latex/lark/`` directory.

    transformer : str, optional

        The name of the Transformer class to use. If set to ``None``, it uses the
        default transformer class, which is :py:func:`TransformToSymPyExpr`.

    FTNc                 ó  — t           j                             t           j                             t          ¦  «        d¦  «        }|€Bt          t           j                             |d¦  «        ¦  «                             d¬¦  «        }n#t          |¦  «                             d¬¦  «        }t                               ||ddddd	d	d
¬¦	  «	        | _	        || _
        || _        |€t          ¦   «         | _        d S  |¦   «         | _        d S )Nzgrammar/z
latex.larkzutf-8)ÚencodingÚearleyÚlatex_stringÚautoÚexplicitFT)Úsource_pathÚparserÚstartÚlexerÚ	ambiguityÚpropagate_positionsÚmaybe_placeholdersÚkeep_all_tokens)ÚosÚpathÚjoinÚdirnameÚ__file__r   Ú	read_textÚ_larkÚLarkr   Úprint_debug_outputÚtransform_exprr   Útransformer)Úselfr   Ú	transformÚgrammar_filer!   Úgrammar_dir_pathÚlatex_grammars          úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/parsing/latex/lark/latex_parser.pyÚ__init__zLarkLaTeXParser.__init__+   sñ   € Ýœ7Ÿ<š<­¬¯ª½Ñ(AÔ(AÀ:ÑNÔNÐàÐÝ ¥¤§¢Ð.>ÀÑ!MÔ!MÑNÔN×XÒXÐbiÐXÑjÔjˆMˆMå  Ñ.Ô.×8Ò8À'Ð8ÑJÔJˆMå—j’jØØ(ØØ ØØ Ø %Ø$Ø ð !ñ 	"ô 	"ˆŒð #5ˆÔØ'ˆÔàÐÝ3Ñ5Ô5ˆDÔÐÐà*˜{™}œ}ˆDÔÐÐó    Úsc                 ó¾  — | j         r)t          j                             t          j        ¦  «         | j                             |¦  «        }| j        srt          j         	                    d|¦  «         t          j         	                    |¦  «         t          j         	                    | 
                    ¦   «         ¦  «         |S | j         rQt          j         	                    d|¦  «         t          j         	                    | 
                    ¦   «         ¦  «         | j                             |¦  «        }| j         r t          j         	                    d|¦  «         |S )Nzexpression = %szSymPy expression = %s)r   r   ÚloggerÚsetLevelÚloggingÚDEBUGr   Úparser    ÚdebugÚprettyr!   r#   )r"   r*   Ú
parse_treeÚsympy_expressions       r'   ÚdoparsezLarkLaTeXParser.doparseF   s%  € ØÔ"ð 	1ÝŒL×!Ò!¥'¤-Ñ0Ô0Ð0à”[×&Ò& qÑ)Ô)ˆ
àÔ"ð 	åŒL×ÒÐ0°!Ñ4Ô4Ð4ÝŒL×Ò˜zÑ*Ô*Ð*ÝŒL×Ò˜z×0Ò0Ñ2Ô2Ñ3Ô3Ð3ØÐàÔ"ð 	4åŒL×ÒÐ0°!Ñ4Ô4Ð4åŒL×Ò˜z×0Ò0Ñ2Ô2Ñ3Ô3Ð3àÔ+×5Ò5°jÑAÔAÐàÔ"ð 	JÝŒL×ÒÐ6Ð8HÑIÔIÐIàÐr)   )FTNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   Ústrr5   © r)   r'   r   r      sM   € € € € € ðð ð<-ð -ð -ð -ð6 ˜ð  ð  ð  ð  ð  ð  r)   r   r*   c                 ób   — t           €t          d¦  «        ‚t                               | ¦  «        S )z™
    Experimental LaTeX parser using Lark.

    This function is still under development and its API may change with the
    next releases of SymPy.
    NzLark is probably not installed)r   ÚImportErrorÚ_lark_latex_parserr5   )r*   s    r'   Úparse_latex_larkr?   e   s,   € õ €}ÝÐ:Ñ;Ô;Ð;Ý×%Ò% aÑ(Ô(Ð(r)   Tc                 óì  ‡‡— t          | t          j        ¦  «        r| j        S t	          | j        ¦  «        }|                     d¦  «        }|rt          j        dd|¦  «        }|dk    }|r|dz   Šn|Šd}| p‰}|r|t	          |¦  «        dz   z  }|r.|dd 	                    ˆˆfd	„| j
        D ¦   «         ¦  «        z   z  }n*|d
 	                    ˆˆfd„| j
        D ¦   «         ¦  «        z  }|r|dz  }|S )NÚ
expressionz^expressionÚEÚ_ambigé   Ú ú(ú
c                 ó>   •— g | ]}d ‰z  t          |‰‰¦  «        z   ‘ŒS )ú ©Ú_pretty_print_lark_trees©Ú.0ÚiÚ
new_indentÚ	show_exprs     €€r'   ú
<listcomp>z,_pretty_print_lark_trees.<locals>.<listcomp>Š   sF   ø€ ð  $Bð  $Bð  $BÐno C¨*Ñ$4Õ7OÐPQÐS]Ð_hÑ7iÔ7iÑ$ið  $Bð  $Bð  $Br)   ú,c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r;   rJ   rL   s     €€r'   rQ   z,_pretty_print_lark_trees.<locals>.<listcomp>Œ   s'   ø€ ÐfÐfÐfÐSTÕ4°Q¸
ÀIÑNÔNÐfÐfÐfr)   ú))Ú
isinstancer   ÚTokenÚvaluer:   ÚdataÚ
startswithÚreÚsubr   Úchildren)	ÚtreeÚindentrP   rX   Úis_exprÚis_ambigÚoutputÚ	show_noderO   s	     `     @r'   rK   rK   q   sZ  øø€ Ý�$�œÑ$Ô$ð ØŒzÐåˆtŒy‰>Œ>€Dà�oŠo˜lÑ+Ô+€Gàð 1ÝŒv�n c¨4Ñ0Ô0ˆà˜Ò €Hàð Ø˜a‘Zˆ
ˆ
àˆ
à€FØ�Ð(˜y€Iàð "Ø•#�d‘)”)˜c‘/Ñ!ˆàð hØ�$˜Ÿšð  $Bð  $Bð  $Bð  $Bð  $BÐswô  tAð  $Bñ  $Bô  $Bñ  Cô  Cñ  Cñ  	Cˆˆà�#—(’(ÐfÐfÐfÐfÐfÐX\ÔXeÐfÑfÔfÑgÔgÑgˆàð Ø�#‰ˆà€Mr)   )r   T)r   r.   rZ   Úpathlibr   Úsympy.externalr   Ú$sympy.parsing.latex.lark.transformerr   r   r   r>   r:   r?   rK   r;   r)   r'   ú<module>rf      så   ðØ 	€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ Eàˆ�fÑÔ€ðR ð R ð R ð R ð R ñ R ô R ð R ðj 	ÐØ(˜Ñ*Ô*Ðð	)˜ð 	)ð 	)ð 	)ð 	)ð ð  ð  ð  ð  ð  r)   