3 \ª%ã@s.ddlZddlmZmZGdd„dejƒZdS)éN)ÚgrammarÚtokenc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú ConvertercCs |j|ƒ|j|ƒ|jƒdS)N)Úparse_graminit_hÚparse_graminit_cÚ finish_off)ÚselfZ graminit_hZ graminit_c©r ú*/usr/lib64/python3.6/lib2to3/pgen2/conv.pyÚrun/s  z Converter.runc CsÂy t|ƒ}Wn0tk r<}ztd||fƒdSd}~XnXi|_i|_d}xn|D]f}|d7}tjd|ƒ}| r’|jƒr’td|||jƒfƒqT|jƒ\}}t |ƒ}||j|<||j|<qTWdS)NzCan't open %s: %sFréz^#define\s+(\w+)\s+(\d+)$z%s(%s): can't parse %sT) ÚopenÚOSErrorÚprintZ symbol2numberZ number2symbolÚreÚmatchÚstripÚgroupsÚint) rÚfilenameÚfÚerrÚlinenoÚlineÚmoÚsymbolÚnumberr r r r5s&     zConverter.parse_graminit_hc!CsÜy t|ƒ}Wn0tk r<}ztd||fƒdSd}~XnXd}|dt|ƒ}}|dt|ƒ}}|dt|ƒ}}i}g}�x‚|jdƒ�rx¼|jdƒ�rLtjd|ƒ}ttt |j ƒƒƒ\} } } g} xRt | ƒD]F} |dt|ƒ}}tjd|ƒ}ttt |j ƒƒƒ\}}| j ||fƒqÐW|dt|ƒ}}| || | f<|dt|ƒ}}q’Wtjd|ƒ}ttt |j ƒƒƒ\}}g}x^t |ƒD]R} |dt|ƒ}}tjd |ƒ}ttt |j ƒƒƒ\} } } || | f} |j | ƒ�q~W|j |ƒ|dt|ƒ}}|dt|ƒ}}q„W||_ i}tjd |ƒ}t |jdƒƒ}xòt |ƒD]æ}|dt|ƒ}}tjd |ƒ}|jd ƒ}ttt |jdd ddƒƒƒ\}}}}||}|dt|ƒ}}tjd|ƒ}i}t|jdƒƒ}xPt|ƒD]D\}}t|ƒ}x0t dƒD]$}|d|>@�rÞd||d|<�qÞW�qÄW||f||<�q4W|dt|ƒ}}||_g}|dt|ƒ}}tjd|ƒ}t |jdƒƒ}xjt |ƒD]^}|dt|ƒ}}tjd|ƒ}|j ƒ\}}t |ƒ}|dk�r¶d}nt|ƒ}|j ||fƒ�qpW|dt|ƒ}}||_|dt|ƒ}}|dt|ƒ}}tjd|ƒ}t |jdƒƒ}|dt|ƒ}}|dt|ƒ}}tjd|ƒ}t |jdƒƒ}|dt|ƒ}}tjd|ƒ}t |jdƒƒ} | |_|dt|ƒ}}y|dt|ƒ}}Wntk �rÖYnXdS)NzCan't open %s: %sFrr z static arc z)static arc arcs_(\d+)_(\d+)\[(\d+)\] = {$z\s+{(\d+), (\d+)},$z'static state states_(\d+)\[(\d+)\] = {$z\s+{(\d+), arcs_(\d+)_(\d+)},$zstatic dfa dfas\[(\d+)\] = {$z0\s+{(\d+), "(\w+)", (\d+), (\d+), states_(\d+),$ééééz\s+("(?:\\\d\d\d)*")},$éz!static label labels\[(\d+)\] = {$z\s+{(\d+), (0|"\w+")},$Ú0z \s+(\d+),$z\s+{(\d+), labels},$z \s+(\d+)$)r rrÚnextÚ startswithrrÚlistÚmaprrÚrangeÚappendÚstatesÚgroupÚevalÚ enumerateÚordÚdfasÚlabelsÚstartÚ StopIteration)!rrrrrrZallarcsr)rÚnÚmÚkZarcsÚ_ÚiÚjÚsÚtÚstater.ZndfasrrÚxÚyÚzÚfirstZ rawbitsetÚcZbyter/Znlabelsr0r r r rTsº         "        zConverter.parse_graminit_ccCs\i|_i|_xJt|jƒD]<\}\}}|tjkrB|dk rB||j|<q|dkr||j|<qWdS)N)ÚkeywordsÚtokensr,r/rÚNAME)rZilabelÚtypeÚvaluer r r rùs zConverter.finish_offN)Ú__name__Ú __module__Ú __qualname__r rrrr r r r r$s  &r)rZpgen2rrZGrammarrr r r r Ús