Viewing File: /opt/alt/python38/lib/python3.8/site-packages/ply/__pycache__/yacc.cpython-38.opt-1.pyc

U

V}
@sddlZddlZddlZddlZddlZddlZddlZdZdZ	dZ
dZdZdZ
dZdZd	ZdZejddkrteZneZejZGd
ddeZGdd
d
eZGdddeZddZddZdada da!dZ"ddZ#ddZ$ddZ%ddZ&GdddZ'Gdd d Z(Gd!d"d"Z)e*d#Z+Gd$d%d%eZ,Gd&d'd'eZ-Gd(d)d)eZ.d*d+Z/Gd,d-d-eZ0Gd.d/d/eZ1Gd0d1d1eZ2Gd2d3d3eZ3d4d5Z4d6d7Z5Gd8d9d9eZ6Gd:d;d;e3Z7d<d=Z8d>d?Z9Gd@dAdAeZ:de
deddddeddddf
dBdCZ;dS)DNz3.8Tz
parser.outparsetabLALRF(c@s4eZdZddZddZeZddZddZeZd	S)
	PlyLoggercCs
||_dSN)f)selfrr
/yacc.py__init__nszPlyLogger.__init__cOs|j||ddS)N
rwriter	msgargskwargsr
r
rdebugqszPlyLogger.debugcOs|jd||ddS)Nz	WARNING: r
rrr
r
rwarningvszPlyLogger.warningcOs|jd||ddS)NzERROR: r
rrr
r
rerroryszPlyLogger.errorN)	__name__
__module____qualname__rrinforrZcriticalr
r
r
rrmsrc@seZdZddZddZdS)
NullLoggercCs|Srr
)r	namer
r
r__getattribute__szNullLogger.__getattribute__cOs|Srr
)r	rrr
r
r__call__szNullLogger.__call__N)rrrrrr
r
r
rrsrc@seZdZdS)	YaccErrorNrrrr
r
r
rrsrcCsPt|}d|krt|}t|tkr4|dtd}dt|jt||f}|S)Nr
z ...z<%s @ 0x%x> (%s))reprlenresultlimittyperid)rrepr_strresultr
r
r
format_resultsr)cCsBt|}d|krt|}t|dkr(|Sdt|jt|fSdS)Nr
z<%s @ 0x%x>)r!r"r$rr%)r&r'r
r
rformat_stack_entrysr+aPLY: Don't use global functions errok(), token(), and restart() in p_error().
Instead, invoke the methods on the associated parser instance:

    def p_error(p):
        ...
        # Use parser.errok(), parser.token(), parser.restart()
        ...

    parser = yacc.yacc()
cCstttSr)warningswarn_warnmsg_errokr
r
r
rerroks
r0cCstttSr)r,r-r._restartr
r
r
rrestarts
r2cCstttSr)r,r-r._tokenr
r
r
rtokens
r4cCs>|ja|ja|ja||}z
bbbWntk
r8YnX|Sr)r0r/r4r3r2r1	NameError)	errorfuncr4parserr&r
r
rcall_errorfuncs
r8c@seZdZddZddZdS)
YaccSymbolcCs|jSrr$r	r
r
r__str__szYaccSymbol.__str__cCst|Srstrr;r
r
r__repr__szYaccSymbol.__repr__N)rrrr<r?r
r
r
rr9sr9c@sfeZdZdddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
dS)YaccProductionNcCs||_||_d|_d|_dSr)slicestacklexerr7)r	srBr
r
rrszYaccProduction.__init__cCsBt|trdd|j|DS|dkr2|j|jS|j|jSdS)NcSsg|]
}|jqSr
value.0rDr
r
r
<listcomp>sz.YaccProduction.__getitem__.<locals>.<listcomp>r)
isinstancerArFrBr	nr
r
r__getitem__s

zYaccProduction.__getitem__cCs||j|_dSr)rArF)r	rLvr
r
r__setitem__szYaccProduction.__setitem__cCsdd|j||DS)NcSsg|]
}|jqSr
rErGr
r
rrIsz/YaccProduction.__getslice__.<locals>.<listcomp>)rA)r	ijr
r
r__getslice__szYaccProduction.__getslice__cCs
t|jSr)r"rAr;r
r
r__len__szYaccProduction.__len__cCst|j|ddS)NlinenorgetattrrArKr
r
rrTszYaccProduction.linenocCs||j|_dSr)rArT)r	rLrTr
r
r
set_linenoszYaccProduction.set_linenocCs,t|j|dd}t|j|d|}||fS)NrTr	endlinenorU)r	rL	startlineZendliner
r
rlinespanszYaccProduction.linespancCst|j|ddS)NlexposrrUrKr
r
rr[szYaccProduction.lexposcCs,t|j|dd}t|j|d|}||fS)Nr[r	endlexposrU)r	rLstartposendposr
r
rlexspanszYaccProduction.lexspancCstdSr)SyntaxErrorr;r
r
rrszYaccProduction.error)N)rrrrrMrOrRrSrTrWrZr[r_rr
r
r
rr@s
r@c@s\eZdZddZddZddZddZd	d
Zdd
dZdddZ	dddZ
dddZdS)LRParsercCs0|j|_|j|_|j|_||_|d|_dSNT)	lr_productionsproductions	lr_actionactionlr_gotogotor6set_defaulted_stateserrorok)r	ZlrtabZerrorfr
r
rrszLRParser.__init__cCs
d|_dSrb)rjr;r
r
rr0&szLRParser.errokcCs@|jdd=|jdd=t}d|_|j||jddS)N$endr)
statestacksymstackr9r$append)r	symr
r
rr2)szLRParser.restartcCsPi|_|jD]:\}}t|}t|dkr|ddkr|d|j|<qdSNr)defaulted_statesrfitemslistvaluesr")r	stateactionsZrulesr
r
rri9s
zLRParser.set_defaulted_statescCs
i|_dSr)rrr;r
r
rdisable_defaulted_states@sz!LRParser.disable_defaulted_statesNFcCsZ|str.t|trttj}||||||S|rD||||||S||||||SdSr)		yaccdevelrJintrsysstderr
parsedebugparseoptparseopt_notrack)r	inputrCrtracking	tokenfuncr
r
rparseCs

zLRParser.parsec Csd}g}|j}|j}	|j}
|j}td}d}
|d|sLddlm}|j}||_||_	|dk	rj|
||dkrz|j}n|}||_g}||_g}||_
||_d}|dt}d|_||d}|d|d|||kr(|s|s|}n|}|st}d|_|j}|||}n||}|d|||d	d
ddd
|Dddt|f|dk	rj|dkr|||}|d|||d}|
r|
d8}
q|dkr.|
|}|j}|j}t}||_d|_|r<|d|jdddd
||dDd|	|d||n|d|jg|	|d||rv||dd}||d<|r|d}|j|_|j|_|d}t|d|j|_t|d|j|_||_ z^||d=||d=|!||dt"|d|||	|d|}||Wqt#k
rp|||||d}d|_|}t$}
d|_%YqXqn|r|j|_|j|_|g}||_ zF|!||dt"|d|||	|d|}||Wqt#k
r*|||||d}d|_|}t$}
d|_%YqXq|dkrj|d}t|dd}|dt"||d|S|dkr|&dd
ddd
|Dddt|f|
dks|j%r|t$}
d|_%|}|jdkrd}|j'r|rt(|ds||_t)|j'||}|j%rz|}d}qn`|rjt(|d r4|j}nd}|rVt*j+,d!||jfnt*j+,d"|jnt*j+,d#dSnt$}
t|dkr|jdkrd}d}d}|dd=q|jdkrdS|jdkrd|d}|jdkr|rt|d |j|_t|d$|j|_d}qt}d|_t(|d r4|j|_|_t(|d$rN|j|_|_||_|||}q|}|r|j|_|j|_||d}qt-d%qdS)&NrzPLY: PARSE DEBUG STARTrqlexrkzState  : %sz#Defaulted state %s: Reduce using %dzStack  : %sz%s . %s cSsg|]
}|jqSr
r:rHZxxr
r
rrIsz'LRParser.parsedebug.<locals>.<listcomp>z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %d[,cSsg|]}t|jqSr
)r+rF)rHZ_vr
r
rrIs]rXr\zResult : %srFrFzDone   : Returning %szPLY: PARSE DEBUG ENDzError  : %scSsg|]
}|jqSr
r:rr
r
rrI=srCrT(yacc: Syntax error at line %d, token=%s
yacc: Syntax error, token=%s yacc: Parse error in input. EOF
r[yacc: internal parser error!!!
).rfrhrdrrr@rrrrCr7rr4rlrmrBrnr9r$rpopgetjoinr>lstriprr"rFrTr[rVrXr\rAcallabler)r`error_countrjrr6hasattrr8r{r|rRuntimeError r	rrCrrr	lookaheadlookaheadstackrwrhprodrrpslice
errorcountr	get_tokenrlrmerrtokenrorvltypetppnameplentargt1rLr(tokrTr
r
rr}\s|





*






$








*

zLRParser.parsedebugc CsNd}g}|j}|j}	|j}
|j}td}d}
|sBddlm}|j}||_||_|dk	r`|	||dkrp|j
}n|}||_
g}||_g}||_||_
d}|dt}d|_||d}||kr|s|s|}n|}|st}d|_|j}|||}n||}|dk	rJ|dkrJ|||}||d}|
r|
d8}
q|dkr(|
|}|j}|j}t}||_d|_|r||dd}||d<|r|d}|j|_|j|_|d}t|d|j|_t|d|j|_||_zJ||d=||d=|||||	|d|}||Wqtk
r~|||||d}d|_|}t}
d	|_YqXqn|r|j|_|j|_|g}||_z2|||||	|d|}||Wqtk
r$|||||d}d|_|}t}
d	|_YqXq|dkrJ|d}t|d
d}|S|dkr@|
dksf|jr(t}
d	|_|}|jdkrd}|j r|rt!|ds||_t"|j ||}|jr&|}d}qn`|rt!|dr|j}nd}|rt#j$%d
||jfnt#j$%d|jnt#j$%ddSnt}
t|dkr^|jdkr^d}d}d}|dd=q|jdkrndS|jdkr|d}|jdkr|rt|d|j|_t|d|j|_d}qt}d|_t!|dr|j|_|_t!|dr|j|_|_||_|||}q|}|r.|j|_|j|_||d}qt&dqdS)NrrqrrkrrXr\rFrFrCrTrrrr[r)'rfrhrdrrr@rrrCr7rr4rlrmrBrnr9r$rrrr"rFrTr[rVrXr\rArr`rrjr6rr8r{r|rrrr
r
rr~sN




















zLRParser.parseoptcCsd}g}|j}|j}	|j}
|j}td}d}
|sBddlm}|j}||_||_|dk	r`|	||dkrp|j
}n|}||_
g}||_g}||_||_
d}|dt}d|_||d}||kr|s|s|}n|}|st}d|_|j}|||}n||}|dk	r|dkrJ|||}||d}|
r|
d8}
q|dkr|
|}|j}|j}t}||_d|_|r>||dd}||d<||_zJ||d=||d=|||||	|d|}||Wqtk
r8|||||d}d|_|}t}
d|_YqXqn|g}||_z2|||||	|d|}||Wqtk
r|||||d}d|_|}t}
d|_YqXq|dkr|d}t|dd}|S|dkr|
dks
|jrt}
d|_|}|jdkr(d}|jrj|rHt|d	sH||_t|j||}|jr|}d}qn`|rt|d
r|j}nd}|rt j!"d||jfnt j!"d|jnt j!"d
dSnt}
t|dkr|jdkrd}d}d}|dd=q|jdkrdS|jdkr|d}|jdkr8d}qt}d|_t|d
r^|j|_|_#t|drx|j$|_$|_%||_|||}q|}||d}qt&dqdS)NrrqrrkrrFrFrCrTrrrr[r)'rfrhrdrrr@rrrCr7rr4rlrmrBrnr9r$rrrr"rFrArr`rrjrVr6rr8rTr{r|rrXr[r\r)r	rrCrrrrrrwrhrrrrrrrrlrmrrorvrrrrrrrLr(rrTr
r
rrs.




















zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN)rrrrr0r2rirxrr}r~rr
r
r
rras

W
.raz^[a-zA-Z0-9_-]+$c@sReZdZdZdddZddZd	d
ZddZd
dZddZ	ddZ
ddZdS)
ProductionrrightrNrc	Cs||_t||_||_||_d|_||_||_||_t	|j|_	g|_
|jD]}||j
krL|j
|qLg|_d|_
|jrd|jd|jf|_nd|j|_dSN%s -> %srz
%s -> <empty>)rtuplernumberfuncrfilelineprecr"usymsrnlr_itemslr_nextrr>)	r	rrr
precedencerrrrDr
r
rr
s$


zProduction.__init__cCs|jSrr=r;r
r
rr<+szProduction.__str__cCsdt|dS)NzProduction()r=r;r
r
rr?.szProduction.__repr__cCs
t|jSr)r"rr;r
r
rrS1szProduction.__len__cCsdSNrqr
r;r
r
r__nonzero__4szProduction.__nonzero__cCs
|j|Sr)rr	indexr
r
rrM7szProduction.__getitem__c	Cs|t|jkrdSt||}zt|j|d|_Wnttfk
rRg|_YnXz|j|d|_Wntk
rd|_YnX|Sr)r"rLRItem	Prodnameslr_after
IndexErrorKeyError	lr_before)r	rLrr
r
rlr_item;s
zProduction.lr_itemcCs|jr||j|_dSrrrr	pdictr
r
rbindKszProduction.bind)rNrr)rrrreducedrr<r?rSrrMrrr
r
r
rrs
rc@s,eZdZddZddZddZddZd	S)
MiniProductioncCs.||_||_||_d|_||_||_||_dSr)rr"rrrrr>)r	r>rr"rrrr
r
rrTszMiniProduction.__init__cCs|jSrr=r;r
r
rr<]szMiniProduction.__str__cCs
d|jS)NzMiniProduction(%s)r=r;r
r
rr?`szMiniProduction.__repr__cCs|jr||j|_dSrrrr
r
rrdszMiniProduction.bindN)rrrrr<r?rr
r
r
rrSs	rc@s$eZdZddZddZddZdS)rcCsZ|j|_t|j|_|j|_||_i|_|j|dt|j|_t|j|_|j	|_	dS)N.)
rrtrrlr_index
lookaheadsinsertrr"r)r	rrLr
r
rrszLRItem.__init__cCs,|jrd|jd|jf}n
d|j}|Sr)rrr)r	rDr
r
rr<s
zLRItem.__str__cCsdt|dS)NzLRItem(rr=r;r
r
rr?szLRItem.__repr__N)rrrrr<r?r
r
r
rrsrcCs6t|d}|dkr2|||kr(||S|d8}qdSrp)r")Zsymbols	terminalsrPr
r
rrightmost_terminals
rc@seZdZdS)GrammarErrorNr r
r
r
rrsrc@seZdZddZddZddZddZd$dd
Zd%ddZddZ	ddZ
ddZddZddZ
ddZddZddZd&d d!Zd"d#Zd	S)'GrammarcCsbdg|_i|_i|_i|_|D]}g|j|<qg|jd<i|_i|_i|_i|_t|_	d|_
dSNr)ProductionsrProdmap	TerminalsNonterminalsFirstFollow
PrecedencesetUsedPrecedenceStart)r	rtermr
r
rrs
zGrammar.__init__cCs
t|jSr)r"rr;r
r
rrSszGrammar.__len__cCs
|j|Sr)rrr
r
rrMszGrammar.__getitem__cCs8||jkrtd||dkr&td||f|j|<dS)Nz,Precedence already specified for terminal %r)leftrnonassocz:Associativity must be one of 'left','right', or 'nonassoc')rr)r	rassoclevelr
r
rset_precedences

zGrammar.set_precedenceNrrc	Cs||jkrtd|||f|dkr6td|||ft|sRtd|||ft|D]\}}|ddkrzLt|}t|dkrtd||||f||jkrg|j|<|||<WqZWntk
rYnXt|sZ|d	krZtd
||||fqZd	|kr|dd	kr td||f|d
d	kr>td||f|d}	|j	|	}
|
sltd|||	fn|j
|	|d
d=nt||j}	|j	|	d}
d||f}||j
kr|j
|}td|||fd|j|jft|j}
||jkrg|j|<|D]J}||jkr(|j||
n&||jkr>g|j|<|j||
qt|
|||
|||}|j|||j
|<z|j||Wn"tk
r|g|j|<YnXdS)Nz7%s:%d: Illegal rule name %r. Already defined as a tokenrz5%s:%d: Illegal rule name %r. error is a reserved wordz%s:%d: Illegal rule name %rrz'"rqzA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rrz+%s:%d: Syntax error. Nothing follows %%preczH%s:%d: Syntax error. %%prec can only appear at the end of a grammar rulez/%s:%d: Nothing known about the precedence of %rrrz%s:%d: Duplicate rule %s. zPrevious definition at %s:%d)rr_is_identifiermatch	enumerateevalr"r`rrraddrrrrrrrnrrr)r	prodnamesymsrrrrLrDcZprecnameZprodprecmapmZpnumberrrr
r
radd_productionsv










zGrammar.add_productioncCsT|s|jdj}||jkr&td|tdd|g|jd<|j|d||_dS)Nrqzstart symbol %s undefinedrS')rrrrrrnr)r	startr
r
r	set_startOs
zGrammar.set_startcs>fddtjdjdfddjDS)NcsB|krdS|j|gD]}|jD]}|q.q$dSr)rrrr)rDrr&mark_reachable_from	reachabler	r
rrbs

z5Grammar.find_unreachable.<locals>.mark_reachable_fromrcsg|]}|kr|qSr
r
rG)rr
rrIlsz,Grammar.find_unreachable.<locals>.<listcomp>)rrrrr;r
rrfind_unreachable_szGrammar.find_unreachablecCsi}|jD]}d||<q
d|d<|jD]}d||<q&d}|jD]N\}}|D]@}|jD]}||sXd}qrqXd}|rN||sd||<d}qBqNqB|s4qq4g}	|D]4\}}
|
s||jkr||jkr|dkrq|	|q|	S)NTrkFr)rrrrsrrn)r	Z
terminatesrrLsome_changeZplrrDZp_terminatesinfiniterr
r
rinfinite_cyclesvs8




zGrammar.infinite_cyclescCsPg}|jD]@}|sq
|jD].}||jkr||jkr|dkr|||fqq
|Sr)rrrrrn)r	r(rrDr
r
rundefined_symbolss

zGrammar.undefined_symbolscCs2g}|jD]\}}|dkr|s||q|Sr)rrsrn)r	Z
unused_tokrDrNr
r
runused_terminalss
zGrammar.unused_terminalscCs8g}|jD]$\}}|s|j|d}||q|SNr)rrsrrn)r	Zunused_prodrDrNrr
r
runused_rulesszGrammar.unused_rulescCs@g}|jD]0}||jks
||jks
|||j|dfq
|Sr)rrrrn)r	ZunusedZtermnamer
r
runused_precedences

zGrammar.unused_precedencecCsZg}|D]B}d}|j|D]$}|dkr,d}q||kr||q|rFqqVq|d|S)NF<empty>T)rrn)r	Zbetar(xZx_produces_emptyrr
r
r_firsts
zGrammar._firstcCs|jr|jS|jD]}|g|j|<qdg|jd<|jD]}g|j|<q6d}|jD]H}|j|D]8}||jD]&}||j|krn|j||d}qnq^qP|sFqqF|jS)NrkFT)rrrrrrrn)r	rrLrrrr
r
r
compute_firsts"



zGrammar.compute_firstc
Cs<|jr|jS|js||jD]}g|j|<q |s@|jdj}dg|j|<d}|jddD]}t|jD]\}}||jkrl||j|dd}d}|D]:}	|	dkr|	|j|kr|j|	|	d}|	dkrd}q|s|t
|jdkrl|j|jD]*}	|	|j|kr|j|	|	d}qqlq^|sLq6qL|jS)NrqrkFrT)rrrrrrrrrrnr")
r	rkdidaddrrPBZfstZhasemptyrr
r
rcompute_follow?s:

zGrammar.compute_followc
Cs|jD]}|}d}g}|t|kr(d}ntt||}z|j|j|d|_Wnttfk
rjg|_YnXz|j|d|_Wntk
rd|_YnX||_	|sq|
||}|d7}q||_qdSNrrq)rr"rrrrrrrrrnr)r	rZlastlrirPrZlrir
r
r
build_lritemszs,



zGrammar.build_lritems)Nrr)N)N)rrrrrSrMrrrrrrrrrrrrrr
r
r
rrs $
T
@#%
;rc@seZdZdS)VersionErrorNr r
r
r
rrsrc@s,eZdZddZddZddZddZd	S)
LRTablecCsd|_d|_d|_d|_dSr)rergrc	lr_methodr;r
r
rrszLRTable.__init__cCszt|tjr|}ntd|tj|}|jtkr:td|j	|_
|j|_g|_
|jD]}|j
t|qV|j|_|jS)N	import %s&yacc table file version is out of date)rJtypes
ModuleTypeexecr{modulesZ_tabversion__tabversion__rZ
_lr_actionreZ_lr_gotorgrcZ_lr_productionsrnrZ
_lr_methodr
Z
_lr_signature)r	modulerrr
r
r
read_tables


zLRTable.read_tablecCszddl}Wntk
r(ddl}YnXtj|s:tt|d}||}|tkr^t	d|||_
||}|||_|||_||}g|_
|D]}|j
t|q||S)Nrrbr)cPickleImportErrorpickleospathexistsopenloadrrr
rergrcrnrclose)r	filenamerZin_fZ
tabversion	signaturerdrr
r
rread_pickles(



zLRTable.read_picklecCs|jD]}||qdSr)rcr)r	rrr
r
rbind_callabless
zLRTable.bind_callablesN)rrrrrr r!r
r
r
rr	sr	c	CsLi}|D]}d||<qg}i}|D]$}||dkr"t|||||||q"|Sr)traverse)XRFPNrrBFr
r
rdigraphs
r(c	Cs||t|}|||<||||<||}|D]f}	||	dkrVt|	||||||t||||	||<||	gD]}
|
||krx|||
qxq2|||krt||d<||||d<|}||krt||d<||||d<|}qdS)Nrr)rnr"r"minrMAXINTr)rr&rBr'r#r$r%drelyaZelementr
r
rr"s(
r"c@seZdZdS)	LALRErrorNr r
r
r
rr/sr/c@seZdZd$ddZddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZd%d d!Zd&d"d#ZdS)'LRGeneratedTablerNcCs|dkrtd|||_||_|s*t}||_i|_i|_|j|_i|_	i|_
d|_d|_d|_
g|_g|_g|_|j|j|j|dS)N)ZSLRrzUnsupported method %sr)r/grammarr
rlogrergrrc
lr_goto_cachelr0_cidhash
_add_countZsr_conflictZrr_conflictZ	conflictssr_conflictsrr_conflictsrrrlr_parse_table)r	r1methodr2r
r
rr"s,


zLRGeneratedTable.__init__cCsn|jd7_|dd}d}|rjd}|D]<}|jD]0}t|dd|jkrLq4||j|j|_d}q4q*q|S)NrqTF	lr0_addedr)r5rrVrnrr:)r	IJrrQrr
r
rlr0_closureGs

zLRGeneratedTable.lr0_closurec	Cs|jt||f}|r|S|j|}|s:i}||j|<g}|D]H}|j}|rB|j|krB|t|}|s|i}||t|<|||}qB|d}|s|r||}||d<n||d<||jt||f<|S)Nrk)r3rr%rrrnr=)	r	r;rgrDZgsrrLs1r
r
rlr0_gotoas2




zLRGeneratedTable.lr0_gotoc	Cs||jjdjgg}d}|D]}||jt|<|d7}q d}|t|kr||}|d7}i}|D]}|jD]}d||<qnqd|D]@}|||}|rt||jkrqt||jt|<|	|qq@|Sr)
r=r1rrr4r%r"rr@rn)	r	CrPr;ZasymsiirDrr>r
r
r	lr0_itemss(

zLRGeneratedTable.lr0_itemscCsxt}d}|jjddD]@}|jdkr6||jq|jD]}||kr<qq<||jqt||krjqtt|}q
|Sr)rr1rr"rrr)r	nullableZnum_nullablerrr
r
rcompute_nullable_nonterminalss


z.LRGeneratedTable.compute_nullable_nonterminalscCsjg}t|D]X\}}|D]J}|j|jdkr||j|jdf}|d|jjkr||kr||qq|Sr)rrr"rr1rrn)r	rAtransZstatenorvrrr
r
rfind_nonterminal_transitionssz-LRGeneratedTable.find_nonterminal_transitionscCsi}|\}}g}||||}|D]B}	|	j|	jdkr$|	j|	jd}
|
|jjkr$|
|kr$||
q$|dkr||jjdjdkr|d|S)Nrqrrk)r@rr"rr1rrnr)r	rArFrDZdr_setrvr&termsr>rr.r
r
rdr_relations
zLRGeneratedTable.dr_relationcCsrg}|\}}||||}|jt|d}|D]:}	|	j|	jdkr2|	j|	jd}
|
|kr2|||
fq2|S)Nrrq)r@r4rr%rr"rrn)r	rArFemptyr,rvr&r>rQrr.r
r
rreads_relation	szLRGeneratedTable.reads_relationcCsi}i}i}|D]}d||<q|D]\}}	g}
g}||D],}|j|	krNq<|j}
|}|
|jdkr|
d}
|j|
}||f|kr|
d}||jkr|j||jjkrq|j||krq|d}q|||f||||}|j	t
|d}qX||D]j}|j|jkrq|j|jkr"qd}||jkrZ|j||j|dkrNq|d}q&|
||fqq<|D]*}||krg||<||||	fqp|
|||	f<q"||fS)Nrqrr)rrr"rr1rrnr@r4rr%)r	rArFrDZlookdictZincludedictZdtransrrvr&ZlookbZincludesrrrQZlir>r&rPr
r
rcompute_lookback_includes1	sX





z*LRGeneratedTable.compute_lookback_includescs0fdd}fdd}t|||}|S)Ncs|Sr)rIrrArDr	r
r<lambda>	z4LRGeneratedTable.compute_read_sets.<locals>.<lambda>cs|Sr)rKrMrNr
rrO	rPr()r	rAntransrDr%r$r'r
rNrcompute_read_sets	sz"LRGeneratedTable.compute_read_setscs(fdd}fdd}t|||}|S)Ncs|Srr
rM)readsetsr
rrO	rPz6LRGeneratedTable.compute_follow_sets.<locals>.<lambda>cs|gSr)rrM)inclsetsr
rrO	rPrQ)r	rRrTrUr%r$r'r
)rUrTrcompute_follow_sets	sz$LRGeneratedTable.compute_follow_setsc	Csl|D]^\}}|D]P\}}||jkr0g|j|<||g}|D]"}||j|kr@|j||q@qqdSr)rsrrrn)	r	Z	lookbacksZ	followsetrFZlbrvrrr.r
r
radd_lookaheads	s

zLRGeneratedTable.add_lookaheadscCsP|}||}||||}||||\}}||||}|||dSr)rErGrSrLrVrW)r	rArDrFrTZlookdZincludedZ
followsetsr
r
radd_lalr_lookaheads	s
z$LRGeneratedTable.add_lalr_lookaheadsc$
Cs
|jj}|jj}|j}|j}|j}i}|d|j|}|jdkrP|	|d}|D]}	g}
i}i}i}
|d|d||d|	D]}|d|j
|q|d|	D]}|j|jdkr|j
dkrd|d	<||d	<q|jdkr|j|}n|jj|j
}|D]}|
||d
|j
|ff||}|dk	r|dkr.|||j
j\}}||d\}}||ks||kr|dkr|j
||<|||<|s|s|d
||j||df||j
jd7_nB||kr|dkrd||<n$|s|d||j||dfn|dkr||}||j
}|j|jkr|j
||<|||<||}}||j
jd7_||j
jd8_n
||}}|j|||f|d|||j
||ntd|n(|j
||<|||<||j
jd7_qq|j}|j|d}||jjkr||	|}|jt|d}|dkr|
||d|f||}|dk	r|dkr||krtd|n|dkr|||j
j\}}||d\}}||ks||kr@|dkr@|||j
jd8_|||<|||<|s|d||j||dfnH||kr^|dkr^d||<n*|s|s|d
||j||dfntd|q|||<|||<qi}|
D]>\}}}||kr|||kr|d||d|||f<q|dd}|
D]P\}}}||kr|||k	r||f|kr|d||d}d|||f<q|rf|di} |	D]*}!|!jD]}"|"|jjkrxd| |"<qxqn| D]D}#||	|#}|jt|d}|dkr||
|#<|d|#|q|||<|||<|
||<|d7}qXdS)NzParsing method: %srrrzstate %dz    (%d) %srqrrkzreduce using rule %d (%s)rrz3  ! shift/reduce conflict for %s resolved as reducereducerz2  ! shift/reduce conflict for %s resolved as shiftshiftz=  ! reduce/reduce conflict for %s resolved using rule %d (%s)zUnknown conflict in state %drzshift and go to state %dz Shift/shift conflict in state %drz    %-15s %sz  ! %-15s [ %s ]z"    %-30s shift and go to state %d) r1rrrgrer2rr
rCrXrr"rrrrrnrrr6rrr7r/rrr@r4r%rrr)$r	rrrhrfr2ZactionprAstr;ZactlistZ	st_actionZ
st_actionpZst_gotorZlaheadsr.r&ZsprecZslevelZrprecZrlevelZoldpZppZchosenpZrejectprPr>rQZ	_actprintrZnot_usedZnkeysrBrDrLr
r
rr8	s






























zLRGeneratedTable.lr_parse_tablercCst|tjrtd|dd}tj||d}z8t|d}|	dtj
|t|j|fd}|r`i}|j
D]T\}	}
|
D]B\}}||}
|
sggf}
|
||<|
d|	|
d|qqz|	d	|D]f\}}|	d
||dD]}
|	d|
q|	d|dD]}
|	d|
q(|	d
q|	d|	dnF|	d|j
D]&\}}|	d|d|d|fqt|	d|ri}|jD]Z\}	}
|
D]F\}}||}
|
sggf}
|
||<|
d|	|
d|qʐq|	d|D]h\}}|	d
||dD]}
|	d|
qF|	d|dD]}
|	d|
qn|	d
q(|	d|	dnF|	d|jD]&\}}|	d|d|d|fq|	d|	d|jD]Z}|jr:|	d|j|j|j|jtj
|j|jfn|	dt||j|jfq|	d|Wn&tk
r}zW5d}~XYnXdS)Nz"Won't overwrite existing tabmodulerrz.pywzu
# %s
# This file is automatically generated. Do not edit.
_tabversion = %r

_lr_method = %r

_lr_signature = %r
    rqrz
_lr_action_items = {z%r:([z%r,z],[z]),z}
z
_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items
z
_lr_action = { z(%r,%r):%r,z
_lr_goto_items = {z
_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
z
_lr_goto = { z_lr_productions = [
z  (%r,%r,%d,%r,%r,%d),
z  (%r,%r,%d,None,None,None),
z]
)rJr
rIOErrorsplitrrrrrbasenamerr
rersrrnrgrcrr>rr"rrr)r		tabmodule	outputdirrZbasemodulenamerrZsmallerrsrDZndrrNrPrrer
r
rwrite_table
s






 




	
 



 
zLRGeneratedTable.write_tablecCszddl}Wntk
r(ddl}YnXt|d}|t|t||j|t|||t||j|t||j	|tg}|j
D]T}|jr||j
|j|j|jtj|j|jfq|t
||j|jdddfq|||tW5QRXdS)Nrwb)rrrrdumprpickle_protocolr
rergrcrrnr>rr"rrr_rr)r	rrrZoutfZoutprr
r
rpickle_tables 
, zLRGeneratedTable.pickle_table)rN)rr)r)rrrrr=r@rCrErGrIrKrLrSrVrWrXr8rcrgr
r
r
rr0!s"
%#8+P8
zr0cCs0t|}|j}|j|jkr,||j|Sr)r{	_getframe	f_globalscopyf_localsupdate)ZlevelsrZldictr
r
rget_caller_module_dict's


rmc
Csg}|}d}|}|D]}|d7}|}|s2qz|ddkrf|sTtd||f|}	|dd}
n@|d}	|	}|dd}
|d}|dkr|dkrtd||f||||	|
fWqtk
rYqtk
rtd	|||fYqXq|S)
Nrqr|z%s:%d: Misplaced '|':z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)
splitlinesr^r`rn	Exceptionstrip)docrrr1ZpstringsZlastpZdlineZpsrrrZassignr
r
r
parse_grammar3s6ruc@seZdZd ddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZdS)!
ParserReflectNcCsL||_d|_d|_d|_t|_g|_d|_|dkrBtt	j
|_n||_dS)NF)rr
error_functokensrrr1rrr{r|r2)r	rr2r
r
rr]szParserReflect.__init__cCs,|||||dSr)	get_startget_error_func
get_tokensget_precedenceget_pfunctionsr;r
r
rget_allls
zParserReflect.get_allcCs6|||||||jSr)validate_startvalidate_error_funcvalidate_tokensvalidate_precedencevalidate_pfunctionsvalidate_modulesrr;r
r
rvalidate_alltszParserReflect.validate_allc	Cszddlm}Wn tk
r0ddlm}YnXz|}|jrR||jd|jrz|ddd|jDd|jr|d|jd|j	D] }|dr||ddqWnt
tfk
rYnXt
|}tjddkr|d}|S)	Nr)md5zlatin-1rcSsg|]}d|qS)r)r)rHrr
r
rrIsz+ParserReflect.signature.<locals>.<listcomp>rr)Zhashlibrrrrlencoderrrxpfuncs	TypeError
ValueErrorbase64Z	b16encodedigestr{version_infodecode)r	rZsigrrr
r
rr~s*"

zParserReflect.signaturec	Cstd}|jD]~}t|\}}i}t|D]^\}}|d7}||}|r.|d}||}	|	sn|||<q.t	|}
|j
d|
|||	q.qdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rqz;%s:%d: Function %s redefined. Previously defined on line %d)recompilerinspectZgetsourcelinesrrgroupr
getsourcefiler2r)r	ZfrerlinesZlinenZ	counthashrrrprevrr
r
rrs&






zParserReflect.validate_modulescCs|jd|_dS)Nr)rrrr;r
r
rryszParserReflect.get_startcCs&|jdk	r"t|jts"|jddS)Nz'start' must be a string)rrJstring_typesr2rr;r
r
rrs
zParserReflect.validate_startcCs|jd|_dS)Np_error)rrrwr;r
r
rrzszParserReflect.get_error_funccCs|jrt|jtjrd}n*t|jtjr.d}n|jdd|_dS|jjj}|jjj	}t
|j}|j
||jjj|}|dkr|jd||d|_dS)Nrrqz2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)rwrJr
FunctionType
MethodTyper2r__code__co_firstlinenoco_filenamer	getmodulerrco_argcount)r	ZismethodZelineZefilerZargcountr
r
rrs 

z!ParserReflect.validate_error_funccCsn|jd}|s&|jdd|_dSt|ttfsJ|jdd|_dS|sd|jdd|_dS||_dS)NrxzNo token list is definedTztokens must be a list or tupleztokens is empty)rrr2rrJrtrrx)r	rxr
r
rr{szParserReflect.get_tokenscCsVd|jkr |jdd|_dSt}|jD]$}||krF|jd|||q,dS)Nrz.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rxr2rrrr)r	rrLr
r
rrs

zParserReflect.validate_tokenscCs|jd|_dS)Nr)rrrr;r
r
rr|szParserReflect.get_precedencecCsg}|jrt|jttfs2|jdd|_dSt|jD]\}}t|ttfsj|jdd|_dSt|dkr|jd|d|_dS|d}t|ts|jdd|_dS|ddD]<}t|ts|jd	d|_dS|	|||dfqq<||_
dS)
Nz"precedence must be a list or tupleTzBad precedence tableroz?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrqz precedence items must be strings)rrJrtrr2rrr"rrnpreclist)r	rrrrrr
r
rrs6

z!ParserReflect.validate_precedencecCs~g}|jD]T\}}|dr|dkr*qt|tjtjfr|jj}t	
|}|||||jfq|j
ddd||_dS)Np_rcSs |dt|d|d|dfS)Nrrqrorr=)Z
p_functionr
r
rrO-s

z.ParserReflect.get_pfunctions.<locals>.<lambda>)key)rrs
startswithrJr
rrrrrrrn__doc__sortr)r	Zp_functionsritemrrr
r
rr} s
zParserReflect.get_pfunctionscCsNg}t|jdkr(|jdd|_dS|jD]\}}}}t|}|j|}t|tj	rbd}nd}|j
j|kr|jd|||jd|_q.|j
j|kr|jd|||jd|_q.|j
s|jd|||jq.z(t|||}	|	D]}
|||
fqWn:tk
r4}z|jt|d|_W5d}~XYnX|j|q.|jD]\}}
|d	rzt|
tjtj	frzqN|d
rqN|d	r|dkr|jd|t|
tjr|
j
jdkst|
tj	rN|
jj
jdkrN|
j
rNz8|
j
d
}|ddkr&|jd|
j
j|
j
j|Wntk
r>YnXqN||_dS)Nrz+no rules of the form p_rulename are definedTrorqz%%s:%d: Rule %r has too many argumentsz#%s:%d: Rule %r requires an argumentzA%s:%d: No documentation string specified in function %r (ignored)rZt_rz%r not defined as a functionrrpz9%s:%d: Possible grammar rule %r defined without p_ prefix)r"rr2rrrrrJr
rrrrrrrurnr`r>rrrsrr__func__r^rrrr1)r	r1rrrrtrrZreqargsZparsed_gr>rbrLrNr
r
rr5sn

 

z!ParserReflect.validate_pfunctions)N)rrrrr~rrrryrrzrr{rr|rr}rr
r
r
rrv\s

#rvc
<s0	|dkrt}|rd}|dkr&ttj}rffddtD}
t|
}d|krntj|dj|d<ntd}|	dkrt	|t
jr|j}nLd|kr|d}n:|d}d
|dd}td	|ttj|dd
}tj|}	|d}|rt	|trd|kr|d|}|dk	r&||d<t||d
}||jrJtd|}zt}|rl||}n
||}|s||krz&||jt||j }|j!a!|WWSt"k
r}z|#d|W5d}~XYnXWnFt$k
r}z|#t|W5d}~XYnt%k
r&YnX|
dkr|rztt&tj
|	|d}
Wn<t'k
r}z|#d||ft(}
W5d}~XYnXnt(}
|
)dt*d}|+rtd|j s|#dt,|j-}|j.D]P\}}}z|/|||Wn0t0k
r*}z|#d|W5d}~XYnXq|j1D]b\}}|\} }!}"}#z|2|"|#|| |!Wn4t0k
r}z|d|d}W5d}~XYnXq6z&|dkr|3|j4n
|3|Wn6t0k
r}z|t|d}W5d}~XYnX|rtd|5}$|$D]"\}%}&|d|&j6|&j7|%d}q|8}'|'r|
)d
|
)d|
)d
|'D]}|#d||
)d|qf|r|
)d
|
)d|
)d
t9|j:D]\}(})|
)d|(|)q|;}*|*D]}&|#d|&j6|&j7|&j<qt=|'dkr|#dt=|'dkr.|#d t=|'t=|*dkrF|#d!t=|*dkrd|#d"t=|*|r4|
)d
|
)d#|
)d
t>|j?}+|+@|+D]*}|
)d$|d%
d&d|j?|Dq|
)d
|
)d'|
)d
t>|jA},|,@|,D]*}-|
)d$|-d%
d(d|jA|-Dq|
)d
|r~|B}.|.D]}/|#d)|/qF|C}0|0D]}1|d*|1d}qf|D}2|2D]\}}|d+||d}q|rtd|r|Ed,|tF|||
}|rFt=|jG}3|3dkr|#d-n|3dkr|#d.|3t=|jH}4|4dkr0|#d/n|4dkrF|#d0|4|rp|jGs\|jHrp|
#d
|
#d1|
#d
|jGD]\}5}6}7|
#d2|6|5|7qtI}8|jHD]x\}5}9}:|5tJ|9tJ|:f|8krАq|
#d3|5|9|
#d4|:|5|#d3|5|9|#d4|:|5|8K|5tJ|9tJ|:fqg};|jHD]@\}5}9}:|:jLs.|:|;kr.|
#d5|:|#d5|:|;M|:q.|rz|N||	|Wn6t'k
r}z|#d6||fW5d}~XYnX|	rz|O||Wn6t'k
	r}z|#d6||fW5d}~XYnX||jt||j }|j!a!|S)7Nrcsg|]}|t|fqSr
)rV)rHrrr
rrIszyacc.<locals>.<listcomp>__file__rrorrrr__package__r)r2zUnable to build parserz.There was a problem loading the table file: %rr\zCouldn't open %r. %sz5Created by PLY version %s (http://www.dabeaz.com/ply)Fz no p_error() function is definedz%sTz;%s:%d: Symbol %r used, but not defined as a token or a rulezUnused terminals:zToken %r defined, but not usedz    %srzRule %-5d %sz$%s:%d: Rule %r defined, but not usedrqzThere is 1 unused tokenzThere are %d unused tokenszThere is 1 unused rulezThere are %d unused rulesz'Terminals, with rules where they appearz
%-20s : %srcSsg|]}t|qSr
r=rGr
r
rrI0
sz*Nonterminals, with rules where they appearcSsg|]}t|qSr
r=rGr
r
rrI8
szSymbol %r is unreachablez)Infinite recursion detected for symbol %rz0Precedence rule %r defined for unknown symbol %rzGenerating %s tablesz1 shift/reduce conflictz%d shift/reduce conflictsz1 reduce/reduce conflictz%d reduce/reduce conflictsz
Conflicts:z7shift/reduce conflict for %s in state %d resolved as %sz;reduce/reduce conflict in state %d resolved using rule (%s)zrejected rule (%s) in state %dzRule (%s) is never reducedzCouldn't create %r. %s)P
tab_modulerr{r|dirdictrrrmrJr
rr^rrrVrrdirnamerr>rvr~rrrr	r rr!rrarwrrrrrrrr]rr__version__rrrxrrrr1rrrrrrrrrrrr"rtrrrrrrrr0r6r7rr%rrrnrcrg)<r9rrr`rZcheck_recursionoptimizeZwrite_tablesZ	debugfileraZdebuglogZerrorlogZ
picklefileZ_itemsrZsrcfilepartsZpkgnameZpkgZpinforZlrZread_signaturer7rberrorsr1rrrfuncnameZgramrrrrrrorrrLrrrHZnontermsZnontermZunreachableurinfZunused_precZnum_srZnum_rrrvrZ
resolutionZalready_reportedZruleZrejectedZwarned_neverr
rryaccws






"



"












(



(









$$r)<rr
r{Zos.pathrrrr,rrZ	yaccdebugZ
debug_filerZ
default_lrrryr#rfrZ
basestringrr>maxsizer*objectrrrrrr)r+r/r3r1r.r0r2r4r8r9r@rarrrrrrrrrr	r(r"r/r0rmrurvrr
r
r
r<module>>s
4[
H.rT
)

Back to Directory File Manager