
    \hN                         S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  \" S5      r	 " S S5      r
\	b  \
" 5       rS\4S	 jrSS
 jrg)    N)Path)import_module)TransformToSymPyExprlarkc                   0    \ rS rSrSrSS jrS\4S jrSrg)	LarkLaTeXParser   a  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`.

Nc                    [         R                  R                  [         R                  R                  [        5      S5      nUc7  [        [         R                  R                  US5      5      R                  SS9nO[        U5      R                  SS9n[        R                  UUSSSSS	S	S
S9	U l	        Xl
        X l        Uc  [        5       U l        g U" 5       U l        g )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          ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/parsing/latex/lark/latex_parser.py__init__LarkLaTeXParser.__init__+   s    77<<(A:N .>!MNXXbiXjM .88'8JMjj(   %$  ! 	" #5'35D*}D    sc                 
   U R                   (       a-  [        R                  R                  [        R
                  5        U R                  R                  U5      nU R                  (       dn  [        R                  R                  SU5        [        R                  R                  U5        [        R                  R                  UR                  5       5        U$ U R                   (       aM  [        R                  R                  SU5        [        R                  R                  UR                  5       5        U R                  R                  U5      nU R                   (       a   [        R                  R                  SU5        U$ )Nzexpression = %szSymPy expression = %s)r    r   loggersetLevelloggingDEBUGr   parser!   debugprettyr"   r$   )r#   r,   
parse_treesympy_expressions       r(   doparseLarkLaTeXParser.doparseF   s    ""LL!!'--0[[&&q)
""LL0!4LLz*LLz0023""LL0!4LLz0023++55jA""LL68HIr+   )r   r    r!   r"   )FTNN)	__name__
__module____qualname____firstlineno____doc__r)   strr7   __static_attributes__ r+   r(   r   r      s    <-6   r+   r   r,   c                 P    [         c  [        S5      e[        R                  U 5      $ )z
Experimental LaTeX parser using Lark.

This function is still under development and its API may change with the
next releases of SymPy.
zLark is probably not installed)r   ImportError_lark_latex_parserr7   )r,   s    r(   parse_latex_larkrD   e   s&     }:;;%%a((r+   c                    [        U [        R                  5      (       a  U R                  $ [	        U R
                  5      nUR                  S5      nU(       a  [        R                  " SSU5      nUS:H  nU(       a  US-   nOUnSnU(       + =(       d    UnU(       a  U[	        U5      S-   -  nU(       aC  USSR                  U R                   V	s/ s H  n	S	U-  [        XU5      -   PM     sn	5      -   -  nO9US
R                  U R                   V	s/ s H  n	[        XU5      PM     sn	5      -  nU(       a  US-  nU$ s  sn	f s  sn	f )N
expressionz^expressionE_ambig    (
 ,))
isinstancer   Tokenvaluer>   data
startswithresubr   children_pretty_print_lark_trees)
treeindent	show_exprrS   is_expris_ambig
new_indentoutput	show_nodeis
             r(   rX   rX   q   sC   $$$zztyy>Dool+Gvvnc40 HaZ

F(yI#d)c/!$sw  tA  tA  $B  tAnoC*$47OPQ_h7i$i  tA  $B  C  C  	C#((X\XeXefXeST4QINXefgg#M $Bfs   E E
)r   T)r   r0   rU   pathlibr   sympy.externalr   $sympy.parsing.latex.lark.transformerr   r   r   rC   r>   rD   rX   r@   r+   r(   <module>re      sP    	  	  ( EfR  R j 	(*	) 	) r+   