Viewing File: /opt/alt/python35/lib64/python3.5/lib2to3/pgen2/__pycache__/pgen.cpython-35.pyc



Yf5@sddlmZmZmZGdddejZGdddeZGdddeZGdd	d	eZ	d
ddZ
d
S))grammartokentokenizec@seZdZdS)PgenGrammarN)__name__
__module____qualname__r	r	7/opt/alt/python35/lib64/python3.5/lib2to3/pgen2/pgen.pyrsrc@seZdZdddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZdd d!Zd"d#Zd$d%ZdS)&ParserGeneratorNcCsd}|dkr't|}|j}||_||_tj|j|_|j|j	\|_
|_|dk	r|i|_|j
dS)N)openclosefilenamestreamrgenerate_tokensreadline	generatorgettokenparsedfasstartsymbolfirstaddfirstsets)selfrrZclose_streamr	r	r
__init__s			
	zParserGenerator.__init__cCst}t|jj}|j|j|j|jd|jx;|D]3}dt|j	}||j	|<||j
|<qRWx|D]}|j|}g}x|D]}g}xKt|jj
D]4\}	}
|j|j||	|j|
fqW|jr/|jd|j|f|j|qW|jj|||j||f|j|j	|<qW|j	|j|_|S)N)rlistrkeyssortremoverinsertlen
symbol2numberZ
number2symbolsortedarcsitemsappend
make_labelindexisfinalstates
make_firststart)rcnamesnameidfar+stater%labelnextr	r	r
make_grammars.	





",	*zParserGenerator.make_grammarcCsJ|j|}i}x0t|D]"}|j||}d||<q W|S)Nr)rr$r()rr.r0Zrawfirstrr4ilabelr	r	r
r,4s
zParserGenerator.make_firstcCst|j}|djr||jkry||jkrH|j|S|jj|j|df||j|<|Sqtt|d}t|t	st
||tjkst
|||jkr|j|S|jj|df||j|<|Sn|ddks!t
|t
|}|djr||jkrW|j|S|jjtj|f||j|<|SnNtj|}||jkr|j|S|jj|df||j|<|SdS)Nr"')r8r9)r"Zlabelsisalphar#Zsymbol2labelr'getattrr
isinstanceintAssertionErrortok_nametokensevalkeywordsNAMErZopmap)rr.r4r7Zitokenvaluer	r	r
r(=s<




zParserGenerator.make_labelcCsPt|jj}|jx*|D]"}||jkr&|j|q&WdS)N)rrrrr	calcfirst)rr/r0r	r	r
rks


zParserGenerator.addfirstsetsc	Csc|j|}d|j|<|d}i}i}x|jjD]\}}||jkr||jkr|j|}|dkrtd|n|j||j|}|j||||<q@d||<|di||<q@Wi}	xa|jD]S\}}
xD|
D]<}||	kr@td||||	|f||	|<qWqW||j|<dS)Nrzrecursion for rule %rrzArule %s is ambiguous; %s is in the first sets of %s as well as %s)rrr%r&
ValueErrorrEupdate)rr0r2r3ZtotalsetZoverlapcheckr4r5fsetZinverseZitsfirstZsymbolr	r	r
rEss2









zParserGenerator.calcfirstc	Csi}d}x|jtjkrx |jtjkrC|jq$W|jtj}|jtjd|j\}}|jtj|j	||}t
|}|j|t
|}|||<|dkr|}qW||fS)N:)typer	ENDMARKERNEWLINErexpectrCOP	parse_rhsmake_dfar"simplify_dfa)	rrrr0azr2ZoldlenZnewlenr	r	r
rs"


zParserGenerator.parsecsDt|tstt|ts*tfdd}fddt|||g}x|D]}i}xP|jD]E}x<|jD]1\}}	|dk	r|	|j|iqWqWxmt|jD]Y\}}
x:|D]}|j|
krPqWt|
|}|j	||j
||qWqmW|S)Ncsi}|||S)Nr	)r3base)
addclosurer	r
closures
z)ParserGenerator.make_dfa.<locals>.closurecsft|tst||kr%dSd||<x0|jD]%\}}|dkr9||q9WdS)Nr)r<NFAStater>r%)r3rTr4r5)rUr	r
rUs
z,ParserGenerator.make_dfa.<locals>.addclosure)r<rWr>DFAStatenfasetr%
setdefaultr$r&r'addarc)rr-finishrVr+r3r%Znfastater4r5rYstr	)rUr
rPs&
!

zParserGenerator.make_dfac
Cstd||g}xt|D]\}}td|||krJdpMdx|jD]t\}}||kr|j|}	nt|}	|j||dkrtd|	q[td||	fq[Wq#WdS)NzDump of NFA forz  Statez(final)z	    -> %dz    %s -> %d)print	enumerater%r)r"r')
rr0r-r\Ztodor1r3r4r5jr	r	r
dump_nfas
	"
zParserGenerator.dump_nfacCstd|x|t|D]n\}}td||jr>dpAdx@t|jjD])\}}td||j|fq[WqWdS)NzDump of DFA forz  Statez(final)r^z    %s -> %d)r_r`r*r$r%r&r))rr0r2r1r3r4r5r	r	r
dump_dfas

"zParserGenerator.dump_dfacCsd}x|rd}xt|D]u\}}xft|dt|D]K}||}||krH||=x|D]}|j||qrWd}PqHWq"Wq	WdS)NTFr)r`ranger"
unifystate)rr2Zchangesr1Zstate_iraZstate_jr3r	r	r
rQs	 

zParserGenerator.simplify_dfacCs|j\}}|jdkr+||fSt}t}|j||j|xI|jdkr|j|j\}}|j||j|qZW||fSdS)N|)	parse_altrDrWr[r)rrRrSZaaZzzr	r	r
rOs
		



zParserGenerator.parse_rhscCsr|j\}}xS|jdks?|jtjtjfkrg|j\}}|j||}qW||fS)N([)rhri)
parse_itemrDrJrrCSTRINGr[)rrRbr.dr	r	r
rg
s

zParserGenerator.parse_altcCs|jdkrU|j|j\}}|jtjd|j|||fS|j\}}|j}|dkr||fS|j|j||dkr||fS||fSdS)Nri]+*)rorp)rDrrOrMrrNr[
parse_atom)rrRrSrDr	r	r
rjs


	



zParserGenerator.parse_itemcCs|jdkrH|j|j\}}|jtjd||fS|jtjtjfkrt	}t	}|j
||j|j||fS|jd|j|jdS)Nrh)z+expected (...) or NAME or STRING, got %s/%s)rDrrOrMrrNrJrCrkrWr[raise_error)rrRrSr	r	r
rq(s

		

	zParserGenerator.parse_atomcCs`|j|ks*|dk	rI|j|krI|jd|||j|j|j}|j|S)Nzexpected %s/%s, got %s/%s)rJrDrsr)rrJrDr	r	r
rM9s*		
zParserGenerator.expectcCsit|j}x/|dtjtjfkr@t|j}qW|\|_|_|_|_|_	dS)Nr)
r5rrCOMMENTNLrJrDZbeginendline)rtupr	r	r
rAszParserGenerator.gettokencGsw|rDy||}Wn-dj|gttt|}YnXt||j|jd|jd|jfdS)N rr)joinrmapstrSyntaxErrorrrvrw)rmsgargsr	r	r
rsHs*zParserGenerator.raise_error)rrrrr6r,r(rrErrPrbrcrQrOrgrjrqrMrrsr	r	r	r
r
s$	.$
rc@s+eZdZddZdddZdS)rWcCs
g|_dS)N)r%)rr	r	r
rSszNFAState.__init__NcCsP|dks!t|ts!tt|ts6t|jj||fdS)N)r<r|r>rWr%r')rr5r4r	r	r
r[Vs!zNFAState.addarc)rrrrr[r	r	r	r
rWQsrWc@sFeZdZddZddZddZddZd	Zd	S)
rXcCspt|tstttt|ts6tt|tsKt||_||k|_i|_dS)N)	r<dictr>r5iterrWrYr*r%)rrYfinalr	r	r
r]s!	zDFAState.__init__cCsPt|tst||jks*tt|ts?t||j|<dS)N)r<r|r>r%rX)rr5r4r	r	r
r[eszDFAState.addarccCs=x6|jjD]%\}}||kr||j|<qWdS)N)r%r&)roldnewr4r5r	r	r
rekszDFAState.unifystatecCst|tst|j|jkr+dSt|jt|jkrMdSx9|jjD](\}}||jj|k	r]dSq]WdS)NFT)r<rXr>r*r"r%r&get)rotherr4r5r	r	r
__eq__pszDFAState.__eq__N)rrrrr[rer__hash__r	r	r	r
rX[s
rXzGrammar.txtcCst|}|jS)N)rr6)rpr	r	r
generate_grammarsrN)r^rrrZGrammarrobjectrrWrXrr	r	r	r
<module>sH
%
Back to Directory File Manager