
    g!&hN                         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y)    N)Path)import_module)TransformToSymPyExprlarkc                   $    e Zd ZdZddZdefdZy)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`.

    Nc                    t         j                  j                  t         j                  j                  t              d      }|:t        t         j                  j                  |d            j                  d      }nt        |      j                  d      }t        j                  ||ddddd	d	d
	      | _	        || _
        || _        |t               | _        y  |       | _        y )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/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/sympy/parsing/latex/lark/latex_parser.py__init__zLarkLaTeXParser.__init__+   s    77<<(A:N .>!MNXXbiXjM .88'8JMjj(   %$  ! 	" #5'35D*}D    sc                    | j                   r-t        j                  j                  t        j
                         | j                  j                  |      }| j                  snt        j                  j                  d|       t        j                  j                  |       t        j                  j                  |j                                |S | j                   rMt        j                  j                  d|       t        j                  j                  |j                                | j                  j                  |      }| j                   r t        j                  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    ""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)   )FTNN)__name__
__module____qualname____doc__r(   strr5    r)   r'   r   r      s    <-6   r)   r   r*   c                 N    t         t        d      t        j                  |       S )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_parserr5   )r*   s    r'   parse_latex_larkr?   e   s&     }:;;%%a((r)   c                 <   t        | t        j                        r| j                  S t	        | j
                        }|j                  d      }|rt        j                  dd|      }|dk(  }|r|dz   }n|}d}| xs |}|r|t	        |      dz   z  }|rA|ddj                  | j                  D 	cg c]  }	d	|z  t        |	||      z    c}	      z   z  }n7|d
j                  | j                  D 	cg c]  }	t        |	||       c}	      z  }|r|dz  }|S c c}	w c c}	w )N
expressionz^expressionE_ambig    (
 ,))
isinstancer   Tokenvaluer:   data
startswithresubr   children_pretty_print_lark_trees)
treeindent	show_exprrN   is_expris_ambig
new_indentoutput	show_nodeis
             r'   rS   rS   q   s1   $$zztyy>Dool+Gvvnc40 HaZ

F(yI#d)c/!$sw  tA  tA  $BnoC*$47OPQS]_h7i$i  $B  C  C  	C#((X\XeXefST4Q
INfgg#M $Bfs   .D.D
)r   T)r   r.   rP   pathlibr   sympy.externalr   $sympy.parsing.latex.lark.transformerr   r   r   r>   r:   r?   rS   r;   r)   r'   <module>r`      sP    	  	  ( EfR  R j 	(*	) 	) r)   