Edit File: yacc.cpython-36.pyc
3 .[�`F�������������� ���@���s��d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZdZdZ dZ dZdZdZ dZd Zd Zd�Zejd��dk�rteZneZejZG�dd��de�ZG�d d��de�ZG�dd��de�Zdd��Zdd��Zdada da!dZ"dd��Z#dd��Z$dd��Z%dd��Z&G�dd��d�Z'G�d d!��d!�Z(G�d"d#��d#�Z)e�j*d$�Z+G�d%d&��d&e�Z,G�d'd(��d(e�Z-G�d)d*��d*e�Z.d+d,��Z/G�d-d.��d.e�Z0G�d/d0��d0e�Z1G�d1d2��d2e�Z2G�d3d4��d4e�Z3d5d6��Z4d7d8��Z5G�d9d:��d:e�Z6G�d;d<��d<e3�Z7d=d>��Z8d?d@��Z9G�dAdB��dBe�Z:de deddd deddddf dCdD�Z;dS�)E�����Nz3.9z3.8Tz parser.out�parsetab�LALR����F�(���c���������������@���s4���e�Zd�Zdd��Zdd��ZeZdd��Zdd��ZeZd S�) � PlyLoggerc�������������C���s ���||�_�d�S�)N)�f)�selfr�����r ����/usr/lib/python3.6/yacc.py�__init__n���s����zPlyLogger.__init__c�������������O���s���|�j�j||�d���d�S�)N� )r����write)r����msg�args�kwargsr ���r ���r ����debugq���s����zPlyLogger.debugc�������������O���s���|�j�jd||��d���d�S�)Nz WARNING: r���)r���r ���)r���r���r���r���r ���r ���r ����warningv���s����zPlyLogger.warningc�������������O���s���|�j�jd||��d���d�S�)NzERROR: r���)r���r ���)r���r���r���r���r ���r ���r ����errory���s����zPlyLogger.errorN) �__name__� __module__�__qualname__r���r����infor���r���Zcriticalr ���r ���r ���r ���r���m���s���r���c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)� NullLoggerc�������������C���s���|�S�)Nr ���)r����namer ���r ���r ����__getattribute__����s����zNullLogger.__getattribute__c�������������O���s���|�S�)Nr ���)r���r���r���r ���r ���r ����__call__����s����zNullLogger.__call__N)r���r���r���r���r���r ���r ���r ���r ���r������s���r���c���������������@���s���e�Zd�ZdS�)� YaccErrorN)r���r���r���r ���r ���r ���r ���r�������s���r���c�������������C���sP���t�|��}d|krt�|�}t|�tkr4|d�t��d�}dt|��jt|��|f�}|S�)Nr���z ...z<%s @ 0x%x> (%s))�repr�len�resultlimit�typer����id)�r�repr_str�resultr ���r ���r ���� format_result����s����r%���c�������������C���sB���t�|��}d|krt�|�}t|�dk�r(|S�dt|��jt|��f�S�d�S�)Nr�������z<%s @ 0x%x>)r���r���r ���r���r!���)r"���r#���r ���r ���r ����format_stack_entry����s����r'���a��PLY: 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() c���������������C���s���t�jt��t��S�)N)�warnings�warn�_warnmsg�_errokr ���r ���r ���r ����errok����s���� r,���c���������������C���s���t�jt��t��S�)N)r(���r)���r*����_restartr ���r ���r ���r ����restart����s���� r.���c���������������C���s���t�jt��t��S�)N)r(���r)���r*����_tokenr ���r ���r ���r ����token����s���� r0���c�������������C���s>���|j�a|ja|ja|�|�}y bbbW�n�tk r8���Y�nX�|S�)N)r,���r+���r0���r/���r.���r-���� NameError)� errorfuncr0����parserr"���r ���r ���r ����call_errorfunc����s���� r4���c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)� YaccSymbolc�������������C���s���|�j�S�)N)r ���)r���r ���r ���r ����__str__����s����zYaccSymbol.__str__c�������������C���s���t�|��S�)N)�str)r���r ���r ���r ����__repr__����s����zYaccSymbol.__repr__N)r���r���r���r6���r8���r ���r ���r ���r ���r5�������s���r5���c���������������@���sf���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dd��Zdd��Zdd��Z dS�)�YaccProductionNc�������������C���s���||�_�||�_d�|�_d�|�_d�S�)N)�slice�stack�lexerr3���)r����sr;���r ���r ���r ���r�������s����zYaccProduction.__init__c�������������C���sB���t�|t�rdd��|�j|�D��S�|dkr2|�j|�jS�|�j|�jS�d�S�)Nc�������������S���s���g�|�] }|j��qS�r ���)�value)�.0r=���r ���r ���r ���� <listcomp>����s����z.YaccProduction.__getitem__.<locals>.<listcomp>r���)� isinstancer:���r>���r;���)r����nr ���r ���r ����__getitem__����s ���� zYaccProduction.__getitem__c�������������C���s���||�j�|�_d�S�)N)r:���r>���)r���rB����vr ���r ���r ����__setitem__����s����zYaccProduction.__setitem__c�������������C���s���dd��|�j�||��D��S�)Nc�������������S���s���g�|�] }|j��qS�r ���)r>���)r?���r=���r ���r ���r ���r@�������s����z/YaccProduction.__getslice__.<locals>.<listcomp>)r:���)r����i�jr ���r ���r ����__getslice__����s����zYaccProduction.__getslice__c�������������C���s ���t�|�j�S�)N)r���r:���)r���r ���r ���r ����__len__����s����zYaccProduction.__len__c�������������C���s���t�|�j|�dd�S�)N�linenor���)�getattrr:���)r���rB���r ���r ���r ���rJ�����s����zYaccProduction.linenoc�������������C���s���||�j�|�_d�S�)N)r:���rJ���)r���rB���rJ���r ���r ���r ���� set_lineno��s����zYaccProduction.set_linenoc�������������C���s,���t�|�j|�dd�}t�|�j|�d|�}||fS�)NrJ���r���� endlineno)rK���r:���)r���rB���� startlineZendliner ���r ���r ����linespan��s����zYaccProduction.linespanc�������������C���s���t�|�j|�dd�S�)N�lexposr���)rK���r:���)r���rB���r ���r ���r ���rP�����s����zYaccProduction.lexposc�������������C���s,���t�|�j|�dd�}t�|�j|�d|�}||fS�)NrP���r���� endlexpos)rK���r:���)r���rB����startpos�endposr ���r ���r ����lexspan��s����zYaccProduction.lexspanc�������������C���s���t��d�S�)N)�SyntaxError)r���r ���r ���r ���r�����s����zYaccProduction.error)N)r���r���r���r���rC���rE���rH���rI���rJ���rL���rO���rP���rT���r���r ���r ���r ���r ���r9�������s��� r9���c���������������@���s\���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd d�Zddd�Z ddd�Z ddd�ZdS�)�LRParserc�������������C���s0���|j�|�_|j|�_|j|�_||�_|�j���d|�_d�S�)NT) �lr_productions�productions� lr_action�action�lr_goto�gotor2����set_defaulted_states�errorok)r���ZlrtabZerrorfr ���r ���r ���r�����s����zLRParser.__init__c�������������C���s ���d|�_�d�S�)NT)r^���)r���r ���r ���r ���r,���&��s����zLRParser.errokc�������������C���s@���|�j�d�d��=�|�jd�d��=�t��}d|_|�jj|��|�j�jd��d�S�)Nz$endr���)� statestack�symstackr5���r ����append)r����symr ���r ���r ���r.���)��s����zLRParser.restartc�������������C���sT���i�|�_�xH|�jj��D�]:\}}t|j���}t|�dkr|d�dk�r|d�|�j�|<�qW�d�S�)N����r���)�defaulted_statesrZ����items�list�valuesr���)r����state�actionsZrulesr ���r ���r ���r]���9��s ����zLRParser.set_defaulted_statesc�������������C���s ���i�|�_�d�S�)N)rd���)r���r ���r ���r ����disable_defaulted_states@��s����z!LRParser.disable_defaulted_statesNFc�������������C���sZ���|st�r.t|t�rttj�}|�j|||||�S�|rD|�j|||||�S�|�j|||||�S�d�S�)N) � yaccdevelrA����intr����sys�stderr� parsedebug�parseopt�parseopt_notrack)r����inputr<���r����tracking� tokenfuncr ���r ���r ����parseC��s���� zLRParser.parsec������� ������C���s���d�}g�}|�j�}|�j} |�j} |�j}td��}d} |jd��|sLddlm}�|j}||_|�|_ |d�k rj|j |��|d�krz|j}n|}||�_g�}||�_g�}||�_ ||_d�}|jd��t��}d|_|j|��d}�x�|jd��|jd|��||k�r.|�s|��s�|��}n|j��}|�st��}d|_|j}||�j|�}n||�}|jd||���|jd d djdd ��|D��dd����t|�f�j����|d�k �r�|dk�r�|j|��|}|jd|��|j|��d�}| r�| d8�} q�|dk��rN| |��}|j}|j}t��}||_d�|_|�rB|jd|jddjdd ��||�d���D����d�| |d%|���|���n|jd|jg�| |d&��|���|�r�||�d�d���}||d<�|�r�|d�}|j|_|j|_|d'�}t|d|j�|_t|d|j�|_||_ yd||�d��=�||�_!|j"|��||�d��=�|jdt#|d����|j|��| |d(��|�}|j|��W�q��t$k �r����|j|��|j%|dd)����|j���|d*�}d|_d|_|}t&} d|�_'Y�q�X�q�n�|�r�|j|_|j|_|g}||_ yL||�_!|j"|��|jdt#|d����|j|��| |d+��|�}|j|��W�q��t$k �rJ���|j|��|j���|d,�}d|_d|_|}t&} d|�_'Y�q�X�q�|dk�r�|d-�}t|dd��}|jdt#|���|jd��|S�|d�k�r�|j(dd djdd ��|D��dd����t|�f�j����| dk�s�|�j'�r�t&} d|�_'|}|jdk�r�d�}|�j)�rB|�rt*|d���r||_||�_!t+|�j)||��}|�j'�r�|}d�}q�n`|�r�t*|d��r\|j}nd}|�r~t,j-j.d ||jf���nt,j-j.d!|j���nt,j-j.d"��d�S�nt&} t|�dk�r�|jdk�r�d�}d�}d}|d�d��=�q�|jdk�r�d�S�|jdk�r�|d.�}|jdk�r6|�r0t|d|j�|_t|d#|j�|_d�}q�t��}d|_t*|d��r\|j�|_|_t*|d#��rv|j�|_|_||_|j|��|}q�|j��}|�r�|j|_|j|_|j���|d/�}q�t/d$��q�W�d�S�)0Nr���zPLY: PARSE DEBUG STARTrc���)�lexz$end��zState : %sz#Defaulted state %s: Reduce using %dzStack : %sz%s . %s� c�������������S���s���g�|�] }|j��qS�r ���)r ���)r?����xxr ���r ���r ���r@������s����z'LRParser.parsedebug.<locals>.<listcomp>z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %d�[�,c�������������S���s���g�|�]}t�|j��qS�r ���)r'���r>���)r?���Z_vr ���r ���r ���r@������s�����]rM���rQ���zResult : %sr���Fr>���zDone : Returning %szPLY: PARSE DEBUG ENDzError : %sc�������������S���s���g�|�] }|j��qS�r ���)r ���)r?���ry���r ���r ���r ���r@���B��s����r<���rJ���z(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rP���zyacc: internal parser error!!! ���r}���r}���r}���r}���r}���r}���r}���r}���r}���r}���)0rZ���r\���rX���rd���r9���r���rw���rv���r<���r3���rr���r0���r_���r`���r;���ra���r5���r ���r����pop�get�joinr7����lstripr���r���r>���rJ���rP���rK���rM���rQ���r:���rh����callabler%���rU����extend�error_countr^���r���r2����hasattrr4���rm���rn���r ����RuntimeError) r���rr���r<���r���rs���rt���� lookahead�lookaheadstackri���r\����prodrd����pslice� errorcountrv���� get_tokenr_���r`����errtokenrb���rh����ltype�t�p�pname�plen�targ�t1rB���r$����tokrJ���r ���r ���r ���ro���\��s~��� . $ . zLRParser.parsedebugc������� ������C���sv��d�}g�}|�j�}|�j} |�j} |�j}td��}d} |sBddlm}�|j}||_|�|_|d�k r`|j |��|d�krp|j }n|}||�_ g�}||�_g�}||�_||_ d�}|jd��t��}d|_|j|��d}�x�||k�r|s�|s�|��}n|j��}|s�t��}d|_|j}||�j|�}n||�}|d�k �rh|dk�rN|j|��|}|j|��d�}| r�| d8�} q�|dk��rF| |��}|j}|j}t��}||_d�|_|�r�||�d�d���}||d<�|�r�|d�}|j|_|j|_|d�}t|d|j�|_t|d|j�|_||_yP||�d��=�||�_|j|��||�d��=�|j|��| |d��|�}|j|��W�q��tk �r����|j|��|j|dd����|j���|d�}d|_d|_|}t } d|�_!Y�q�X�q�n�|�r�|j|_|j|_|g}||_y8||�_|j|��|j|��| |d��|�}|j|��W�q��tk �rB���|j|��|j���|d�}d|_d|_|}t } d|�_!Y�q�X�q�|dk�rh|d�}t|d d��}|S�|d�k�rf| dk�s�|�j!�rNt } d|�_!|}|jdk�r�d�}|�j"�r�|�r�t#|d ���r�||_||�_t$|�j"||��}|�j!�rL|}d�}q�n`|�r<t#|d��r|j}nd}|�r(t%j&j'd||jf���nt%j&j'd |j���nt%j&j'd��d�S�nt } t|�dk�r�|jdk�r�d�}d�}d}|d�d��=�q�|jdk�r�d�S�|jdk�r6|d�}|jdk�r�|�r�t|d|j�|_t|d|j�|_d�}q�t��}d|_t#|d��r|j�|_|_t#|d��r |j�|_|_||_|j|��|}q�|j��}|�rT|j|_|j|_|j���|d�}q�t(d��q�W�d�S�)Nr���rc���)rv���z$endrM���rQ���r���Fr>���r<���rJ���z(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rP���zyacc: internal parser error!!! r}���r}���r}���r}���r}���r}���r}���r}���r}���))rZ���r\���rX���rd���r9���rw���rv���r<���r3���rr���r0���r_���r`���r;���ra���r5���r ���r~���r���r���r���r>���rJ���rP���rK���rM���rQ���r:���rh���r����rU���r����r����r^���r2���r����r4���rm���rn���r ���r����) r���rr���r<���r���rs���rt���r����r����ri���r\���r����rd���r����r����rv���r����r_���r`���r����rb���rh���r����r����r����r����r����r����r����rB���r$���r����rJ���r ���r ���r ���rp������sX��� zLRParser.parseoptc�������������C���s���d�}g�}|�j�}|�j} |�j} |�j}td��}d} |sBddlm}�|j}||_|�|_|d�k r`|j |��|d�krp|j }n|}||�_ g�}||�_g�}||�_||_ d�}|jd��t��}d|_|j|��d}�x||k�r|s�|s�|��}n|j��}|s�t��}d|_|j}||�j|�}n||�}|d�k �r|dk�rN|j|��|}|j|��d�}| r�| d8�} q�|dk��r�| |��}|j}|j}t��}||_d�|_|�rX||�d�d���}||d<�||_yP||�d��=�||�_|j|��||�d��=�|j|��| |d��|�}|j|��W�q��tk �rR���|j|��|j|dd����|j���|d�}d|_d|_|}t} d|�_Y�q�X�q�n�|g}||_y8||�_|j|��|j|��| |d��|�}|j|��W�q��tk �r����|j|��|j���|d�}d|_d|_|}t} d|�_Y�q�X�q�|dk�r|d�}t|dd��}|S�|d�k�r�| dk�s(|�j�r�t} d|�_|}|jdk�rFd�}|�j�r�|�rht|d���rh||_||�_t |�j||��}|�j�r�|}d�}q�n`|�r�t|d ��r�|j!}nd}|�r�t"j#j$d ||jf���nt"j#j$d|j���nt"j#j$d��d�S�nt} t|�dk�r(|jdk�r(d�}d�}d}|d�d��=�q�|jdk�r8d�S�|jdk�r�|d�}|jdk�r^d�}q�t��}d|_t|d ��r�|j!�|_!|_%t|d ��r�|j&�|_&|_'||_|j|��|}q�|j��}|j���|d�}q�t(d��q�W�d�S�)Nr���rc���)rv���z$endr���Fr>���r<���rJ���z(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rP���zyacc: internal parser error!!! r}���r}���r}���r}���r}���r}���r}���r}���))rZ���r\���rX���rd���r9���rw���rv���r<���r3���rr���r0���r_���r`���r;���ra���r5���r ���r~���r���r���r���r>���r:���rh���r����rU���r����r����r^���rK���r2���r����r4���rJ���rm���rn���r ���rM���rP���rQ���r����)r���rr���r<���r���rs���rt���r����r����ri���r\���r����rd���r����r����rv���r����r_���r`���r����rb���rh���r����r����r����r����r����r����rB���r$���r����rJ���r ���r ���r ���rq������s8��� zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN)r���r���r���r���r,���r.���r]���rj���ru���ro���rp���rq���r ���r ���r ���r ���rV�����s��� ��] ��4rV���z^[a-zA-Z0-9_-]+$c���������������@���sR���e�Zd�ZdZddd�Zdd��Zd d ��Zdd��Zd d��Zdd��Z dd��Z dd��ZdS�)� Productionr����rightNrw���c������� ������C���s����||�_�t|�|�_||�_||�_d�|�_||�_||�_||�_t |�j�|�_ g�|�_ x$|�jD�]}||�j krN|�j j|��qNW�g�|�_d�|�_ |�jr�d|�j�dj|�j�f�|�_nd|�j��|�_d�S�)Nz%s -> %srx���z %s -> <empty>)r����tupler�����number�funcr�����file�line�precr����usymsra����lr_items�lr_nextr����r7���) r���r����r���r����� precedencer����r����r����r=���r ���r ���r ���r�����s$���� zProduction.__init__c�������������C���s���|�j�S�)N)r7���)r���r ���r ���r ���r6���=��s����zProduction.__str__c�������������C���s���dt�|���d�S�)NzProduction(�))r7���)r���r ���r ���r ���r8���@��s����zProduction.__repr__c�������������C���s ���t�|�j�S�)N)r���r����)r���r ���r ���r ���rI���C��s����zProduction.__len__c�������������C���s���dS�)Nrc���r ���)r���r ���r ���r ����__nonzero__F��s����zProduction.__nonzero__c�������������C���s ���|�j�|�S�)N)r����)r����indexr ���r ���r ���rC���I��s����zProduction.__getitem__c�������������C���s����|t�|�j�krd�S�t|�|�}yt|j|d���|_W�n�ttfk rR���g�|_Y�nX�y|j|d��|_W�n�tk r����d�|_Y�nX�|S�)Nrc���)r���r�����LRItem� Prodnames�lr_after� IndexError�KeyError� lr_before)r���rB���r����r ���r ���r ����lr_itemM��s���� zProduction.lr_itemc�������������C���s���|�j�r||�j��|�_d�S�)N)r����r����)r����pdictr ���r ���r ����bind]��s����zProduction.bind�r����r���)r����Nrw���r���)r���r���r����reducedr���r6���r8���rI���r����rC���r����r����r ���r ���r ���r ���r������s��� r����c���������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) �MiniProductionc�������������C���s.���||�_�||�_||�_d�|�_||�_||�_||�_d�S�)N)r���r���r����r����r����r����r7���)r���r7���r���r���r����r����r����r ���r ���r ���r���f��s����zMiniProduction.__init__c�������������C���s���|�j�S�)N)r7���)r���r ���r ���r ���r6���o��s����zMiniProduction.__str__c�������������C���s ���d|�j��S�)NzMiniProduction(%s))r7���)r���r ���r ���r ���r8���r��s����zMiniProduction.__repr__c�������������C���s���|�j�r||�j��|�_d�S�)N)r����r����)r���r����r ���r ���r ���r����v��s����zMiniProduction.bindN)r���r���r���r���r6���r8���r����r ���r ���r ���r ���r����e��s��� r����c���������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)r����c�������������C���sZ���|j�|�_�t|j�|�_|j|�_||�_i�|�_|�jj|d��t|�j�|�_t|�j�|�_|j |�_ d�S�)N�.) r���rf���r����r�����lr_index� lookaheads�insertr����r���r����)r���r����rB���r ���r ���r ���r������s����zLRItem.__init__c�������������C���s,���|�j�rd|�jdj|�j��f�}n d|�j�}|S�)Nz%s -> %srx���z %s -> <empty>)r����r���r����)r���r=���r ���r ���r ���r6������s���� zLRItem.__str__c�������������C���s���dt�|���d�S�)NzLRItem(r����)r7���)r���r ���r ���r ���r8������s����zLRItem.__repr__N)r���r���r���r���r6���r8���r ���r ���r ���r ���r�������s���r����c�������������C���s:���t�|��d�}x(|dkr4|�|�|kr*|�|�S�|d8�}qW�d�S�)Nrc���r���)r���)Zsymbols� terminalsrF���r ���r ���r ����rightmost_terminal���s���� r����c���������������@���s���e�Zd�ZdS�)�GrammarErrorN)r���r���r���r ���r ���r ���r ���r�������s���r����c���������������@���s����e�Zd�Zdd��Zdd��Zdd��Zdd��Zd$dd �Zd%dd�Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zd&d d!�Zd"d#��Zd S�)'�Grammarc�������������C���sf���d�g|�_�i�|�_i�|�_i�|�_x|D�]}g�|�j|<�q W�g�|�jd<�i�|�_i�|�_i�|�_i�|�_t��|�_ d�|�_ d�S�)Nr���)�Productionsr�����Prodmap� Terminals�Nonterminals�First�Follow� Precedence�set�UsedPrecedence�Start)r���r�����termr ���r ���r ���r������s���� zGrammar.__init__c�������������C���s ���t�|�j�S�)N)r���r����)r���r ���r ���r ���rI������s����zGrammar.__len__c�������������C���s ���|�j�|�S�)N)r����)r���r����r ���r ���r ���rC������s����zGrammar.__getitem__c�������������C���sL���|�j�d�gkstd��||�jkr*td|���|dkr:td��||f|�j|<�d�S�)Nz2Must call set_precedence() before add_production()z,Precedence already specified for terminal %r�leftr�����nonassocz:Associativity must be one of 'left','right', or 'nonassoc')r����r����r����)r�����AssertionErrorr����r����)r���r�����assoc�levelr ���r ���r ����set_precedence���s���� zGrammar.set_precedenceNrw���r���c�������������C���s���||�j�krtd|||f���|dkr6td|||f���tj|�sRtd|||f���x�t|�D�]�\}}|d�dkr�yJt|�}t|�dkr�td||||f���||�j�kr�g�|�j�|<�|||<�w\W�n�tk r����Y�nX�tj|��r\|d kr\td ||||f���q\W�d |k�r�|d�d k�r$td||f���|d�d k�rBtd ||f���|d�} |�jj | �} | �sptd||| f���n|�j j| ��|dd��=�nt||�j��} |�jj | d�} d||f�}||�j k�r�|�j |�}td|||f�d|j|jf����t|�j�} ||�jk�rg�|�j|<�xR|D�]J}||�j�k�r.|�j�|�j| ��n&||�jk�rDg�|�j|<�|�j|�j| ���qW�t| ||| |||�}|�jj|��||�j |<�y|�j|�j|��W�n"�tk �r����|g|�j|<�Y�nX�d�S�)Nz7%s:%d: Illegal rule name %r. Already defined as a tokenr���z5%s:%d: Illegal rule name %r. error is a reserved wordz%s:%d: Illegal rule name %rr���z'"rc���zA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rz+%s:%d: Syntax error. Nothing follows %%prec����zH%s:%d: Syntax error. %%prec can only appear at the end of a grammar rulez/%s:%d: Nothing known about the precedence of %rr����z%s -> %sz%s:%d: Duplicate rule %s. zPrevious definition at %s:%dr}������r}���r����)r����r���)r����r�����_is_identifier�match� enumerate�evalr���rU���r����r���r�����addr����r����r����r����r����r����ra���r����r����r����)r����prodname�symsr����r����r����rB���r=����cZprecnameZprodprec�map�mZpnumberr����r����r ���r ���r ����add_production ��sp���� zGrammar.add_productionc�������������C���sT���|s|�j�d�j}||�jkr&td|���tdd|g�|�j�d<�|�j|�jd��||�_d�S�)Nrc���zstart symbol %s undefinedr���zS')r����r���r����r����r����ra���r����)r����startr ���r ���r ���� set_starta��s���� zGrammar.set_startc����������������s>�������fdd���t�������jd�jd����fdd��jD��S�)Nc����������������sJ���|��krd�S��j�|���x.�jj|�g��D�]}x|jD�]}��|��q2W�q&W�d�S�)N)r����r����r���r����)r=���r����r"���)�mark_reachable_from� reachabler���r ���r ���r����t��s���� z5Grammar.find_unreachable.<locals>.mark_reachable_fromr���c����������������s���g�|�]}|��kr|�qS�r ���r ���)r?���r=���)r����r ���r ���r@���~��s����z,Grammar.find_unreachable.<locals>.<listcomp>)r����r����r����r����)r���r ���)r����r����r���r ����find_unreachableq��s����zGrammar.find_unreachablec�������������C���s����i�}x|�j�D�]}d||<�qW�d|d<�x|�jD�]}d||<�q,W�xpd}x`|�jj��D�]R\}}xH|D�]@}x |jD�]}||�shd}P�qhW�d}|r\||�s�d||<�d}P�q\W�qNW�|s>P�q>W�g�} x@|j��D�]4\}} | s�||�jkr�||�j�kr�|dkr�q�| j|��q�W�| S�)NTz$endFr���)r����r����r����re���r����ra���)r���Z terminatesr����rB����some_changeZplr����r=���Zp_terminates�infiniter����r ���r ���r ����infinite_cycles���s:���� zGrammar.infinite_cyclesc�������������C���sX���g�}xN|�j�D�]D}|sqx8|jD�].}||�jkr||�jkr|dkr|j||f��qW�qW�|S�)Nr���)r����r����r����r����ra���)r���r$���r����r=���r ���r ���r ����undefined_symbols���s����zGrammar.undefined_symbolsc�������������C���s8���g�}x.|�j�j��D�] \}}|dkr|�r|j|��qW�|S�)Nr���)r����re���ra���)r���Z unused_tokr=���rD���r ���r ���r ����unused_terminals���s ����zGrammar.unused_terminalsc�������������C���s<���g�}x2|�j�j��D�]$\}}|s|�j|�d�}|j|��qW�|S�)Nr���)r����re���r����ra���)r���Zunused_prodr=���rD���r����r ���r ���r ����unused_rules���s����zGrammar.unused_rulesc�������������C���sD���g�}x:|�j�D�]0}||�jkp"||�jks|j||�j�|�d�f��qW�|S�)Nr���)r����r����r����ra���)r���ZunusedZtermnamer ���r ���r ����unused_precedence���s ����zGrammar.unused_precedencec�������������C���s`���g�}xV|D�]D}d}x2|�j�|�D�]$}|dkr0d}q||kr|j|��qW�|rLq P�q W�|jd��|S�)NFz<empty>T)r����ra���)r���Zbetar$����xZx_produces_emptyr���r ���r ���r ����_first ��s���� zGrammar._firstc�������������C���s����|�j�r|�j�S�x|�jD�]}|g|�j�|<�qW�dg|�j�d<�x|�jD�]}g�|�j�|<�q<W�xjd}xZ|�jD�]P}xJ|�j|�D�]<}x6|�j|j�D�]&}||�j�|�kr~|�j�|�j|��d}q~W�qlW�q\W�|sPP�qPW�|�j�S�)Nz$endFT)r����r����r����r����r����r����ra���)r���r����rB���r����r����r���r ���r ���r ���� compute_first,��s$����zGrammar.compute_firstc������� ������C���sV��|�j�r|�j�S�|�js|�j���x|�jD�]}g�|�j�|<�q"W�|sD|�jd�j}dg|�j�|<���x�d}x�|�jdd���D�]�}x�t|j�D�]�\}}||�jkrx|�j|j|d�d����}d}xB|D�]:} | dkr�| |�j�|�kr�|�j�|�j | ��d}| dkr�d}q�W�|�s|t |j�d�krxx:|�j�|j�D�]*} | |�j�|�k�r|�j�|�j | ��d}�qW�qxW�qhW�|sTP�qTW�|�j�S�)Nrc���z$endFz<empty>T)r����r����r����r����r����r���r����r����r����ra���r���) r���r�����k�didaddr����rF����BZfstZhasemptyr���r ���r ���r ����compute_followQ��s<���� zGrammar.compute_followc�������������C���s����x�|�j�D�]�}|}d}g�}x�|t|�kr,d�}ntt||�}y|�j|j|d���|_W�n�ttfk rn���g�|_Y�nX�y|j|d��|_W�n�tk r����d�|_Y�nX�||_ |s�P�|j |��|}|d7�}qW�||_qW�d�S�)Nr���rc���)r����r���r����r����r����r����r����r����r����r����ra���r����)r���r����ZlastlrirF���r����Zlrir ���r ���r ���� build_lritems���s.���� zGrammar.build_lritems)Nrw���r���)N)N)r���r���r���r���rI���rC���r����r����r����r����r����r����r����r����r����r����r����r����r����r ���r ���r ���r ���r�������s ���$ T @#% ;r����c���������������@���s���e�Zd�ZdS�)�VersionErrorN)r���r���r���r ���r ���r ���r ���r�������s���r����c���������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) �LRTablec�������������C���s���d�|�_�d�|�_d�|�_d�|�_d�S�)N)rY���r[���rW���� lr_method)r���r ���r ���r ���r������s����zLRTable.__init__c�������������C���s~���t�|tj�r|}ntd|���tj|�}|jtkr:td��|j |�_ |j|�_g�|�_ x|jD�]}|�j jt|����qXW�|j|�_|jS�)Nz import %sz&yacc table file version is out of date)rA����types� ModuleType�execrm����modulesZ_tabversion�__tabversion__r����Z _lr_actionrY���Z_lr_gotor[���rW���Z_lr_productionsra���r����Z _lr_methodr����Z _lr_signature)r����moduler���r����r ���r ���r ���� read_table���s���� zLRTable.read_tablec�������������C���s����ydd�l�}W�n�tk r(���dd�l}Y�nX�tjj|�s:t�t|d�}|j|�}|tkr^t d��|j|�|�_ |j|�}|j|�|�_|j|�|�_|j|�}g�|�_ x|D�]}|�j jt|����q�W�|j���|S�)Nr����rbz&yacc table file version is out of date)�cPickle�ImportError�pickle�os�path�exists�open�loadr����r����r����rY���r[���rW���ra���r�����close)r����filenamer����Zin_fZ tabversion� signaturerX���r����r ���r ���r ����read_pickle���s(���� zLRTable.read_picklec�������������C���s���x|�j�D�]}|j|��qW�d�S�)N)rW���r����)r���r����r����r ���r ���r ����bind_callables���s����zLRTable.bind_callablesN)r���r���r���r���r����r��r��r ���r ���r ���r ���r�������s���r����c���������� ���C���sT���i�}x|�D�]}d||<�q W�g�}i�}x,|�D�]$}||�dkr(t�|||||�||��q(W�|S�)Nr���)�traverse)�X�R�FP�Nr����r;����Fr ���r ���r ����digraph��s���� r ��c���������� ���C���s��|j�|���t|�}|||�<�||��||�<�||��}xr|D�]j} || �dkrXt| ||||||��t||��|| ��||�<�x.|j| g��D�]} | ||��kr|||��j�| ��q|W�q4W�||��|k�rt||d�<�||��||d�<�|j��}x2||�k�rt||d�<�||��||d�<�|j��}q�W�d�S�)Nr���rc���r}���r}���r}���r}���)ra���r���r���minr����MAXINTr~���)r����r��r;���r��r��r��r���d�rel�y�a�elementr ���r ���r ���r����s(���� r��c���������������@���s���e�Zd�ZdS�)� LALRErrorN)r���r���r���r ���r ���r ���r ���r��)��s���r��c���������������@���s����e�Zd�Zd$dd�Zdd��Zdd��Zd d ��Zdd��Zd d��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zd%d d!�Zd&d"d#�ZdS�)'�LRGeneratedTabler���Nc�������������C���s����|dkrt�d|���||�_||�_|s*t��}||�_i�|�_i�|�_|j|�_i�|�_ i�|�_ d|�_d|�_d|�_ g�|�_g�|�_g�|�_|�jj���|�jj���|�jj���|�j���d�S�)N�SLRr���zUnsupported method %sr���)r��r���)r���grammarr����r����logrY���r[���r����rW���� lr_goto_cache�lr0_cidhash� _add_countZsr_conflictZrr_conflictZ conflicts�sr_conflicts�rr_conflictsr����r����r�����lr_parse_table)r���r���methodr��r ���r ���r ���r���4��s,���� zLRGeneratedTable.__init__c�������������C���sz���|��j�d7��_�|d�d���}d}xV|rtd}xH|D�]@}x:|jD�]0}t|dd�|�j�krRq:|j|j��|�j�|_d}q:W�q.W�q W�|S�)Nrc���TF� lr0_addedr���)r��r����rK���ra���r����r��)r����I�Jr����rG���r����r ���r ���r ����lr0_closureY��s���� zLRGeneratedTable.lr0_closurec������� ������C���s����|�j�jt|�|f�}|r|S�|�j�j|�}|s:i�}||�j�|<�g�}xP|D�]H}|j}|rD|j|krD|jt|��}|s~i�}||t|�<�|j|��|}qDW�|jd�}|s�|r�|�j|�}||d<�n||d<�||�j�t|�|f<�|S�)Nz$end)r��r���r!���r����r����ra���r ��) r���r��r�����gr=���Zgsr����rB����s1r ���r ���r ����lr0_gotos��s2���� zLRGeneratedTable.lr0_gotoc������� ������C���s����|�j�|�jjd�jg�g}d}x"|D�]}||�jt|�<�|d7�}q"W�d}x�|t|�k�r�||�}|d7�}i�}x$|D�]}x|jD�]}d�||<�qxW�qlW�xJ|D�]B}|�j||�}|�s�t|�|�jkr�q�t|�|�jt|�<�|j |��q�W�qFW�|S�)Nr���rc���) r ��r��r����r����r��r!���r���r����r#��ra���) r����CrF���r��Zasyms�iir=���r����r!��r ���r ���r ���� lr0_items���s(���� zLRGeneratedTable.lr0_itemsc�������������C���s����t���}d}xrxV|�jjdd���D�]B}|jdkr:|j|j��qx$|jD�]}||krBP�qBW�|j|j��qW�t|�|krrP�t|�}qW�|S�)Nr���rc���)r����r��r����r���r����r���r����)r����nullableZnum_nullabler����r����r ���r ���r ����compute_nullable_nonterminals���s���� z.LRGeneratedTable.compute_nullable_nonterminalsc�������������C���sr���g�}xht�|�D�]\\}}xR|D�]J}|j|jd�k�r||j|jd��f}|d�|�jjkr||kr|j|��qW�qW�|S�)Nrc���)r����r����r���r����r��r����ra���)r���r$���transZstatenorh���r����r����r ���r ���r ����find_nonterminal_transitions���s���� z-LRGeneratedTable.find_nonterminal_transitionsc�������������C���s����i�}|\}}g�}|�j�||�|�}xJ|D�]B} | j| jd�k�r&| j| jd��} | |�jjkr&| |kr&|j| ��q&W�|dkr�||�jjd�jd�kr�|jd��|S�)Nrc���r���z$end)r#��r����r���r����r��r����ra���r����)r���r$��r)��r'��Zdr_setrh���r���termsr!��r����r��r ���r ���r ����dr_relation���s���� zLRGeneratedTable.dr_relationc�������������C���sv���g�}|\}}|�j�||�|�}|�jjt|�d�}xB|D�]:} | j| jd�k�r4| j| jd��} | |kr4|j|| f��q4W�|S�)Nrc���r}���)r#��r��r���r!���r����r���r����ra���)r���r$��r)���emptyr ��rh���r��r!��rG���r����r��r ���r ���r ����reads_relation ��s���� zLRGeneratedTable.reads_relationc�������������C���s���i�}i�}i�}x|D�]}d||<�qW��x�|D��]�\}} g�} g�}�xR||�D��]D}|j�| krZqH|j} |}x�| |jd�k��r | d�} |j| �}||f|kr�| d�}xH||jk�r�|j|�|�jjkr�P�|j|�|kr�P�|d�}q�W�|j||f��|�j||�|�}|�jj t |�d�}qfW�x�||�D�]t}|j�|j�k�r,�q|j|jk�r>�qd}xD||jk��rx|j|�|j|d��k�rlP�|d�}�qDW�| j||f���qW�qHW�x2|D�]*}||k�r�g�||<�||�j|| f���q�W�| ||| f<�q*W�||fS�)Nrc���r���r}���)r���r����r���r����r��r����ra���r#��r��r���r!���)r���r$��r)��r'��ZlookdictZincludedictZdtransr����rh���r��ZlookbZincludesr����r����rG���Zlir!��r"���rF���r ���r ���r ����compute_lookback_includesC ��sX���� z*LRGeneratedTable.compute_lookback_includesc����������������s0�������fdd�}����fdd�}t�|||�}|S�)Nc����������������s����j���|���S�)N)r,��)r����)r$��r'��r���r ���r ����<lambda>� ��s����z4LRGeneratedTable.compute_read_sets.<locals>.<lambda>c����������������s����j���|���S�)N)r.��)r����)r$��r'��r���r ���r ���r0��� ��s����)r ��)r���r$���ntransr'��r��r��r��r ���)r$��r'��r���r ����compute_read_sets� ��s����z"LRGeneratedTable.compute_read_setsc����������������s(����fdd�}��fdd�}t�|||�}|S�)Nc����������������s�����|��S�)Nr ���)r����)�readsetsr ���r ���r0��� ��s����z6LRGeneratedTable.compute_follow_sets.<locals>.<lambda>c����������������s�����j�|�g��S�)N)r���)r����)�inclsetsr ���r ���r0��� ��s����)r ��)r���r1��r3��r4��r��r��r��r ���)r4��r3��r ����compute_follow_sets� ��s����z$LRGeneratedTable.compute_follow_setsc������� ������C���sx���xr|j���D�]f\}}x\|D�]T\}}||jkr4g�|j|<�|j|g��}x*|D�]"}||j|�krF|j|�j|��qFW�qW�q W�d�S�)N)re���r����r���ra���) r���Z lookbacksZ followsetr)��Zlbrh���r����r���r��r ���r ���r ����add_lookaheads� ��s���� zLRGeneratedTable.add_lookaheadsc�������������C���sP���|�j���}|�j|�}|�j|||�}|�j|||�\}}|�j|||�}|�j||��d�S�)N)r(��r*��r2��r/��r5��r6��)r���r$��r'��r)��r3��ZlookdZincludedZ followsetsr ���r ���r ����add_lalr_lookaheads� ��s���� z$LRGeneratedTable.add_lalr_lookaheadsc�������$��� ���C���s<��|�j�j}|�j�j}|�j}|�j}|�j}i�}|jd|�j��|�j��}|�jdkrP|�j |��d}�x�|D��]�} g�} i�}i�}i�} |jd��|jd|��|jd��x| D�]}|jd|j |��q�W�|jd���x| D��]�}|j|jd�k�r,|j dkr�d|d <�||d <��q�|�jdk�r|j|�}n|�j�j|j �}�x�|D��]�}| j||d |j |f�f��|j|�}|d�k �r�|dk�rB|||�j �j\}}|j|d�\}}||k��s�||k�r�|dk�r�|j �||<�|||<�|��r�|��r�|jd |��|�jj||df��||j ��jd7��_nB||k�r|dk�rd�||<�n$|�s�|jd|��|�jj||df��n�|dk��r�||��}||j �}|j|jk�r�|j �||<�|||<�||�}}||j ��jd7��_||j ��jd8��_n ||�}}|�jj|||f��|jd|||�j ||���ntd|���n(|j �||<�|||<�||j ��jd7��_�q&W�q�|j}|j|d��}||�j�jkr�|�j| |�}|�jjt|�d�}|dkr�| j||d|�f��|j|�}|d�k �r�|dk�r�||k�r�td|���n�|dk��r�|||�j �j\}}|j|d�\}}||k�s||k�rV|dk�rV|||�j ��jd8��_|||<�|||<�|�s�|jd|��|�jj||df��nL||k�rt|dk�rtd�||<�n.|��r�|��r�|jd |��|�jj||df��ntd|���q�|||<�|||<�q�W�i�}xF| D�]>\}}}||k�r�|||�k�r�|jd||��d|||f<��q�W�|jd��d}xX| D�]P\}}}||k�r&|||�k �r&||f|k�r&|jd||��d}d|||f<��q&W�|�r�|jd��i�} x6| D�].}!x&|!jD�]}"|"|�j�jk�r�d�| |"<��q�W��q�W�xL| D�]D}#|�j| |#�}|�jjt|�d�}|dk�r�|| |#<�|jd|#|���q�W�|||<�|||<�| ||<�|d7�}q\W�d�S�)NzParsing method: %sr���r���rw���zstate %dz (%d) %src���zS'z$endzreduce using rule %d (%s)r����r����z3 ! shift/reduce conflict for %s resolved as reduce�reducer����z2 ! shift/reduce conflict for %s resolved as shiftZshiftz= ! reduce/reduce conflict for %s resolved using rule %d (%s)zUnknown conflict in state %dzshift and go to state %dz Shift/shift conflict in state %dz %-15s %sz ! %-15s [ %s ]z" %-30s shift and go to state %d)r����r���r}���)r����r���r}���) r��r����r����r[���rY���r��r���r����r&��r7��r����r���r����r���r����r����ra���r���r����r��r����r����r��r��r����r����r#��r��r!���r���r����r����)$r���r����r����r\���rZ���r��Zactionpr$���str��ZactlistZ st_actionZ st_actionpZst_gotor����Zlaheadsr��r"���ZsprecZslevelZrprecZrlevelZoldpZppZchosenpZrejectprF���r!��rG���Z _actprintr����Znot_usedZnkeysr%��r=���rB���r ���r ���r ���r��� ��s���� zLRGeneratedTable.lr_parse_tablerw���c�������������C���s���t�|tj�rtd��|jd�d�}tjj||�d�}�ylt|d�}|j dtjj |�t|�j|f���d}|�rti�}xf|�j j��D�]X\} } xN| j��D�]B\}}|j|�} | s�g�g�f} | ||<�| d�j| ��| d�j|��q�W�q|W�|j d��xz|j��D�]n\}}|j d |���x |d�D�]} |j d | ����qW�|j d��x |d�D�]} |j d | ����q8W�|j d��q�W�|j d ��|j d��nJ|j d��x4|�j j��D�]&\}}|j d|d�|d�|f����q�W�|j d ��|�r�i�}xl|�jj��D�]^\} } xR| j��D�]F\}}|j|�} | �sg�g�f} | ||<�| d�j| ��| d�j|���q�W��q�W�|j d��x||j��D�]p\}}|j d |���x |d�D�]} |j d | ����qjW�|j d��x |d�D�]} |j d | ����q�W�|j d���qJW�|j d ��|j d��nJ|j d��x4|�jj��D�]&\}}|j d|d�|d�|f����q�W�|j d ��|j d��xd|�jD�]Z}|j�rl|j d|j|j|j|jtjj |j�|jf���n|j dt|�|j|jf����q0W�|j d��|j���W�n&�tk �r��}�z��W�Y�d�d�}~X�nX�d�S�)Nz"Won't overwrite existing tabmoduler����rc���z.py�wzu # %s # This file is automatically generated. Do not edit. _tabversion = %r _lr_method = %r _lr_signature = %r r���z _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] r}���)rA���r����r�����IOError�splitr����r����r����r����r ����basenamer����r����rY���re���r���ra���r[���rW���r����r7���r���r���r����r����r����)r���� tabmodule� outputdirr���Zbasemodulenamer����r���Zsmallerre���r=���Zndr���rD���rF���r����r�����er ���r ���r ����write_table� ��s����� " " " zLRGeneratedTable.write_tablec�������������C���s��ydd�l�}W�n�tk r(���dd�l}Y�nX�t|d���}|jt|t��|j|�j|t��|j||t��|j|�j|t��|j|�j |t��g�}x^|�j D�]T}|jr�|j|j |j|j|jtjj|j�|jf��q�|jt |�|j|jd�d�d�f��q�W�|j||t��W�d�Q�R�X�d�S�)Nr����wb)r����r����r����r�����dumpr�����pickle_protocolr����rY���r[���rW���r����ra���r7���r���r���r����r����r=��r����r����)r���r����r���r����ZoutfZoutpr����r ���r ���r ����pickle_table��s ����,"zLRGeneratedTable.pickle_table)r���N)rw���rw���)rw���)r���r���r���r���r ��r#��r&��r(��r*��r,��r.��r/��r2��r5��r6��r7��r��rA��rE��r ���r ���r ���r ���r��3��s"��� %#8+P�8 zr��c�������������C���s0���t�j|��}|jj��}|j|jkr,|j|j��|S�)N)rm���� _getframe� f_globals�copy�f_locals�update)Zlevelsr���Zldictr ���r ���r ����get_caller_module_dict9��s ���� rK��c�������������C���s��g�}|�j���}d�}|}x�|D�]�}|d7�}|j��}|s4qy�|d�dkrh|sVtd||f���|} |dd���} n@|d�} | }|dd���} |d�}|dkr�|dkr�td||f���|j||| | f��W�q�tk r������Y�q�tk r����td |||j��f���Y�qX�qW�|S�) Nrc���r����|z%s:%d: Misplaced '|'r�����:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)� splitlinesr<��rU���ra���� Exception�strip)�docr����r����r��ZpstringsZlastpZdlineZpsr����r����r����Zassignr ���r ���r ���� parse_grammarE��s6���� rR��c���������������@���s����e�Zd�Zd dd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��ZdS�)!� ParserReflectNc�������������C���sL���||�_�d�|�_d�|�_d�|�_t��|�_g�|�_d|�_|d�krBtt j �|�_n||�_d�S�)NF)r����r����� error_func�tokensr����r����r��r���r���rm���rn���r��)r���r����r��r ���r ���r ���r���o��s����zParserReflect.__init__c�������������C���s,���|�j����|�j���|�j���|�j���|�j���d�S�)N)� get_start�get_error_func� get_tokens�get_precedence�get_pfunctions)r���r ���r ���r ����get_all~��s ����zParserReflect.get_allc�������������C���s6���|�j����|�j���|�j���|�j���|�j���|�j���|�jS�)N)�validate_start�validate_error_func�validate_tokens�validate_precedence�validate_pfunctions�validate_modulesr���)r���r ���r ���r ����validate_all���s����zParserReflect.validate_allc�������������C���s��yddl�m}�W�n �tk r0���ddlm}�Y�nX�y�|dd�}|�jrV|j|�jjd���|�jr~|jdjdd��|�jD���jd���|�jr�|jd j|�j�jd���x*|�j D�] }|d �r�|j|d �jd���q�W�W�n�t tfk r����Y�nX�tj |j���}tjd�d k�r|jd�}|S�)Nr���)�md5F)Zusedforsecurityzlatin-1rw���c�������������S���s���g�|�]}d�j�|��qS�)rw���)r����)r?���r����r ���r ���r ���r@������s����z+ParserReflect.signature.<locals>.<listcomp>rx���r���)Zhashlibrc��r����r����rJ���encoder����r����rU���pfuncs� TypeError� ValueError�base64Z b16encode�digestrm����version_info�decode)r���rc��Zsigr���ri��r ���r ���r ���r������s*���� " zParserReflect.signaturec�������������C���s����t�jd�}x�|�jD�]�}ytj|�\}}W�n�tk r>���wY�nX�i�}xjt|�D�]^\}}|d7�}|j|�}|rN|jd�}|j |�} | s�|||<�qNtj |�} |�jjd| ||| ��qNW�qW�d�S�)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rc���z;%s:%d: Function %s redefined. Previously defined on line %d) �re�compiler�����inspectZgetsourcelinesr;��r����r�����groupr���� getsourcefiler��r���)r���Zfrer�����linesZlinenZ counthashr����r����r����prevr����r ���r ���r ���ra�����s$���� zParserReflect.validate_modulesc�������������C���s���|�j�jd�|�_d�S�)Nr����)r����r���r����)r���r ���r ���r ���rV�����s����zParserReflect.get_startc�������������C���s&���|�j�d�k r"t|�j�t�s"|�jjd��d�S�)Nz'start' must be a string)r����rA����string_typesr��r���)r���r ���r ���r ���r\�����s���� zParserReflect.validate_startc�������������C���s���|�j�jd�|�_d�S�)N�p_error)r����r���rT��)r���r ���r ���r ���rW�����s����zParserReflect.get_error_funcc�������������C���s����|�j�r�t|�j�tj�rd}n*t|�j�tj�r.d}n|�jjd��d|�_d�S�|�j�jj}|�j�jj }t j|�j��}|�jj |��|�j�jj|�}|dkr�|�jjd||��d|�_d�S�)Nr���rc���z2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)rT��rA���r�����FunctionType� MethodTyper��r����__code__�co_firstlineno�co_filenamern��� getmoduler����r�����co_argcount)r���ZismethodZelineZefiler����Zargcountr ���r ���r ���r]�����s ���� z!ParserReflect.validate_error_funcc�������������C���sn���|�j�jd�}|s&|�jjd��d|�_d�S�t|ttf�sJ|�jjd��d|�_d�S�|sd|�jjd��d|�_d�S�||�_d�S�)NrU��zNo token list is definedTztokens must be a list or tupleztokens is empty)r����r���r��r���rA���rf���r����rU��)r���rU��r ���r ���r ���rX�����s����zParserReflect.get_tokensc�������������C���sZ���d|�j�kr |�jjd��d|�_d�S�t��}x.|�j�D�]$}||krH|�jjd|��|j|��q.W�d�S�)Nr���z.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rU��r��r���r����r���r����)r���r����rB���r ���r ���r ���r^����s���� zParserReflect.validate_tokensc�������������C���s���|�j�jd�|�_d�S�)Nr����)r����r���r����)r���r ���r ���r ���rY����s����zParserReflect.get_precedencec�������������C���s��g�}|�j��rt|�j�ttf�s2|�jjd��d|�_d�S�x�t|�j��D�]�\}}t|ttf�sj|�jjd��d|�_d�S�t|�dk�r�|�jjd|��d|�_d�S�|d�}t|t�s�|�jjd��d|�_d�S�xH|dd���D�]8}t|t�s�|�jjd ��d|�_d�S�|j |||d�f��q�W�q>W�||�_ d�S�) Nz"precedence must be a list or tupleTzBad precedence tabler����z?Malformed precedence entry %s. Must be (assoc, term, ..., term)r���z)precedence associativity must be a stringrc���z precedence items must be strings)r����rA���rf���r����r��r���r����r���rs��ra����preclist)r���r|��r����r����r����r����r ���r ���r ���r_����s6���� z!ParserReflect.validate_precedencec�������������C���s����g�}xl|�j�j��D�]^\}}|jd��s|dkr.qt|tjtjf�rt|d|jj �}t j|�}|j||||j f��qW�|jdd��d��||�_d�S�)N�p_rt��rx��c�������������S���s ���|�d�t�|�d��|�d�|�d�fS�)Nr���rc���r����r���)r7���)Z p_functionr ���r ���r ���r0��B��s���� z.ParserReflect.get_pfunctions.<locals>.<lambda>)�key)r����re���� startswithrA���r����ru��rv��rK���rw��rx��rn��rz��ra����__doc__�sortre��)r���Zp_functionsr����itemr����r����r ���r ���r ���rZ��5��s���� zParserReflect.get_pfunctionsc�������������C���s^��g�}t�|�j�dkr(|�jjd��d|�_d�S��x"|�jD��]\}}}}tj|�}|�j|�}t|tj �rfd}nd}|j j|kr�|�jjd|||j��d|�_q2|j j|k�r�|�jjd|||j��d|�_q2|j s�|�jjd|||j��q2y,t|||�} x| D�]} |j|| f��q�W�W�n:�tk �r<�}�z|�jjt|���d|�_W�Y�d�d�}~X�nX�|�jj|��q2W��x|�jj��D�]�\}} |jd ��r�t| tjtj f��r��q\|jd ��r��q\|jd ��r�|dk�r�|�jjd|��t| tj��r�| j jdk�s�t| tj ��r\| jj jdk�r\| j �r\y8| j jd �}|d�dk�r4|�jjd| j j| j j|��W�n�tk �rL���Y�nX��q\W�||�_d�S�)Nr���z+no rules of the form p_rulename are definedTr����rc���z%%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)r}��Zt_rt��z%r not defined as a functionrx���rM��z9%s:%d: Possible grammar rule %r defined without p_ prefix)r���re��r��r���rn��rp��r����rA���r����rv��rw��r{��r���r���r���rR��ra���rU���r7���r����r����re���r��ru���__func__r<��ry��rx��r����r��)r���r��r����r����r���rQ��r����r����ZreqargsZparsed_gr!��r@��rB���rD���r ���r ���r ���r`��J��s\���� z!ParserReflect.validate_pfunctions)N)r���r���r���r���r[��rb��r���ra��rV��r\��rW��r]��rX��r^��rY��r_��rZ��r`��r ���r ���r ���r ���rS��n��s��� #rS��c �������<���O������sd ��|d�krt�}|rd}|d�kr&ttj�}��rf��fdd�t���D��} t| �}d|krntj|d��j|d<�ntd�}| d�kr�t |t j�r�|j}nLd|kr�|d�}n:|jd�}dj |d�d6���}td |���ttj|�dd �}tjj|�} |jd�}|o�t |t��rd|k�r|d�|�}|d�k �r$||d<�t||d �}|j���|j�rHtd��|j��}y�t��}|�rj|j|�}n |j|�}|�s�||k�r�y"|j|j��t||j �}|j!a!|S��t"k �r��}�z|j#d|��W�Y�d�d�}~X�nX�W�nF�t$k �r�}�z|j#t|���W�Y�d�d�}~X�n�t%k �r ���Y�nX�| d�k�r�|�r�ytt&tjj | |�d��} W�n<�t'k �r��}�z|j#d||f���t(��} W�Y�d�d�}~X�nX�nt(��} | j)dt*��d}|j+���r�td��|j �s�|j#d��t,|j-�}xZ|j.D�]P\}}}y|j/|||��W�n0�t0k �r&�}�z|j#d|��W�Y�d�d�}~X�nX��q�W�xl|j1D�]b\}}|\} }!}"}#y|j2|"|#|| |!��W�n4�t0k �r��}�z|jd|��d}W�Y�d�d�}~X�nX��q6W�y&|d�k�r�|j3|j4��n |j3|��W�n6�t0k �r��}�z|jt|���d}W�Y�d�d�}~X�nX�|�rtd��|j5��}$x*|$D�]"\}%}&|jd|&j6|&j7|%��d}�qW�|j8��}'|'�r�| j)d ��| j)d��| j)d ��x&|'D�]}|j#d|��| j)d|���qnW�|�r�| j)d ��| j)d��| j)d ��x&t9|j:�D�]\}(})| j)d|(|)���q�W�|j;��}*x$|*D�]}&|j#d|&j6|&j7|&j<���q�W�t=|'�dk�r"|j#d��t=|'�dk�r@|j#dt=|'���t=|*�dk�rX|j#d ��t=|*�dk�rv|j#d!t=|*���|�rN| j)d ��| j)d"��| j)d ��t>|j?�}+|+j@���x2|+D�]*}| j)d#|d$j d%d��|j?|�D������q�W�| j)d ��| j)d&��| j)d ��t>|jA�},|,j@���x2|,D�]*}-| j)d#|-d$j d'd��|jA|-�D������qW�| j)d ��|�r�|jB��}.x|.D�]}/|j#d(|/���qbW�|jC��}0x|0D�]}1|jd)|1��d}�q�W�|jD��}2x$|2D�]\}}|jd*||��d}�q�W�|�r�td��|�r�|jEd+|���tF||�| �}|�rlt=|jG�}3|3dk�r |j#d,��n|3dk�r6|j#d-|3��t=|jH�}4|4dk�rV|j#d.��n|4dk�rl|j#d/|4��|�r�|jG�s�|jH�r�| j#d ��| j#d0��| j#d ��x&|jGD�]\}5}6}7| j#d1|6|5|7���q�W�tI��}8x�|jHD�]x\}5}9}:|5tJ|9�tJ|:�f|8k�r��q�| j#d2|5|9��| j#d3|:|5��|j#d2|5|9��|j#d3|:|5��|8jK|5tJ|9�tJ|:�f���q�W�g�};xL|jHD�]B\}5}9}:|:jL��r^|:|;k�r^| j#d4|:��|j#d4|:��|;jM|:���q^W�|�r�y|jN|| |��W�n6�t'k �r��}�z|j#d5||f���W�Y�d�d�}~X�nX�|� rBy|jO||��W�n6�t'k � r@�}�z|j#d5||f���W�Y�d�d�}~X�nX�|j|j��t||j �}|j!a!|S�)7Nr���c����������������s���g�|�]}|t���|�f�qS�r ���)rK���)r?���r����)r����r ���r ���r@������s����zyacc.<locals>.<listcomp>�__file__r���r����r����rc���z import %srw����__package__r����)r��zUnable 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 %sr����zRule %-5d %sz$%s:%d: Rule %r defined, but not usedzThere is 1 unused tokenzThere are %d unused tokenszThere is 1 unused rulezThere are %d unused rulesz'Terminals, with rules where they appearz %-20s : %srx���c�������������S���s���g�|�]}t�|��qS�r ���)r7���)r?���r=���r ���r ���r ���r@���E ��s����z*Nonterminals, with rules where they appearc�������������S���s���g�|�]}t�|��qS�r ���)r7���)r?���r=���r ���r ���r ���r@���M ��s����zSymbol %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. %sr}���)P� tab_moduler���rm���rn����dir�dictr����r���rK��rA���r����r����r<��r����r����rK���r����r�����dirnamer���r7���rS��r[��r���r���r���r����r��r����r��r����rV���rT��ru���rO��r���r����r����r����r;��r���r����__version__rb��r����rU��r|��r����r����r��r����r����r����r����r����r����r����r����r����r����r���r���rf���r����r���r����r����r����r����r���r��r��r��r����r!���r����r����ra���rA��rE��)<r��r���r����r>��r����Zcheck_recursion�optimizeZwrite_tablesZ debugfiler?��ZdebuglogZerrorlogZ picklefileZ_itemsr����Zsrcfile�partsZpkgnameZpkgZpinfor���ZlrZread_signaturer3���r@���errorsr��r����r����r�����funcnameZgramr����r����r����r����r����rb���r����r����rB���r����r����r+��ZnontermsZnontermZunreachable�ur�����infZunused_precZnum_srZnum_rrrh���r����Z resolutionZalready_reportedZruleZrejectedZwarned_neverr ���)r����r ����yacc���s���� " $ * * $$r���)<rl��r����rm���Zos.pathr����rn��rh��r(���r���r����Z yaccdebugZ debug_filer���Z default_lrr����rk���r���rD��rj��Z basestringrs��r7����maxsizer���objectr���r���rO��r���r%���r'���r+���r/���r-���r*���r,���r.���r0���r4���r5���r9���rV���rm��r����r����r����r����r����r����r����r����r����r ��r��r��r��rK��rR��rS��r���r ���r ���r ���r ����<module>>���s���� 4�������m H.���rT ������)��