§
    ^²Åji  ã                   ó’   — d dl Z d dlZd dl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)Ú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                 óx  — t           j                             t           j                             t          ¦  «        d¦  «        }|€\t          t           j                             |d¦  «        d¬¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   n=t          |d¬¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   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__ÚopenÚreadÚ_larkÚLarkr   Úprint_debug_outputÚtransform_exprr   Útransformer)Úselfr   Ú	transformÚgrammar_filer!   Úgrammar_dir_pathÚfÚlatex_grammars           úVC:\Projects\Historical\venv\Lib\site-packages\sympy/parsing/latex/lark/latex_parser.pyÚ__init__zLarkLaTeXParser.__init__*   sœ  € Ýœ7Ÿ<š<­¬¯ª½Ñ(AÔ(AÀ:ÑNÔNÐàÐÝ•b”g—l’lÐ#3°\ÑBÔBÈWÐUÑUÔUð )ÐYZØ !§¢¡¤�ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )øõ �l¨WÐ5Ñ5Ô5ð )¸Ø !§¢¡¤�ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ —j’jØØ(ØØ ØØ Ø %Ø$Ø ð !ñ 	"ô 	"ˆŒð #5ˆÔØ'ˆÔàÐÝ3Ñ5Ô5ˆDÔÐÐà*˜{™}œ}ˆDÔÐÐs$   Á4BÂBÂBÂ2CÃCÃCÚ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.doparseG   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àÐó    )FTNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   Ústrr5   © r6   r(   r   r      sM   € € € € € ðð ð<-ð -ð -ð -ð: ˜ð  ð  ð  ð  ð  ð  r6   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@   f   s,   € õ €}ÝÐ:Ñ;Ô;Ð;Ý×%Ò% aÑ(Ô(Ð(r6   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r6   ú,c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r<   rK   rM   s     €€r(   rR   z,_pretty_print_lark_trees.<locals>.<listcomp>�   s'   ø€ ÐfÐfÐfÐSTÕ4°Q¸
ÀIÑNÔNÐfÐfÐfr6   ú))Ú
isinstancer   ÚTokenÚvaluer;   ÚdataÚ
startswithÚreÚsubr   Úchildren)	ÚtreeÚindentrQ   rY   Úis_exprÚis_ambigÚoutputÚ	show_noderP   s	     `     @r(   rL   rL   r   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ˆàð Ø�#‰ˆà€Mr6   )r   T)r   r.   r[   Úsympy.externalr   Ú$sympy.parsing.latex.lark.transformerr   r   r   r?   r;   r@   rL   r<   r6   r(   ú<module>rf      sÓ   ðØ 	€	€	€	Ø €€€Ø 	€	€	€	à (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ Eàˆ�fÑÔ€ðT ð T ð T ð T ð T ñ T ô T ð T ðn 	ÐØ(˜Ñ*Ô*Ðð	)˜ð 	)ð 	)ð 	)ð 	)ð ð  ð  ð  ð  ð  r6   