Edit File: pgen.cpython-36.pyc
3 � \�5������������������@���sd���d�dl�mZmZmZ�G�dd��dej�ZG�dd��de�ZG�dd��de�ZG�dd ��d e�Z ddd�Z d S�)����)�grammar�token�tokenizec���������������@���s���e�Zd�ZdS�)�PgenGrammarN)�__name__� __module__�__qualname__��r ���r ����*/usr/lib64/python3.6/lib2to3/pgen2/pgen.pyr������s���r���c���������������@���s����e�Zd�Zd&dd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��Zd'd d!�Zd"d#��Zd$d%��ZdS�)(�ParserGeneratorNc�������������C���sl���d�}|d�krt�|�}|j}||�_||�_tj|j�|�_|�j���|�j ��\|�_ |�_|d�k rZ|���i�|�_|�j ���d�S�)N)�open�close�filename�streamr����generate_tokens�readline� generator�gettoken�parse�dfas�startsymbol�first�addfirstsets)�selfr���r���Zclose_streamr ���r ���r ����__init__���s����zParserGenerator.__init__c�������������C���s*��t���}t|�jj���}|j���|j|�j��|jd|�j��x.|D�]&}dt|j ��}||j |<�||j |<�q<W�x�|D�]�}|�j|�}g�}xl|D�]d}g�}x6t|jj ���D�]$\} } |j|�j|| �|j| �f��q�W�|jr�|jd|j|�f��|j|��q�W�|jj|��||�j||�f|j|j |�<�qlW�|j |�j�|_|S�)N���������)r����listr����keys�sort�remover����insert�len� symbol2numberZ number2symbol�sorted�arcs�items�append� make_label�index�isfinal�states� make_first�start)r����c�names�name�i�dfar+����stater%����label�nextr ���r ���r ����make_grammar���s.���� zParserGenerator.make_grammarc�������������C���s8���|�j�|�}i�}x$t|�D�]}|�j||�}d||<�qW�|S�)Nr���)r���r$���r(���)r���r.���r0���Zrawfirstr���r4����ilabelr ���r ���r ���r,���4���s���� zParserGenerator.make_firstc�������������C���sb��t�|j�}|d�j��r�||jkrZ||jkr4|j|�S�|jj|j|�d�f��||j|<�|S�nbtt|d��}t|t �sxt |��|tjks�t |��||jkr�|j|�S�|jj|d�f��||j|<�|S�n�|d�dks�t |��t |�}|d�j���r ||jk��r�|j|�S�|jjtj|f��||j|<�|S�n>tj|�}||jk�r@|j|�S�|jj|d�f��||j|<�|S�d�S�)Nr����"�')r8���r9���)r"���Zlabels�isalphar#���Zsymbol2labelr'����getattrr���� isinstance�int�AssertionError�tok_name�tokens�eval�keywords�NAMEr���Zopmap)r���r.���r4���r7���Zitoken�valuer ���r ���r ���r(���=���s<���� zParserGenerator.make_labelc�������������C���s<���t�|�jj���}|j���x |D�]}||�jkr|�j|��qW�d�S�)N)r���r���r���r���r���� calcfirst)r���r/���r0���r ���r ���r ���r���k���s ���� zParserGenerator.addfirstsetsc���������� ���C���s ��|�j�|�}d�|�j|<�|d�}i�}i�}x�|jj��D�]x\}}||�j�kr�||�jkrl|�j|�}|d�kr�td|���n|�j|��|�j|�}|j|��|||<�q0d||<�|di||<�q0W�i�} xJ|j��D�]>\}} x4| D�],}|| kr�td|||| |�f���|| |<�q�W�q�W�||�j|<�d�S�)Nr���zrecursion for rule %rr���zArule %s is ambiguous; %s is in the first sets of %s as well as %s)r���r���r%���r&���� ValueErrorrE����update)r���r0���r2���r3���ZtotalsetZoverlapcheckr4���r5����fsetZinverseZitsfirstZsymbolr ���r ���r ���rE���s���s2���� zParserGenerator.calcfirstc������� ������C���s����i�}d�}x�|�j�tjkr�x|�j�tjkr.|�j���qW�|�jtj�}|�jtjd��|�j��\}}|�jtj��|�j ||�}t |�}|�j|��t |�}|||<�|d�kr |}q W�||fS�)N�:)�typer���� ENDMARKER�NEWLINEr����expectrC����OP� parse_rhs�make_dfar"����simplify_dfa) r���r���r���r0����a�zr2���ZoldlenZnewlenr ���r ���r ���r�������s"���� zParserGenerator.parsec����������������s����t�|t�st�t�|t�st���fdd�}��fdd���t||�|�g}x�|D�]�}i�}x<|jD�]2}x,|jD�]"\}} |d�k rf��| |j|i����qfW�qZW�xRt|j���D�]B\}} x,|D�]}|j| kr�P�q�W�t| |�}|j |��|j ||��q�W�qJW�|S�)Nc����������������s���i�}��|�|��|S�)Nr ���)r3����base)� addclosurer ���r ����closure����s���� z)ParserGenerator.make_dfa.<locals>.closurec����������������sL���t�|�t�st�|�|krd�S�d||�<�x$|�jD�]\}}|d�kr*��||��q*W�d�S�)Nr���)r<����NFAStater>���r%���)r3���rT���r4���r5���)rU���r ���r ���rU�������s����z,ParserGenerator.make_dfa.<locals>.addclosure)r<���rW���r>����DFAState�nfasetr%���� setdefaultr$���r&���r'����addarc)r���r-����finishrV���r+���r3���r%���Znfastater4���r5���rY����str ���)rU���r ���rP�������s&���� zParserGenerator.make_dfac������� ������C���s����t�d|��|g}x�t|�D�]�\}}t�d|||kr4dp6d��x^|jD�]T\}}||kr^|j|�} nt|�} |j|��|d�kr�t�d| ���qBt�d|| f���qBW�qW�d�S�)NzDump of NFA forz Statez(final)��z -> %dz %s -> %d)�print� enumerater%���r)���r"���r'���) r���r0���r-���r\���Ztodor1���r3���r4���r5����jr ���r ���r ����dump_nfa����s���� zParserGenerator.dump_nfac�������������C���sl���t�d|��x\t|�D�]P\}}t�d||jr,dp.d��x0t|jj���D�]\}}t�d||j|�f���qBW�qW�d�S�)NzDump of DFA forz Statez(final)r^���z %s -> %d)r_���r`���r*���r$���r%���r&���r)���)r���r0���r2���r1���r3���r4���r5���r ���r ���r ����dump_dfa����s ���� zParserGenerator.dump_dfac�������������C���s~���d}xt|rxd}xft�|�D�]Z\}}xPt|d�t|��D�]:}||�}||kr4||=�x|D�]}|j||��qTW�d}P�q4W�qW�qW�d�S�)NTFr���)r`����ranger"���� unifystate)r���r2���Zchangesr1���Zstate_ira���Zstate_jr3���r ���r ���r ���rQ�������s���� zParserGenerator.simplify_dfac�������������C���s����|�j���\}}|�jdkr||fS�t��}t��}|j|��|j|��x6|�jdkrt|�j���|�j���\}}|j|��|j|��q@W�||fS�d�S�)N�|)� parse_altrD���rW���r[���r���)r���rR���rS���ZaaZzzr ���r ���r ���rO�������s���� zParserGenerator.parse_rhsc�������������C���sP���|�j���\}}x:|�jdks*|�jtjtjfkrF|�j���\}}|j|��|}qW�||fS�)N�(�[)rh���ri���)� parse_itemrD���rJ���r���rC����STRINGr[���)r���rR����br.����dr ���r ���r ���rg��� ��s���� zParserGenerator.parse_altc�������������C���s����|�j�dkr>|�j���|�j��\}}|�jtjd��|j|��||fS�|�j��\}}|�j�}|dkr`||fS�|�j���|j|��|dkr�||fS�||fS�d�S�)Nri����]�+�*)ro���rp���)rD���r���rO���rM���r���rN���r[���� parse_atom)r���rR���rS���rD���r ���r ���r ���rj�����s���� zParserGenerator.parse_itemc�������������C���s����|�j�dkr4|�j���|�j��\}}|�jtjd��||fS�|�jtjtjfkrpt ��}t ��}|j ||�j���|�j���||fS�|�jd|�j|�j���d�S�)Nrh����)z+expected (...) or NAME or STRING, got %s/%s)rD���r���rO���rM���r���rN���rJ���rC���rk���rW���r[����raise_error)r���rR���rS���r ���r ���r ���rq���(��s���� zParserGenerator.parse_atomc�������������C���sD���|�j�|ks|d�k r2|�j|kr2|�jd|||�j�|�j��|�j}|�j���|S�)Nzexpected %s/%s, got %s/%s)rJ���rD���rs���r���)r���rJ���rD���r ���r ���r ���rM���9��s����zParserGenerator.expectc�������������C���sJ���t�|�j�}x"|d�tjtjfkr,t�|�j�}qW�|\|�_|�_|�_|�_|�_ d�S�)Nr���) r5���r���r����COMMENT�NLrJ���rD���Zbegin�end�line)r����tupr ���r ���r ���r���A��s���� zParserGenerator.gettokenc�������������G���s^���|r8y||�}W�n&���dj�|gttt|����}Y�nX�t||�j|�jd�|�jd�|�jf��d�S�)N� r���r���)�joinr����map�str�SyntaxErrorr���rv���rw���)r����msg�argsr ���r ���r ���rs���H��s���� zParserGenerator.raise_error)N)N)r���r���r���r���r6���r,���r(���r���rE���r���rP���rb���rc���rQ���rO���rg���rj���rq���rM���r���rs���r ���r ���r ���r ���r��� ���s$��� .$ r���c���������������@���s���e�Zd�Zdd��Zddd�ZdS�)rW���c�������������C���s ���g�|�_�d�S�)N)r%���)r���r ���r ���r ���r���S��s����zNFAState.__init__Nc�������������C���s8���|d�kst�|t�st�t�|t�s$t�|�jj||f��d�S�)N)r<���r|���r>���rW���r%���r'���)r���r5���r4���r ���r ���r ���r[���V��s����zNFAState.addarc)N)r���r���r���r���r[���r ���r ���r ���r ���rW���Q��s���rW���c���������������@���s0���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd Zd S�) rX���c�������������C���sL���t�|t�st�t�tt|��t�s$t�t�|t�s2t�||�_||k|�_i�|�_d�S�)N) r<����dictr>���r5����iterrW���rY���r*���r%���)r���rY����finalr ���r ���r ���r���]��s���� zDFAState.__init__c�������������C���s8���t�|t�st�||�jkst�t�|t�s*t�||�j|<�d�S�)N)r<���r|���r>���r%���rX���)r���r5���r4���r ���r ���r ���r[���e��s����zDFAState.addarcc�������������C���s.���x(|�j�j��D�]\}}||kr||�j�|<�qW�d�S�)N)r%���r&���)r����old�newr4���r5���r ���r ���r ���re���k��s����zDFAState.unifystatec�������������C���sf���t�|t�st�|�j|jkrdS�t|�j�t|j�kr6dS�x*|�jj��D�]\}}||jj|�k rBdS�qBW�dS�)NFT)r<���rX���r>���r*���r"���r%���r&����get)r����otherr4���r5���r ���r ���r ����__eq__p��s����zDFAState.__eq__N)r���r���r���r���r[���re���r�����__hash__r ���r ���r ���r ���rX���[��s ���rX����Grammar.txtc�������������C���s���t�|��}|j��S�)N)r���r6���)r����pr ���r ���r ����generate_grammar���s����r����N)r����)r^���r���r���r���ZGrammarr����objectr���rW���rX���r����r ���r ���r ���r ����<module>���s�����I %