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



]5@sddlmZmZmZGdddejZGdddeZGdddeZGdd	d	eZ	d
ddZ
d
S))grammartokentokenizec@seZdZdS)PgenGrammarN)__name__
__module____qualname__r	r	)/opt/alt/python35/lib64/python3.5/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}||jkr|j|S|jj|df||j|<|Snt	|}|djr2||j
kr|j
|S|jjtj|f||j
|<|SnNtj
|}||jkrY|j|S|jj|df||j|<|SdS)Nr)r"Zlabelsisalphar#Zsymbol2labelr'getattrrtokensevalkeywordsNAMErZopmap)rr.r4r7Zitokenvaluer	r	r
r(=s6




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&
ValueErrorr?update)rr0r2r3ZtotalsetZoverlapcheckr4r5fsetZinverseZitsfirstsymbolr	r	r
r?ss2









zParserGenerator.calcfirstc	Csi}d}x|jtjkrx |jtjkrC|jq$W|jtj}|jtjd|j\}}|jtj|j	||}t
|}|j|t
|}|||<|dkr|}qW||fS)N:)typer	ENDMARKERNEWLINErexpectr=OP	parse_rhsmake_dfar"simplify_dfa)	rrrr0azr2ZoldlenZnewlenr	r	r
rs"


zParserGenerator.parsecsfdd}fddt|||g}x|D]}i}xP|jD]E}x<|jD]1\}}	|dk	ri|	|j|iqiWqYWxmt|jD]Y\}}
x:|D]}|j|
krPqWt|
|}|j||j||qWqCW|S)Ncsi}|||S)Nr	)r3base)
addclosurer	r
closures
z)ParserGenerator.make_dfa.<locals>.closurecsQ||krdSd||<x0|jD]%\}}|dkr$||q$WdS)Nr)r%)r3rOr4r5)rPr	r
rPs
z,ParserGenerator.make_dfa.<locals>.addclosure)DFAStatenfasetr%
setdefaultr$r&r'addarc)rr-finishrQr+r3r%Znfastater4r5rSstr	)rPr
rKs"
!

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-rVZtodor1r3r4r5jr	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)rXz    %s -> %d)rYrZr*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)rZranger"
unifystate)rr2Zchangesr1Zstate_ir[Zstate_jr3r	r	r
rLs	 

zParserGenerator.simplify_dfacCs|j\}}|jdkr+||fSt}t}|j||j|xI|jdkr|j|j\}}|j||j|qZW||fSdS)N|)	parse_altr>NFAStaterUr)rrMrNZaazzr	r	r
rJs
		



zParserGenerator.parse_rhscCsr|j\}}xS|jdks?|jtjtjfkrg|j\}}|j||}qW||fS)N([)rdre)
parse_itemr>rErr=STRINGrU)rrMbr.dr	r	r
ra
s

zParserGenerator.parse_altcCs|jdkrU|j|j\}}|jtjd|j|||fS|j\}}|j}|dkr||fS|j|j||dkr||fS||fSdS)Nre]+*)rkrl)r>rrJrHrrIrU
parse_atom)rrMrNr>r	r	r
rfs


	



zParserGenerator.parse_itemcCs|jdkrH|j|j\}}|jtjd||fS|jtjtjfkrt	}t	}|j
||j|j||fS|jd|j|jdS)Nrd)z+expected (...) or NAME or STRING, got %s/%s)r>rrJrHrrIrEr=rgrbrUraise_error)rrMrNr	r	r
rm(s

		

	zParserGenerator.parse_atomcCs`|j|ks*|dk	rI|j|krI|jd|||j|j|j}|j|S)Nzexpected %s/%s, got %s/%s)rEr>ror)rrEr>r	r	r
rH9s*		
zParserGenerator.expectcCsit|j}x/|dtjtjfkr@t|j}qW|\|_|_|_|_|_	dS)Nr)
r5rrCOMMENTNLrEr>Zbeginendline)rtupr	r	r
rAszParserGenerator.gettokencGsw|rDy||}Wn-dj|gttt|}YnXt||j|jd|jd|jfdS)N rr)joinrmapstrSyntaxErrorrrrrs)rmsgargsr	r	r
roHs*zParserGenerator.raise_error)rrrrr6r,r(rr?rrKr\r]rLrJrarfrmrHrror	r	r	r
r
s$	.$
rc@s+eZdZddZdddZdS)rbcCs
g|_dS)N)r%)rr	r	r
rSszNFAState.__init__NcCs|jj||fdS)N)r%r')rr5r4r	r	r
rUVszNFAState.addarc)rrrrrUr	r	r	r
rbQsrbc@sFeZdZddZddZddZddZd	Zd	S)
rRcCs%||_||k|_i|_dS)N)rSr*r%)rrSfinalr	r	r
r]s	zDFAState.__init__cCs||j|<dS)N)r%)rr5r4r	r	r
rUeszDFAState.addarccCs=x6|jjD]%\}}||kr||j|<qWdS)N)r%r&)roldnewr4r5r	r	r
r_kszDFAState.unifystatecCsx|j|jkrdSt|jt|jkr8dSx9|jjD](\}}||jj|k	rHdSqHWdS)NFT)r*r"r%r&get)rotherr4r5r	r	r
__eq__pszDFAState.__eq__N)rrrrrUr_r__hash__r	r	r	r
rR[s
rRzGrammar.txtcCst|}|jS)N)rr6)rpr	r	r
generate_grammarsrN)rXrrrZGrammarrobjectrrbrRrr	r	r	r
<module>sH
%
Back to Directory File Manager