MpjrdZddlZddlZddlZddlmZddlmZmZddl Z ddl m Z ddl m Z ddlmZmZmZmZmZmZmZmZdd lmZmZmZmZmZmZmZmZm Z dd l!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4ddlm5Z5m6Z6ddl7m8Z8m9Z9m:Z:m;Z;mZ>m?Z@ddlAmBZBmCZCmDZDmEZEmFZFeDdZGdgZHdZIdZJe3dZKidddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:id;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_ZLid`dadbdcdddedfdgdhdidjdkdldmdnddoddpdqdrdsdtdudLdKdvdwdxdydzd{d|d}d~eJzddddddddddddd ZMiddgdddgdgdddgddvdgdddgdddgddxdgddgdgddddgddgdddgdgddgddgdddzgiddxgddxdzgdddgddgddgddgdddgdddgdddgdddgddgddgdgdâdddgddgddgdddgdgddgddgdd|gdМZNdZOdZPGdӄdeBZQeGGdՄdeEZRGdׄdeCZSGdلdeBZTGdۄdeEZUGd݄deEZVGd߄deEZWdZXdZYdZZeGGddeEZ[de%fdZ\GddeFZ]GddeEZ^dZ_Gdde Z`eddZaGddZbebdeHZcdZddZeeGGddeEZfdZgdZhddgfddgfdgdfdgdfddgfddgfdgdfdgd fd d gfd d gfddgfddgfddgfg ZidZjd&dZkdZldZmd&dendendeeeMORETHAN=EQUAL"DBLQUOTE'QUOTE` BACKQUOTE~TILDE(LPAR)RPAR{LBRACE}RBRACE[LSQB]RSQB NEWLINEz CRLFTABSPACE)  _LPARz\(_RPARz\)_LBRAz\[_RBRAz\]_LBRACEz\{_RBRACEz\}OPz[+*]|[?](?![a-z_])_COLON_COMMA_ORz\|_DOTz\.(?!\.)_DOTDOTz\.\.RULE_MODIFIERSz(!|![?]?|[?]!?)(?=[_a-z])RULEz_?[a-z][_a-z0-9]*TERMINALz_?[A-Z][_A-Z0-9]*STRINGz"(\\"|\\\\|[^"\n])*?"i?z/(?!/)(\\/|\\\\|[^/])*?/[%s]*z (\r?\n)+\s*z (\r?\n)+\s*\|z[ \t]+z\s*//[^\n]*|\s*#[^\n]*z\\[ ]*\nz->z%ignorez %overridez%declarez%extendz%importz[+-]?\d+) REGEXP_NL_NL_ORWSCOMMENTrL_TO_IGNORE _OVERRIDE_DECLARE_EXTEND_IMPORTNUMBERstart_list_itemz _list _item)ruletermignoreimportdeclareoverrideextendrrzBrule_modifiers RULE template_params priority _COLON expansions _NLrule_modifierspriorityz _DOT NUMBERtemplate_paramsz _LBRACE _template_params _RBRACE_template_paramsz_template_params _COMMA RULE expansions _expansions)aliasz_expansions _OR aliasz_expansions _NL_OR aliasz?aliaszexpansion _TO nonterminal expansion _expansionz_expansion exprz?expr)atomzatom OPzatom TILDE NUMBERz atom TILDE NUMBER _DOTDOT NUMBERz?atom)z_LPAR expansions _RPARmaybevaluer)terminal nonterminalliteralrangetemplate_usagerrz?namez?symbolrz_LBRA expansions _RBRArzSTRING _DOTDOT STRINGrz*nonterminal _LBRACE _template_args _RBRACE_template_argsz_template_args _COMMA valuerzTERMINAL _COLON expansions _NLz*TERMINAL _DOT NUMBER _COLON expansions _NLrz_OVERRIDE rulez_OVERRIDE termrz _EXTEND rulez _EXTEND termrz_IGNORE expansions _NLrz_DECLARE _declare_args _NLr)z_IMPORT _import_path _NLz._IMPORT _import_path _LPAR name_list _RPAR _NLz!_IMPORT _import_path _TO name _NL _import_path import_lib import_rel _import_argsz_DOT _import_argsnamez_import_args _DOT name _name_listz_name_list _COMMA namesymbolz_declare_args symbolr) name_listr _declare_argsr2cleZdZdefdZdedefdZdeee efde e ddffdZ de fd Z de fd Z y) FindRuleSizekeep_all_tokensc||_yNr)selfrs _/mnt/ssd/data/Dropbox/adrian/scripts/msg_venv/lib/python3.12/site-packages/lark/load_grammar.py__init__zFindRuleSize.__init__s .symreturnct|tr|jjd St|tr|j xs |j S|turyJ|)Nr_F) isinstancer&r startswithr%r filter_out_EMPTY)rrs r_will_not_get_removedz"FindRuleSize._will_not_get_removedsZ c; 'xx**3// / c8 $''=s~~+= = &=curargsNc#K|D]@}t|tr|t|tr|j|rdnd@Jyw)Nrr)rintr'r)rras r _args_as_intzFindRuleSize._args_as_intsH A!S!Av&55a8aa?u  sAA c6t|j|Sr)sumrrrs rrzFindRuleSize.expansion4$$T*++rc6t|j|Sr)maxrrs rrzFindRuleSize.expansionsrr)__name__ __module__ __qualname__boolrr'rrr rrrrrrrrrsf//DeCK&8!9iTSW>X,,,#,rrcpeZdZdZdefdZdZdedefdZdZ d Z d ed e d e fd Z d ede fdZd efdZy) EBNF_to_BNFcJg|_i|_d|_d|_d|_y)Nanonr) new_rules rules_cacheprefixi rule_optionsrs rrzEBNF_to_BNF.__init__s'  rinnerchd|j||jfz}|xjdz c_|S)Nz __%s_%s_%dr)rr)rrnew_names r _name_rulezEBNF_to_BNF._name_rules-4;;tvv">> ! rct|}|jj|||jf||j|<|Sr)r&rappendrr)rkeyrrts r _add_rulezEBNF_to_BNF._add_rules@   tZ1B1BCD !rtype_exprc  |j|S#t$rW|j|}t|}t dt d|gt d||gg}|j |||cYSwxYwNrr)rKeyErrorrr&STr)rrrrrtrees r_add_recurse_rulezEBNF_to_BNF._add_recurse_rules 8##D) ) 8u-HH%Al;';D *%D>>$$7 7 8sAA10A1c ||||f} |j|S#t$rN|jd||fz}tdtd|g|z|g|zzg}|j |||cYSwxYw)aNGenerate a rule that repeats target ``a`` times, and repeats atom ``b`` times. When called recursively (into target), it repeats atom for x(n) times, where: x(0) = 1 x(n) = a(n) * x(n-1) + b Example rule when a=3, b=4: new_rule: target target target atom atom atom atom zrepeat_a%d_b%drr)rrrrr)rrbtargetrrrrs r_add_repeat_rulezEBNF_to_BNF._add_repeat_rules!VT" 7##C( ( 7'71a&'@AHlR fX\TFQJ5N%O$PQD>>#x6 6 7sAA.-A.c||||df} |j|S#t$r|jd||fz}tdt |Dcgc]}td|g|z|gzncc}wc}t |Dcgc]}td|g|z|g|zzncc}wc}z} |j ||| cYSwxYw)a_Creates a rule that matches atom 0 to (a*n+b)-1 times. When target matches n times atom, and target_opt 0 to n-1 times target_opt, First we generate target * i followed by target_opt, for i from 0 to a-1 These match 0 to n*a - 1 times atom Then we generate target * a followed by atom * i, for i from 0 to b-1 These match n*a to n*a + b-1 times atom The created rule will not have any shift/reduce conflicts so that it can be used with lalr Example rule when a=3, b=4: new_rule: target_opt | target target_opt | target target target_opt | target target target | target target target atom | target target target atom atom | target target target atom atom atom optzrepeat_a%d_b%d_optrr)rrrrrr) rrrr target_optrrrrrs r_add_repeat_opt_rulez EBNF_to_BNF._add_repeat_opt_rules2!VT5) 7##C( ( 7';q!f'DEHlDI!H%?@; j\ 9:%%AFa;<; dVAX 56%D >>#x6 6 7s'2B= A& %B=:B"B=<B=rmnmxc |tkr5tdt||dzDcgc]}td|g|zc}S|}t|tD]\}}|j ||||}||k(r|S||z dz}t|t} |} tdg} | ddD].\}}|j ||| | |} |j ||| |} 0| d\}}|j ||| | |} tdtd|g| gzgScc}w)z\Generates a rule tree that repeats ``rule`` exactly between ``mn`` to ``mx`` times. rrrN)REPEAT_BREAK_THRESHOLDrrrSMALL_FACTOR_THRESHOLDrr ) rrr r n mn_targetrrdiff diff_factors diff_targetdiff_opt_targets r_generate_repeatszEBNF_to_BNF._generate_repeats;sN & &l%PRTVYZTZJ[$\QR dVaZ%@$\] ] !"&<= EDAq--aItDI E 8 Bw{$T+AB  ["- "% IDAq"771k?\`aO//1k4HK IB133Aq+X\],K)?P1P!Q RSS1%]sD opc|jdk(rtdg}td||gS|jdk(r|jd|S|jdk(r*|jd|}td|tdggS|jdk(r`t|d k(rt |d x}}n.t t|\}}||ks|d krt d |||fz|j|||SJ|) NrOrrrCplusrGstarrmrr'Bad Range for %s (%d..%d isn't allowed))rrrlenrmapr+r)rrrremptyrr r s rrzEBNF_to_BNF.exprZs 88s?{B'ElT5M2 2 XX_ ))&$7 7 XX_ --fd;HlXr+r/B$CD D XX_4yA~d1g,&RS$B7b1f&'PTXZ\^`Sa'abb))$B7 7burc|jxr|jj}t|j|}t dt g|z}t d||gS)Nrr)rrr transformrr)rrr rule_sizers rrzEBNF_to_BNF.maybewsW++Q0A0A0Q0Q 1;;DA ;9 45,u ..rN)rrrrstrrrr0rrr rrrrrrrrrrss!  8s 8$ 87(#7JTdTTT>5:/$/rrc@eZdZedefdZdefdZdZdefdZy)SimplifyRule_Visitorrcv|j|jr |j|jryyr)expand_kids_by_datadata)rs r_flattenzSimplifyRule_Visitor._flattens+&&tyy1 &&tyy1rc|j|t|jD]\}}t|ts|j dk(s'd|_t |jDcgc]J}|jtdt|jDcgc]\}}||k(r|n|c}}Lc}}}|_|j|yycc}}wcc}}}wr) r) enumeratechildrenrr0r(r*visitr)rrrchildoptionjothers rrzSimplifyRule_Visitor.expansions d!$--0 HAu%&5::+E( 0:%../I!K!K%+"&B{MVW[WdWdMe=gAIEHIAvVSX=X=g-h"i!K  d# =g!Ks..C" C/C" C" c|j\}}|jdk(rLg}|jdjD]}|jtd||g!d|_||_yy)Nrrr)r,r(rr)rrr alias_namealiasesr.s rrzSimplifyRule_Visitor.aliassl==j 99 $Gq)22 Ar'E:+>?@ A$DI#DM %rc|j|tt|jt|jk7rt |j|_yyr)r)rsetr,r*)rrs rrzSimplifyRule_Visitor.expansionssB d s4==! "c$--&8 8&t}}5DM 9rN) rrr staticmethodr0r)rrrrrrr%r%~s8td,$6t6rr%ceZdZdZdZdZy)RuleTreeToTextc|Srr)rxs rrzRuleTreeToText.expansionssrc |dfSrr)rsymbolss rrzRuleTreeToText.expansions }rcH|\\}}}| J||d|f||jfS)NrEr)rr;r_aliasrs rrzRuleTreeToText.aliass8%&"FU~>y#v>>~%**$$rN)rrrrrrrrrr9r9s%rr9c&eZdZdZdZedZy)PrepareAnonTerminalszfCreate a unique list of anonymous terminals. Attempt to give meaningful names to them when we add themc||_|jDchc]}|jc}|_|Dcic]}|j|c}|_d|_d|_ycc}wcc}wNr) terminalsrterm_setpattern term_reverserr)rrEtds rrzPrepareAnonTerminals.__init__sU"+/>>:R: 6?@RZZ^@ ;@s A A%c8|j}||jvr>|j|j|jjk7rt d|zd}t |t r |j|j}n?t |tr(||jvr!|j|j}nJ||$d|jz}|xjdz c_||jvra||jvsJ|jj!|t#||}||j|<|j$j'||j(r|j(j*rdnt |t }t-||S#t$ru t|}nV#t$rJ|rEt|r:t|dr,|j|jvr|j}YnwxYw||jvrd}YSwxYw)Nz+Conflicting flags for the same terminal: %srFz __ANON_%drr)rrHflagsrGr+rrrr_TERMINAL_NAMESrrupperrFrraddrrErrrr%)rpr term_nametermdefrs rrGzPrepareAnonTerminals.patterns !! !agg1B1B11E1M1M1S1S&SMPQQR R a $ % --a055 9 %D%%% --a055 !O5  #dff,I FFaKF DMM )D--- -- MM  i (!)Q/G#*D  a NN ! !' *"//D4E4E4U4UU[efgis[t  j99= %2 / 6I2!6;uQx;PUZU`U`UbjnjwjwUw$)KKM 2 - $I %s7,F H% F/.H/AH?HHHHN)rrr__doc__r inline_argsrGrrrrBrBsp!):):rrBc"eZdZdZdZdZdZy)_ReplaceSymbolszHelper for ApplyTemplatesci|_yr)namesrs rrz_ReplaceSymbols.__init__s  rct|dk(rJt|dtr7|dj|jvr|j|djS|j d|dS)Nrrr)rrr'rrX __default__)rcs rrz_ReplaceSymbols.valuesY q6Q;:adF3! TZZ8O::adii( (D11rc|dj}||jvr'|jd|j|g|ddzdS|jd|dS)Nrrr)rrXrZ)rr[rs rrz_ReplaceSymbols.template_usages_tyy 4:: ##$4tzz$7G6H1QR56PRVW W 0!T::rN)rrrrSrrrrrrrVrVs#2 ;rrVceZdZdZdZdZy)ApplyTemplateszIApply the templates, creating new rules that represent the used templatescN||_t|_t|_yr) rule_defsrVreplacerr6created_templates)rr`s rrzApplyTemplates.__init__s"') !$rc( |dj |dd} ddjd|Dd}||jvr|jj| fd|jD\\}}}}t |t |k(sJ|t |}tt|||j_ |jj||jj|g|t |ft|S)Nrrrsr=c34K|]}|jywrr?).0rs r z0ApplyTemplates.template_usage.. s0FA0Fsruc34K|]}|dk(s |yw)rNr)rerrs rrfz0ApplyTemplates.template_usage..s+V!1QUA+Vs )rjoinrbrOr`rrdictziprarXr!rr&) rr[r result_name_nparamsroptions result_treers @rrzApplyTemplates.template_usage styyu"&0F0F(FG d44 4  " " & &{ 3+Vt~~+V ) 'Rwv;#d)+ 1T 1+"4.K"&s64'8"9DMM  MM # #K 0 NN ! !;K'AR"S T;''rN)rrrrSrrrrrr^r^sS' (rr^c,tfd|DS)Nc3@K|]}j|ywr)rfind)rer[ss rrfz_rfind..s+aqwwqz+s)r)rschoicess` r_rfindrus +7+ ++rcdd}t|}|D]2}||z }|dk(s t|}|dk(r|dz }n |dvr|dz }||z }4|j ddj dd }d |z} t |}|S#t$rtd|zwxYw#t $r}t||d}~wwxYw) NrrKz/Literal ended unexpectedly (bad escaping): `%r`\\Uuxnftrz\"rgriz\'z u'''%s''')iternext StopIterationr+replacer SyntaxError)rswrrn2to_evales r eval_escapingrs A QA   Q 9 Z!WTzV 9$T  GA  %%%c51AAoG!  ! H! Z"#TWX#XYY Z !1a  !s# A:- B:B B/ B**B/clt|tsJ|j}t|ddz}|dkDsJ||d}t d|DsJ||j dk(rd|vr t d|j dk(rd|vrd |vr t d |d|}|d|d k(r|dd vsJ|dd }t|}|d k(rt d|z|j dk(r*|jdd}t|||jS|j dk(rt|||jSJd)Nz/"rrc3,K|] }|tvywr) _RE_FLAGS)refs rrfz&_literal_to_pattern..<s-!qI~-srr{z*You cannot put newlines in string literalsrr;zLYou can only use newlines in regular expressions with the `x` (verbose) flagrz"/rz$Empty terminals are not allowed (%s)rwrK)rawz:Invariant failed: literal.type not in ["STRING", "REGEXP"]) rrrrualltyper+rr|rr)rv flag_startrLr;rss r_literal_to_patternr6sV gu %% % A4"J >> jkNE -u- -4u4 -||xDAIGHH||xDAI#U2B9: : +:A Q41R5=QqTT\) ) !BAaABwAGKLL||x IIfd #!U 66  !Ew}}55RRRurceZdZdZdZy)PrepareLiteralsc.tdt|gS)NrG)rr)rrs rrzPrepareLiterals.literalYs)1':;<.ts7A!++-7)rrrhrrL)rrrGrs rrzTerminalTreeToPattern.expansionmsVb> ! u:?8O''777#Gu-E!agg-EFF-EsA expsct|dk(r|dS|jdddjd|Dz}t||Dchc]}|jc}Scc}w)Nrrc`|j |j t|j fSr) max_width min_widthrrr;s rz2TerminalTreeToPattern.expansions..}s#!++ |c!''l] Kr)rz(?:%s)rMc3<K|]}|jywrrrs rrfz3TerminalTreeToPattern.expansions..s&Cq{{}&Cr)rsortrhrrL)rrrGrs rrz TerminalTreeToPattern.expansionsws_ t9>7N K Lchh&Cd&CCD#Gt-D!agg-DEE-Ds A& c8|dd\}}|dk(rTt|dk(rdt|dz}nDtt|dd\}}||krtd|||fzd||fz}nt|dk(sJt d|j d||j S) Nrmz{%d}rz{%d,%d}z(?:rq)rrrr+rrrL)rrrrr r s rrzTerminalTreeToPattern.exprs!H r 94yA~c$q'l*S$qr(+B7&'PTY[]_aSb'bcc"b)t9> !>u'8"=u{{KKrc,|j|dgzS)NrO)r)rrs rrzTerminalTreeToPattern.maybesyy&&rctd)NzBAliasing not allowed in terminals (You used -> in the wrong place))r+)rrs rrzTerminalTreeToPattern.aliass_``rc |dSrDrrrs rrzTerminalTreeToPattern.values t rN) rrrrGrrrrrrrrrrrrrhsYGtG}GG FtG} F F LG L'arrceZdZdZy)ValidateSymbolsc>|\}t|ttfsJ|Sr)rr0r'rs rrzValidateSymbols.values" !dF^,,,rN)rrrrrrrrrsrrc6tdj|S)z#Deepcopy tree `t` without recursionF)r6r!rs rnr_deepcopy_treers #E * 4 4Q 77rc eZdZUeeeeeeffed<eeeeedfee fed<eeed<deeeeedfee fdeeeeeeffdeeddfdZ dZ deee ee eeffd Zy) Grammar term_defs.r`rrNc.||_||_||_yrrr`r)rr`rrs rrzGrammar.__init__s"" rrc  ,-jDcgc]\}\}}|t||ff}}}}jDcgc]\}}}}||t||f}}}}}|D]Q\} \} } |  t| j d} t | dk(s5| dj rEtd| zttz} |D cgc]&\} \} } | rt| | j| | (}} } } t|}ttz|z} | t|z} t}g}d}|t |kr||\} }}}|dz }t |dk7r,|r|j r t#dnd}||_| |_||_| j|}|j|}|j)| ||f|t |kr||j*z }t |t |D chc]\} }}|  c}}} k(sJdt-}t/}g}|D]5}|\} }}|j1||j|} t3| D]\}\}} | r#| j5drtd | d | d t7d |D}!t9|!r8t;|xs t#}"|!|"_|D#cgc]}#|#t>k7s |#}}#n|}"|D]J}$tA|$tBsJ|$jDs"|"s%|"j s2tA|$tFsJd |$_$LtKtM| ||| |"}%|j)|%8t tO|t |k7rtQ|d}&|&jSD]}'t |'dkDs|'djTr$tddjWd|'Dzt |'D(chc]%}(|(jX|(jZ|(j\f'c}(t |'k(rJtt_|} t |})|D(*chc]4}(|(jTD]#}*tA|*tLr|*|(j`k7r|*%6c}*}(,,|D*chc] }*tM|*c}*z,tc|,fd\}}+|+D]}(tejfd|(t ||)k(rndk7r|D(chc]/}(|(jTD]}tA|tFr |jh 1c}}(-tc|-fd\}}+|+r.tejfd|+Dcgc]}|jhc}||jjfScc}}}wcc}}}}wcc} } } wcc}}} wcc}#wcc}(wcc}*}(wcc}*wcc}}(wcc}w)NrrrzTerminals cannot be empty (%s)TrzWhoops, name collisionr_zRule za is marked for expansion (it starts with an underscore) and isn't allowed to have aliases (alias=rqc3.K|] }|tk(ywr)r)rer;s rrfz"Grammar.compile..s%CAai%CsFc|Srrrs rrz!Grammar.compile.. sArzXRules defined twice: %s (Might happen due to colliding expansion of optionals: [] or ?)rc3&K|] }d|z yw)z * %sNrrs rrfz"Grammar.compile..s4RZ!^4Rsc |jvSr)origin)r used_ruless rrz!Grammar.compile.. sQXXYcMcrzUnused rule: %srGct|jvxs(|jjvxs|jvSr)rr)rrterminals_to_keep used_termss rrz!Grammar.compile..+sJ166ZCWDP[\[a[aeiepep[pDPtutztzPuPrzUnused terminals: %s)6rrr`list find_datarr,r+rrrr!rBrr^rrr#rrrrr9r%r-r+rtupleanyr empty_indicesrrr'is_termr%rr$r&r6r)valuesrrhrorderrnrrrrdebugrr).rrrrrrPror`r term_treerr transformerrEanon_tokens_transf ebnf_to_bnfrulesrrm rule_treernrrres_t_orule_tree_to_text simplify_rulecompiled_rules rule_contentrrr exp_optionsr;rr duplicatesdupsrr[rsunusedrrs.` ` @@rcompilezGrammar.compilesEINNSSyq&1aa*1-q12S SFJnnUU 1aa,Q/3U U,5 L 'D'9h i11+>?J:!#JqM,B,B"#Cd#JKK  L&'*?*AA 8APP44 8Y!{'<'PP  ~i00 "m  #i. /8| ,D&)W FA6{a@GGLcLc;t ,%%IuT__S1&X\^c(dee %%C%C C }%"&w-"@;=K0=K-,5 CqF CI C")K$/C%c6222{{{{7R7R)#x888). / K-y!UKP%%d+% ,  ,4 s>" #s>': :!.+>J"))+ [t9q=Aw((*,H-/WW4RT4R-R,STTtL!!''199 =LMQTUYQZZZZ ["*^"<=NN#A%3/%&[[/ !)![9 !QXX /!/J 59a;q>9 9J%2>Cc%d "NF 3 .2 3>"a'  #*8=Q*+++=%&$.q($;&&=&=J!.i:P!Q Iv 3f5Maff5MN.$++55qTU PB"B(!D, M/:= 6NsAVV +V( V/&V65V6*V; ,9W.W4W 0W )rrrrr r#r0r__annotations__r#r__serialize_fields__rr$rrrrrrs E#uT3Y//011E#uS#XkABCC I$uS%S/4-T'U"Vcghmnqsxy}@CzCtDoDiEdFPTUXPY^b >{65k9JDQUJX\]`Xa9a3b{6rrPackageResourcez pkg_name pathcxeZdZUdZeed<eeed<d dedeeddfdZdZde dee fd ede e effd Z y) FromPackageLoadera Provides a simple way of creating custom import loaders that load from packages via ``pkgutil.get_data`` instead of using `open`. This allows them to be compatible even from within zip files. Relative imports are handled, so you can just freely use them. pkg_name: The name of the package. You can probably provide `__name__` most of the time search_paths: All the path that will be search on absolute imports. pkg_name search_pathsrNc ||_||_yr)rr)rrrs rrzFromPackageLoader.__init__Cs  (rcft|jd|jd|jdS)Nro, rq)rrrrrs r__repr__zFromPackageLoader.__repr__Gs##Dz22DMM4CTCTUUr base_path grammar_pathc| |j}n@t|tr|j|jk7r t |j g}d}|D]q}t j j||} tj|j|}t|j||r|jfcSdfcSt d|#t$r }|}Yd}~d}~wwxYw)Nrz"Cannot find grammar in given paths) rrrrIOErrorpathosrhpkgutilget_datadecode) rrrto_tryerrr full_pathtextrs r__call__zFromPackageLoader.__call__Js  &&Fi9Y=O=OSWS`S`=`inn%F bD T<8I b(/(8(8 (R 't}}i@TX4;;=aa^`aa b:;D   s8 C C)C$$C)))r) rrrrSr#rrrrr rr rrrrrr5stM3-))HSM)T)VE%c?(B"CESVE[`apruau[vErrlarkc  d}|jD]\}}| |jdD]z}|j\}t|trt d|d|dt|t r& ||j}|J||jd<d}it|trzJ|sn|jD]Z\}}|s |jD]C}|jD cgc] } t| } } t|| vs7t d |z\y#t$rt d|jzwxYwcc} w) NTFrz'Rules aren't allowed inside terminals (z in rqz!Terminal used but not defined: %srzNRecursion in terminal '%s' (recursion is only allowed in rules, not terminals)) rrr,rr&r+r%rrr0 iter_subtreesid) term_dictchangedr token_treeexpitem term_valuerr.r;idss rresolve_term_referencesrfsn  ) 1 2 D*!!++G4 2 dK0&]acg'hiih/\%.tyy%9 &111&0CLLO"G%dD111 2 2" ) , oo'@ d  @&+&9&9&;<r!u<<d8s?&'wz~'~ @@$\*+NQUQZQZ+Z[[\=s2D+E"Ect|tsJ|jrt||j dSt |SNr_rK)rr#isupperr%rr&rss rsymbol_from_strcaser s: a  89 8A!,,s"3 4WUVWrceZdZdZdZy)PrepareGrammarcLtt||jdSr )r%r#rrrs rrzPrepareGrammar.terminalsD dooc.BCCrc,t|jSr)r&rrs rrzPrepareGrammar.nonterminals4::&&rN)rrrrrrrrrrs D'rrc|jdk(sJ|jdDchc]%}|jdD]}|j'c}}Scc}}w)Nrrc"t|tSr)rr'rs rrz$_find_used_symbols..s Z6-Br)r(r scan_valuesr)rr;rs r_find_used_symbolsrsb 99 $$ $ NN;7 Eq]]#BC E FF EF EE Es*AcR tjS#t$rtj Dcgc]\}}t |t |ncc}}w}}}tj Dcgc]2\}}|jd|t|jdf4ncc}}w}}}|D cgc]\\}}}t|D]H\}}tt||jD cgc] } t| ncc} wc} |d|J^n cc} }}}}}w}}}}}}} t!|t"j%} ddl} t)|| gd} t+|| dg} d| _d| _t1| | dt_tjcYSwxYw)NrO)expand1r)rrrLrbasiclalr) _get_parsercacheAttributeError TERMINALSrrrRULESlstripr#rr+r$r&splitr rrcreate_callbackrer!r" lexer_type parser_typer )rrrEr;rrxsrrrscallbackr" lexer_conf parser_confs rrrs!   !LUOOL]^[T5[y'78^^ ^ %{{}.D!++c"A{4??3;O'PQ..."'BBQA9R=B+/1ak!nqwwy&Q!':1'=&Q&QSTVZ\]^B^BBB$E2.>>@y".LM  7)< ' "( +J TJ    !s?!F&A!F&37B+*F&=;D8D  DBF&%F&zIncorrect type of valueza: 1 zUnclosed parenthesisza: ( zUnmatched closing parenthesis)za: ) za: [) za: (] z5Expecting rule or terminal definition (missing colon))za zA za-> zA-> za A z#Illegal name for rules or terminalszAa: zAlias expects lowercase namez a: -> "a" zUnexpected colon)za:: za: b: za: B: za: "a": zMisplaced operator)za: b??za: b(?)za:+ za:? za:* za:|* z;Expecting option ("|") or a new rule or terminal definitionza:a () z"Terminal names cannot contain dotszA.B z%Expecting rule or terminal definitionz"a" z%import expects a namez %import "a" z%ignore expects a valuez%ignore %import cZ|j|td}|r|Sd|jvryy)NT) use_acceptsrzExpecting a value)match_examplesGRAMMAR_ERRORSexpected)parsererrors r_translate_parser_exceptionr0s5  D I L  #&$rc  tj|dz|}tj|S#t$r<}|j|}t d|j |j ||fzd}~wt$ra}|j|}ttj|}|r*t |d|j d|j d|d}~wwxYw)Nr{z1Unexpected input at line %d column %d in %s: %sz , at line z column z ) rr.r, get_contextr+linecolumnr-r0rr!)rrrrrcontextr/s r_parse_grammarr6s }""4$;6   % %d ++ >--%PFFAHHdG<=> > --%+KM,?,?C 5!&&RSRZRZ\cde e s"8 C%7A88 C%AC  C%ct|trgttj|}|r|Sdj |j xs |j}dt|jd|dSt|S)NrzUnexpected token z. Expected one of: {ru) rr-r0rr.rhacceptsr-r#token)r/error2r-s r _error_reprr;sb%),[]-@-@%H M99U]].expandsiaiik .Ffb!A . QfY&-- .  s'%AA A AAAAr)r)interactive_parser predicaterBrrPs r_search_interactive_parserrEs< ."B(:#;".on_error..sbgklktktkvbvrrrr{T)rr;rErC as_immutabler>r)r token_pathr_ token_typeerrorss ron_errorz%find_grammar_errors..on_errors q+a.)*313G3G3T3T3VXvw A$ CJ + +E*b,A B C ''eT(:;rr{)rMc |djSrD)r3)rs rrz%find_grammar_errors..s! rr)rr.r)rrC)rrrM_treeerrors_by_lineelrrLs @rfind_grammar_errorsrRs{ F M  t UX  FEf&9:N,335 6be 6F '"&!' M 7s A)cfd}|S)Ncf|vr|}n|ddk(r dd|dd}nd|}|}|S)Nrr___rr)rsr4 base_manglers rmanglez_get_mangle..manglesL < Ats{!'12/ &*  "AArr)rr4rVrWs``` r _get_manglerXs  Mrc||St|}|jD]N}t|jD]4\}}t |t s|j ||j|<6P|Sr)rrr+r,rr'renamed)rrWrrr[s r_mangle_definition_treer[sp ~ 3-C    2ajj) 2DAq!V$ ! & 1 1  22 Jrc j|jr5|j\}d|v}|r|jdr tdd|v}nd}d}|jr|j\}t|} nd} |#|jD cgc]} | j}} |||t ||| |r|fSdfScc} w)NrOr_z4Inlined rules (_rule) cannot use the ?rule modifier.rQF)rtemplate_source)r,rr+rrr#) modifiers_treerrm priority_treermrrrPrrs r_make_rule_tupleras  $ $( ts+UV V(  # #q6 #)??3a!''33 ['T\JP$&] ]]VZ&] ]]4s>B0ceZdZddZy) DefinitionNcN||_||_t||_||_yr)rrrrmrn)rrrrmrns rrzDefinition.__init__8s"  Fm  rrN)rrrrrrrrcrc7srrcc neZdZUeed<eeeefed<e eefed<e ee fed<eeed<ddede eeeefde e eefddfd Z d Z d Zd dd d Zd dZdZdZdZd!dedede eegefddfdZdZd"deedfde ede eefde eegefddf dZd#dZdefdZy)$GrammarBuilderglobal_keep_all_tokens import_paths used_files _definitions _ignore_namesFNrcZ||_|xsg|_|xsi|_i|_g|_yr)rhrirjrkrl)rrhrirjs rrzGrammarBuilder.__init__Gs3&<#(.B$*35(*rci}t|dD]B\}}|dk(rdn t|}||d|z<d|x|d|z<}|j|d|z<Dt|jdi|) Nrrrr)rrrTyper)r+r#titler+format) rrmsgrXrrrpostfixlowercase_types r_grammar_errorzGrammarBuilder._grammar_errorOs a0   )WY] ^vv$%$))|*CCC Q$rct|tr|jj|yt|tsJ|}|j dk(rt |jdk(r|j\}|j dk(ryt |jdk(ra|j\}|j dk(rD|j\}t|tr&|jj|jydt |jz}|jj|td|t|j|<y)Nrrrrz __IGNORE_%dT)rn) rr#rlrr0r(rr,r%rrcr(rk)r exp_or_namert2rrs r_ignorezGrammarBuilder._ignores k3 '    % %k 2k40 00Avv%#ajj/Q*>jj77K'C ,<,AKKFDyyG+ $ %dH5 ..55dii@" #d&8&8"99D    % %d +&0qBX&YD  d #rct|jdkDr|j\}}n|j\}d}t|tr7t |j}|j}t t ||}nat |jdd}|s|j\}td|z|jd}|j|xs|ji}|jdk(rd} n|dk(r< tjjtjdj} n|} | rtt| t"rAt#| j$tjj'| jd} nZtjj'| d} n7tjjtjj(} || |fS#t $rd} YwxYw)Nrrz&Nothing was imported from grammar `%s`r__main__r)rr,rr0rrirjr+rr(rrabspathsysmodules__file__rrrr curdir) rstmt grammar_name path_nodearg1 dotted_pathrXr4rr base_files r_unpack_importzGrammarBuilder._unpack_imports t}}  !"mmOItJID dD ! 2 23KMME3ue,-G 2 23B 78K!**"#Kd#RSS%%b)DzzDLD#7#78G >>\ )Iz)% " J0G0P0P QI) i9 / 0B0BBGGMMR[R`R`DabcDd eI " i 8 ;IGGOOBGGNN; Iw..&% $I%s9:G(( G65G6c||jdk(rt|j\}}}}d}nb|jdj}d}t |jdk(rt |jdnt }|jd}d}tfd |D}|}t|}|||||fS) NrFrrrrrTc3.K|] }|ywrr)rerPrWs rrfz4GrammarBuilder._unpack_definition..s56!95s) r(rar,rrrr(rr[)rrrWrrmroptsrs ` r_unpack_definitionz!GrammarBuilder._unpack_definitions 99 &6 &F #D&#tG==#))DF,/ ,>!,C3t}}Q'(I_D--#CG  5f55F$DyyH$262E2EdL2Y/ Y>7>{7K4$n$(88r:Z]`]e]efq]r:rr8"))'2  >29 D -K-)W NN; 7F C DMM #Dyy,, d55dFCDj(]] d55a@P4Ph&]] d55a@Ah&> DLL$--0i'"mm6F%ff5=v=5(:G~%{{%fkk2LLw56h&"d"u3 #: ,,224 ayyAFFl   *M >+4g+=GK(>D s7I9#J9J  J cfd}tt||}jjDcic] \}}||vs ||c}}_ycc}}w)Nc j|}|jrgSt|jt |j z S#t$rgcYSwxYwr)rkrrrrr6rm)rr}rs rrule_dependenciesz8GrammarBuilder._remove_unused..rule_dependenciessX %%f-yy %aff-AHH = =    sA AA)r6rrkr)rusedr_usedkrs` r_remove_unusedzGrammarBuilder._remove_unused sP >C/01.2.?.?.E.E.GVda1PU:QTVVs AAr.rr4rVc |sJtdj|||}tjj|tz}|j ||gngzt gz}|D]V} t|r |||\} } nFtjj||} t| d5} | j} dddt } |jj| | | k7r td| |j| <t|j|j |j} | j!| | || j#t%||| j&D]"}||j&vst)d|d|d|j&j*d i| j&yt|dJd|d #1swYxYw#t,$rYwxYw) NrUutf8encodingz)Grammar file was changed during importingzCannot import 'z' from 'z': Symbol already defined.zCouldn't import grammar zP, but a corresponding file was found at a place where lark doesn't search for itr)rXrhrrEXTri stdlib_loadercallableopenread sha256_digestrjget RuntimeErrorrgrhrrrrkr+rr)rrrr4rVrWrrsource joined_pathrrhgbrs rrzGrammarBuilder.do_imports{TYY{3WkJww||[1C7 ""Y5JykPRSWdVee XF F#(.y,(G%K"$'',,v|"DKkF;(q vvx( "$'??&&{A6!;&'RSS/0 ,#D$?$?ARARTXTcTcdk6:!!#fg"67OO{Dt000*fjlx+yzz{)!!((;2??;1 X6  / XKVX X5-((  s+'AG!,G=G!G G!! G.-G.c L|jjD]\}}|j}|j}t |D]>\}}||jvrt d|d|d||d|vs.t d|d|d|n|j dD]}|jdj}|jdd} ||vs0||jvr |j|jd|z|t| t|j|jk7st|j|jt| } } |j|jd | d | d ||t|D]4}||jvs||vs|j|jd ||6t|jj|js7t d t|jt|jz zy)Nz'Template Parameter conflicts with rule z (in template rqzDuplicate Template Parameter rrrz5Template '%s' used but not defined (in {type} {name})z=Wrong number of template arguments used for {name} (expected z, got z) (in {type2} {name2})z9{Type} '{name}' used but not defined (in {type2} {name2})z8Terminals %s were marked to ignore but were not defined!)rkrrmrr+r+rr,rrvrrrr6 issupersetrl) rrr}rmrrrPtemprrr-actuals rvalidatezGrammarBuilder.validate?s3((..0 {GD!XXF&&C!&) g1)))&ghjn'oppr ?&]^`d'eff  g { &67 zmmA&++}}QR(f$$"3"33++AII7nqt7tvz{4yC(9(9#(>(E(E$FF+.t/@/@/E/L/L+MsSWy&++AII\dfl8nortxz z*#. {d///Cv4E'' 3npsuyz {1 {84$$%001C1CDY]`aeasas]twz{|M|MxN^N OP PErcr|jg}g}|jjD]p\}}|j|j|j }}}|j r&t|dk(sJ|j|||ff\|j||||frt|||jSrD) rrkrrmrrnrrrrrl)rr`rrr}rmrrns rbuildzGrammarBuilder.build_s   ((..0 ?GD!%&XXqvvqyy'SVyy6{a'''  $g!78  $W!=>  ?y)T-?-?@@r)FNNre)zNr)rN)rrrrrrr r#r r rcr rrvrxrzrrrrrrr rrrrrrrrgrg>s  uS(]+,,S#XsJ''9+t+RVW\]`bj]jWkRlIm+AIJNORTWOWJXAY+cg+/  ju j%(Z*%/N0(2+2+C2+xX`beafhkakXlOm2+w{2+j W!XU38_!X#!XY]^acf^fYg!Xv~@HJMINPSIS@TwU!X_c!XHP@ Aw Arrgc|jD]\}}d}t|trFtjj |r't |d5}|j}dddnIt|tr9tt5tj|jd}ddd|t|}||k7stj d|zyy#1swY9xYw#1swYExYw)Nrrzutf-8z"File %r changed, rebuilding ParserFT)rrr#rrexistsrrrrrrrrrrinfo) file_hashesroldrrcurrents rverify_used_filesrns &&( c dC RWW^^D%9dV, vvx  o .'" ?''.55g> ? < % '> KKrsP "TTTAAAEE0-)]]'hh)aaD! |     %%%'%'%+ % & % ' %&%'% ;%&%'%&%$%&%(% )!%",#%$+%%&,'%(*)%**+%,'-%.*/%0 71%2+3%4'5%6&7%8&9%:(;%<(=%>&?%@&A%B 9C%D VE%F  I%P  U  U  U  U   u   u     c  c  5  K w  S 1    #! " (# $/:  ( =  BK  gYK  w &K  ZK   Q R K  ' K K :K 79K =/K 0K & . <'K (,)K ,2()-K 0 1K < =K D  EK P QK RF8SK V fj !WK X M*YK \ & ']K ^ % &_K bCDcK dw46eK j - 9 ;kK n!!#oK r ~sK v '(wK x,-yK z 4{K B\<0CK D>"EK F&'GK HV56IK L34 67(#UK ` ,;,: X/%X/ X/v*67*6Z %[ %4:.4:n;);$(((., 4SB  2) 2  2!y!040f)8 H6iH6V.@*E*EZ"&,7 @DX '(' 'E !* #XJ/ (, (*JK @Bkl . : '-9 IJ YZ F V -y9 07)< !O#45 "%8$9: ',  c#$u_VYEY?Z:[,  ]0mAmA` $02+ /