3 \u@s0ddlmZGdddeZGdddeZdS))tokenc@seZdZddZdS) ParseErrorcCs4tj|d||||f||_||_||_||_dS)Nz!%s: type=%r, value=%r, context=%r) Exception__init__msgtypevaluecontext)selfrrrr r +/usr/lib64/python3.6/lib2to3/pgen2/parse.pyrs zParseError.__init__N)__name__ __module__ __qualname__rr r r r rsrc@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)ParserNcCs||_|pdd|_dS)NcSs|S)Nr )grammarnoder r r Wsz!Parser.__init__..)rconvert)r rrr r r r9szParser.__init__cCsH|dkr|jj}|ddgf}|jj|d|f}|g|_d|_t|_dS)N)rstartdfasstackrootnodeset used_names)r rnewnodeZ stackentryr r r setupYs  z Parser.setupcCs:|j|||}x$|jd\}}}|\}} ||} x| D]\} } |jj| \} }|| kr|j||| || }x@||d|fgkr|j|jsdS|jd \}}}|\}} qpWdS| dkr:|jj| }|\}}||kr:|j| |jj| | |Pq:Wd|f| kr$|j|js2td|||qtd|||qWdS) NrrTFztoo much inputz bad inputr) classifyrrZlabelsshiftpoprpushr)r rrr ilabeldfastaterZstatesfirstZarcsinewstatetvZitsdfaZ itsstatesZitsfirstr r r addtokenqs:   zParser.addtokencCsX|tjkr0|jj||jjj|}|dk r0|S|jjj|}|dkrTtd||||S)Nz bad token) rNAMEraddrkeywordsgettokensr)r rrr r$r r r r s  zParser.classifyc CsT|jd\}}}|||df}|j|j|}|dk r@|dj||||f|jd<dS)Nrrrr)rrrappend) r rrr)r r%r&rrr r r r!s  z Parser.shiftc CsB|jd\}}}|d|gf}|||f|jd<|jj|d|fdS)Nrrrr)rr2) r rZnewdfar)r r%r&rrr r r r#s z Parser.pushcCs`|jj\}}}|j|j|}|dk r\|jrL|jd\}}}|dj|n||_|j|j_dS)Nrrr)rr"rrr2rr)r ZpopdfaZpopstateZpopnoderr%r&rr r r r"sz Parser.pop)N)N) r rrrrr,r r!r#r"r r r r rs 0 rN)rrrobjectrr r r r s