
    Xh                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZ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' d d	l(m)Z) d dl*Z*d d
l+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2  e#jf                  e4      Z5 e#jl                  e5e#jn                        Z8g dZ9d Z:d Z;dejx                  dfdZ=d Z>e?dk(  r e>        yy)    )deepcopy)ABCabstractmethod)
ModuleType)TypeVarGenericTypeTupleListDictIterator
CollectionCallableOptional	FrozenSetAnyUnionIterableIOTYPE_CHECKINGoverloadSequencePatternClassVarSetMappingN)path)defaultdict)partial)ArgumentParser)lalr_argparser
build_lalrmake_warnings_comments)Rule)TerminalDef)ztools/standalone.pyzexceptions.pyzutils.pyztree.pyzvisitors.pyz
grammar.pyzlexer.pyz	common.pyzparse_tree_builder.pyzparsers/lalr_analysis.pyzparsers/lalr_parser_state.pyzparsers/lalr_parser.pyz"parsers/lalr_interactive_parser.pyzparser_frontends.pyzlark.pyzindenter.pyc                 t   d }g }t        t              }| D ]h  }|j                  d      rA|d   dk(  r|dd  j                         }0|d   dk(  r||xx   |z  cc<   d }g }Jt	        |      |sX|j                  |       j |j                         D ci c]  \  }}|dj                  |       c}}S c c}}w )Nz###   {   } )r   list
startswithstrip
ValueErrorappenditemsjoin)linessectiontextsectionslinenames         I/var/www/html/myenv/lib/python3.12/site-packages/lark/tools/standalone.pyextract_sectionsr:   K   s    GD4 H ??5!Aw#~qr(..*aC!T)! &&KK 3;..2BCJD$D"''$-CCCs   B4c                    g }t         j                  }d}d}t        j                  |       }|D ]  \  }}\  }}	\  }
}}||kD  rd}|	|kD  r|j	                  d|	|z
  z         |t         j
                  k(  r%|t         j                  k(  r|j	                  d       n6|t        j                  k(  r|j	                  d       n|j	                  |       |}|}|
} dj                  |      S )z Strip comments and docstrings from a file.
    Based on code from: https://stackoverflow.com/questions/1769332/script-to-remove-python-comments-docstrings
    r    z#--z##
r+   )tokenINDENTtokenizegenerate_tokensr0   STRINGCOMMENTr2   )line_genresprev_toktypelast_linenolast_coltokgentoktypettextslinenoscolelinenoecolltexts                r9   strip_docstringsrQ   _   s     C<<LKH%%h/FCI ?$'4%[ H(?JJsdXo./ell"|u||'CJJu(((JJvJJu" 773<    Fc                    t        t        |      dd ldd ldd lfd}fd} dt
        j                  z          dt
        j                  z                  t        t              D ]  \  }}t        t        j                  j                  t        |            5 }t        |      d   }	|r1t        t        t         t#        |	j%                  d                        }	 |	       d d d         | j'                  t(        t*        g      \  }
} d	       |rA d
        ||
        d        |d        d        ||        d        |d       n0 d
        |
        d        d        |        d        d        d        d        d       y # 1 sw Y   KxY w)N)filer   c                     j                  | j                        }j                  |      } t        j	                  |                   y )N)dumpsHIGHEST_PROTOCOLcompressrepr	b64encode)objscbase64outputpicklezlibs      r9   compressed_outputz)gen_standalone.<locals>.compressed_output   s?    LLf556MM!tF$$Q'()rR   c                 ,     dt               z         y )NzD%(name)s = pickle.loads(zlib.decompress(base64.b64decode(%(name)s))))locals)r8   r_   s    r9   output_decompressz)gen_standalone.<locals>.output_decompress   s    UX^X``arR   z2# The file was automatically generated by Lark v%sz__version__ = "%s"
standaloneTzimport pickle, zlib, base64zDATA = ()DATAzMEMO = (MEMOz	Shift = 0z
Reduce = 1zdef Lark_StandAlone(**kwargs):z3  return Lark._load_from_dict(DATA, MEMO, **kwargs))r   printr`   ra   r^   lark__version__	enumerateEXTRACT_STANDALONE_FILESopenosr   r2   _larkdirr:   rQ   nextiter
splitlinesmemo_serializer%   r$   )	lark_instr_   outrX   rb   re   ipyfilefcodedatamr^   r`   ra   s    `          @@@r9   gen_standaloner~   ~   s   ~S)*
b ?$BRBRRS
$"2"223
H78 	6"'',,x01 	Q#A&|4D'd4??4;P6Q(RS4L		 	 &&T':;GD!
()z$s&!z!s&!ztszq	s ;
<
+,
@A;	 	s   ,A
F::G	c                     t                t        ddt        gd      } | j                  ddddd	
       t	        t
        j                        dk(  r4| j                  t
        j                         t        j                  d       | j                         }t        |      \  }}t        |||j                         |j                  j                          |j                   j                          y )Nz&prog='python -m lark.tools.standalone'zLark Stand-alone Generator Toolz;Look at the Lark documentation for more info on the options)progdescriptionparentsepilogz-cz
--compress
store_truer   zEnable compression)actiondefaulthelp   )rw   rX   )r#   r    r!   add_argumentlensysargv
print_helpstderrexit
parse_argsr"   r~   rX   rw   closegrammar_file)parsernsrv   rw   s       r9   mainr      s    !IWx%3$4=z|F
l<Qef
388}#**%				B^NIs9#<FFLLNOOrR   __main__)@copyr   abcr   r   typesr   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	REPatternr   r   r   r   r>   r@   rp   r   collectionsr   	functoolsr   argparser    rk   
lark.toolsr!   r"   r#   lark.grammarr$   
lark.lexerr%   dirname__file___dirr2   pardirrq   rn   r:   rQ   stdoutr~   r   __name__ rR   r9   <module>r      s   6  #         	  #  #  I I  "t||H499T4;;' &D(> &*szzE /Bh" zF rR   