관리-도구
편집 파일: pgen.cpython-311.pyc
� ���ώ��1{e��������������������������d�dl�mZmZmZ��G�d��dej��������������������Z�G�d��de������������Z�G�d��de������������Z�G�d��d e������������Z d d�Z dS�)����)�grammar�token�tokenizec�������������������������e�Zd�ZdS�)�PgenGrammarN)�__name__� __module__�__qualname__��������9/opt/alt/python311/lib64/python3.11/lib2to3/pgen2/pgen.pyr���r������s���������������Dr���r���c��������������������~�����e�Zd�Zdd�Zd��Zd��Zd��Zd��Zd��Zd��Z d ��Z d ��Zd��Zd��Z d ��Zd��Zd��Zd��Zdd�Zd��Zd��ZdS�)�ParserGeneratorNc������������������N����d�}|�t����������|d�������������}|j��������}||�_��������||�_��������t ����������j��������|j��������������������|�_��������|�������������������������������������|�� ����������������������������������\��|�_ ��������|�_��������|� �|���������������i�|�_��������|�� �����������������������������������d�S�)Nzutf-8)�encoding)�open�close�filename�streamr����generate_tokens�readline� generator�gettoken�parse�dfas�startsymbol�first�addfirstsets)�selfr���r����close_streams��� r ����__init__zParserGenerator.__init__���s����������>��(�W�5�5�5�F�!�<�L� �� ����!�1�&�/�B�B���� � ����&*�j�j�l�l�#�� �4�#��#��L�N�N�N��� ��������r���c����������� �����������t������������������������}t����������|�j�������������������������������������������������������}|������������������������������������|���������������������|�j���������������������|���������������������d|�j���������������������|D�]-}dt����������|j ��������������������z���}||j ��������|<���||j ��������|<����.|D��]}|�j��������|���������}g�}|D�]�}g�}t����������|j��������� ����������������������������������������������D�]C\��} } |���������������������|����������������������|| ������������|���������������������| ������������f��������������D|j��������r*|���������������������d|���������������������|������������f�������������|���������������������|���������������|j�����������������������������|�������������||����������������������||������������f|j��������|j ��������|���������<�����|j ��������|�j�����������������|_��������|S�)N���������)r����listr����keys�sort�remover����insert�len� symbol2number� number2symbol�sorted�arcs�items�append� make_label�index�isfinal�states� make_first�start)r����c�names�name�i�dfar4����stater.����label�nexts��� r ����make_grammarzParserGenerator.make_grammar���s�������M�M���T�Y�^�^�%�%�&�&�� � � ���� ���T�%�&�&�&� ���Q��(�)�)�)��� &�� &�D��c�!�/�*�*�*�A�$%�A�O�D�!�!%�A�O�A����� O�� O�D��)�D�/�C��F��� $�� $����#)�%�*�*:�*:�*<�*<�#=�#=��N��N�K�E�4��K�K�����E�!:�!:�C�I�I�d�O�O� L�M�M�M�M��=��7��K�K��C�I�I�e�$4�$4� 5�6�6�6�� � �d�#�#�#�#� �H�O�O�F�#�#�#�-3�T�_�_�Q��5M�5M�,N�A�F�1�?�4�(�)�)��/�$�"2�3����r���c������������������~�����|�j���������|���������}i�}t����������|������������D�]}|����������������������||������������}d||<����|S��Nr���)r���r-���r1���)r���r7���r9����rawfirstr���r=����ilabels��� r ���r5���zParserGenerator.make_first4���sM�������:�d�#�����H�%�%�� �� �E��_�_�Q��.�.�F��E�&�M�M��r���c�����������������������t����������|j��������������������}|d��������������������������������������������r�||j��������v�rI||j��������v�r |j��������|���������S�|j�����������������������������|j��������|���������d�f�������������||j��������|<���|S�t ����������t����������|d�������������}t����������|t����������������������s J�|���������������|t����������j ��������v�s J�|���������������||j��������v�r |j��������|���������S�|j�����������������������������|d�f�������������||j��������|<���|S�|d���������dv�s J�|���������������t����������|������������}|d��������������������������������������������rH||j ��������v�r |j ��������|���������S�|j�����������������������������t����������j��������|f�������������||j ��������|<���|S�t����������j��������|���������}||j��������v�r |j��������|���������S�|j�����������������������������|d�f�������������||j��������|<���|S�)Nr#���)�"�')r*����labels�isalphar+����symbol2labelr0����getattrr���� isinstance�int�tok_name�tokens�eval�keywords�NAMEr����opmap)r���r7���r=���rC����itoken�values��� r ���r1���zParserGenerator.make_label=���s�������Q�X������8������) "����'�'��A�N�*�*��>�%�0�0��H�O�O�Q�_�U�%;�T�$B�C�C�C�,2�A�N�5�)�!�M��!���t�4�4��!�&�#�.�.�5�5��5�5�.����/�/�/��/�/�/��Q�X�%�%��8�F�+�+��H�O�O�V�T�N�3�3�3�'-�A�H�V�$�!�M����8�z�)�)�)�5�)�)�)���K�K�E��Q�x���!�!�� "��A�J�&�&��:�e�,�,��H�O�O�U�Z��$7�8�8�8�(.�A�J�u�%�!�M��!��u�-���Q�X�%�%��8�F�+�+��H�O�O�V�T�N�3�3�3�'-�A�H�V�$�!�Mr���c�����������������������t����������|�j�������������������������������������������������������}|������������������������������������|D�] }||�j��������vr|����������������������|��������������!d�S��N)r%���r���r&���r'���r���� calcfirst)r���r8���r9���s��� r ���r���zParserGenerator.addfirstsetsk���sa�������T�Y�^�^�%�%�&�&�� � � ������ %�� %�D��4�:�%�%����t�$�$�$�� %�� %r���c����������� �������.����|�j���������|���������}d�|�j��������|<���|d���������}i�}i�}|j�������������������������������������������D�]�\��}}||�j���������v�rh||�j��������v�r"|�j��������|���������}|�t ����������d|z���������������n"|����������������������|�������������|�j��������|���������}|���������������������|�������������|||<����vd||<���|di||<�����i�} |�����������������������������������D�]4\��}} | D�],}|| v�r!t ����������d|�d|�d|�d| |������������������������|| |<����-�5||�j��������|<���d�S�)Nr#���zrecursion for rule %rr���zrule z is ambiguous; z is in the first sets of z as well as )r���r���r.���r/���� ValueErrorrW����update)r���r9���r;���r<����totalset�overlapcheckr=���r>����fset�inverse�itsfirst�symbols��� r ���rW���zParserGenerator.calcfirsts���s�������i��o���� �4���A������� �:�+�+�-�-�� 1�� 1�K�E�4��� �!�!��D�J�&�&��:�e�,�D��|�(�)@�4�)G�H�H�H��$���N�N�5�)�)�)��:�e�,�D�����%�%�%�&*��U�#�#�"#����',�a�j��U�#�#���+�1�1�3�3�� (�� (�O�E�8�"�� (�� (���W�$�$�$�*�&*�d�d�F�F�F�E�E�E�7�6�?�?�&L��M��M��M��#(����� (��$�� �4���r���c������������������t����i�}d�}|�j���������t����������j��������k�����r|�j���������t����������j��������k����r)|�������������������������������������|�j���������t����������j��������k�����)|����������������������t����������j��������������������}|����������������������t����������j��������d�������������|������������������������������������\��}}|����������������������t����������j���������������������|�� ��������������������||������������}t����������|������������}|����������������������|�������������t����������|������������}|||<���|�|}|�j���������t����������j��������k������||fS�)N�:)�typer���� ENDMARKER�NEWLINEr����expectrQ����OP� parse_rhs�make_dfar*����simplify_dfa) r���r���r���r9����a�zr;����oldlen�newlens ��� r ���r���zParserGenerator.parse����s ����������i�5�?�*�*��)�u�}�,�,�� � ������)�u�}�,�,���;�;�u�z�*�*�D��K�K���#�&�&�&��>�>�#�#�D�A�q��K�K�� �&�&�&��-�-��1�%�%�C���X�X�F����c�"�"�"���X�X�F��D��J��"�"��#��i�5�?�*�*�$��[� � r���c����������� ������������t����������|t����������������������sJ��t����������|t����������������������sJ���fd�}�fd��t�����������||������������|������������g}|D�]�}i�}|j��������D�]1}|j��������D�]'\��}} |� ��| |���������������������|i���������������������������(�2t ����������|�����������������������������������������������D�]R\��}} |D�]}|j��������| k����r�n&�t����������| |������������}|���������������������|�������������|� ��������������������||��������������S��|S�)Nc������������������$������i�}��|�|�������������|S�rV���r���)r<����base� addclosures��� �r ����closurez)ParserGenerator.make_dfa.<locals>.closure����s��������D��J�u�d�#�#�#��Kr���c������������������������t����������|�t����������������������sJ��|�|v�rd�S�d||�<���|�j��������D�]\��}}|���||��������������d�S�rA���)rK����NFAStater.���)r<���rq���r=���r>���rr���s��� �r ���rr���z,ParserGenerator.make_dfa.<locals>.addclosure����sg��������e�X�.�.�.�.�.���}�}����D��K�$�z�� +�� +���t��=��J�t�T�*�*�*�� +�� +r���) rK���ru����DFAState�nfasetr.���� setdefaultr-���r/���r0����addarc) r���r6����finishrs���r4���r<���r.����nfastater=���r>���rw����strr���s ��� @r ���ri���zParserGenerator.make_dfa����s{������ ��%��*�*�*�*�*��&�(�+�+�+�+�+� �� �� �� �� � +�� +�� +�� +�� +���7�7�5�>�>�6�2�2�3���� (�� (�E��D�!�L�� E�� E��#+�=��E��E�K�E�4��(�"� �4������)C�)C�D�D�D��E��"(�� � ���!5�!5�� (�� (� ��v� ��&��&�B��y�F�*�*����+��"�&�&�1�1�B��M�M�"�%�%�%����R��'�'�'�'� (��� r���c������������������l����t����������d|�������������|g}t����������|������������D�]�\��}}t����������d|||u�rdpd�������������|j��������D�]l\��}}||v�r|���������������������|������������} n$t ����������|������������} |���������������������|�������������|�t����������d| z����������������Xt����������d|| fz����������������m��d�S�)NzDump of NFA for� State�(final)��z -> %d� %s -> %d)�print� enumerater.���r2���r*���r0���) r���r9���r6���rz����todor:���r<���r=���r>����js ��� r ����dump_nfazParserGenerator.dump_nfa����s������� ���&�&�&��w��!�$���� 7�� 7�H�A�u��)�Q���� =�I� C��D�D�D�$�z�� 7�� 7���t��4�<�<�� � �4�(�(�A�A��D� � �A��K�K��%�%�%��=��+��/�*�*�*�*��.�E�1�:�5�6�6�6�6� 7� 7�� 7r���c����������� �������*����t����������d|�������������t����������|������������D�]r\��}}t����������d||j��������rdpd�������������t����������|j�������������������������������������������������������D�],\��}}t����������d||���������������������|������������fz����������������-�sd�S�)NzDump of DFA forr~���r���r����r����)r����r����r3���r-���r.���r/���r2���)r���r9���r;���r:���r<���r=���r>���s��� r ����dump_dfazParserGenerator.dump_dfa����s������� ���&�&�&�!�#���� A�� A�H�A�u��)�Q�� � ;�)� A�r�B�B�B�%�e�j�&6�&6�&8�&8�9�9�� A�� A���t��n��s�y�y����'?�?�@�@�@�@� A� A�� Ar���c������������������������d}|rnd}t����������|������������D�]X\��}}t����������|dz���t����������|������������������������D�]2}||���������}||k����r"||=�|D�]}|���������������������||��������������d}�n�3�Y|�ld�S�d�S�)NTFr���)r�����ranger*���� unifystate)r���r;����changesr:����state_ir�����state_jr<���s��� r ���rj���zParserGenerator.simplify_dfa����s������������ ��G�'��n�n�� �� � ��7��q��s�C��H�H�-�-�����A�!�!�f�G��'�)�)���F�%(��?��?�E�!�,�,�W�g�>�>�>�>�"&���� �*����� �� �� �� �� r���c����������������������|�������������������������������������\��}}|�j��������dk����r||fS�t������������������������}t������������������������}|���������������������|�������������|���������������������|�������������|�j��������dk����r`|�������������������������������������|�������������������������������������\��}}|���������������������|�������������|���������������������|�������������|�j��������dk�����`||fS�)N�|)� parse_altrT���ru���ry���r���)r���rk���rl����aa�zzs��� r ���rh���zParserGenerator.parse_rhs����s��������~�~�����1��:�����a�4�K����B����B��I�I�a�L�L�L� �H�H�R�L�L�L��*��#�#�� � �����~�~�'�'���1�� � �!����������� ��*��#�#� ��r�6�Mr���c������������������4����|�������������������������������������\��}}|�j��������dv�s|�j��������t����������j��������t����������j��������fv�rV|�������������������������������������\��}}|���������������������|�������������|}|�j��������dv��7|�j��������t����������j��������t����������j��������fv��V||fS�)N)�(�[)� parse_itemrT���rc���r���rQ����STRINGry���)r���rk����br7����ds��� r ���r����zParserGenerator.parse_alt ��s���������� � ���1��z�Z�'�'��y�U�Z���6�6�6��?�?�$�$�D�A�q� �H�H�Q�K�K�K��A� ��z�Z�'�'��y�U�Z���6�6�6���!�t�r���c����������������������|�j���������dk����rd|�������������������������������������|������������������������������������\��}}|����������������������t����������j��������d�������������|���������������������|�������������||fS�|������������������������������������\��}}|�j���������}|dvr||fS�|�������������������������������������|���������������������|�������������|dk����r||fS�||fS�)Nr�����])�+�*r����)rT���r���rh���rf���r���rg���ry���� parse_atom)r���rk���rl���rT���s��� r ���r����zParserGenerator.parse_item��s��������:�����M�M�O�O�O��>�>�#�#�D�A�q��K�K���#�&�&�&� �H�H�Q�K�K�K��a�4�K��?�?�$�$�D�A�q��J�E��J�&�&��!�t���M�M�O�O�O� �H�H�Q�K�K�K���|�|��!�t���!�t�r���c�����������������������|�j���������dk����rO|�������������������������������������|������������������������������������\��}}|����������������������t����������j��������d�������������||fS�|�j��������t����������j��������t����������j��������fv�rOt������������������������}t������������������������}|� ��������������������||�j����������������������|�������������������������������������||fS�|����������������������d|�j��������|�j����������������������d�S�)Nr�����)z+expected (...) or NAME or STRING, got %s/%s)rT���r���rh���rf���r���rg���rc���rQ���r����ru���ry����raise_error)r���rk���rl���s��� r ���r����zParserGenerator.parse_atom(��s��������:�����M�M�O�O�O��>�>�#�#�D�A�q��K�K���#�&�&�&��a�4�K� �Y�5�:�u�|�4� 4� 4�� � �A�� � �A� �H�H�Q�� �#�#�#��M�M�O�O�O��a�4�K����J�!�Y�� � 4�� 4�� 4�� 4�� 4r���c�����������������������|�j���������|k����s |�.|�j��������|k����r#|����������������������d|||�j���������|�j���������������������|�j��������}|�������������������������������������|S�)Nzexpected %s/%s, got %s/%s)rc���rT���r����r���)r���rc���rT���s��� r ���rf���zParserGenerator.expect9��sd�������9�����!2�t�z�U�7J�7J����8�!�5�$�)�T�Z� A�� A�� A�� ��� � �����r���c����������������������t����������|�j��������������������}|d���������t����������j��������t����������j��������fv�r4t����������|�j��������������������}|d���������t����������j��������t����������j��������fv��4|\��|�_��������|�_��������|�_��������|�_��������|�_ ��������d�S�)Nr#���) r>���r���r����COMMENT�NLrc���rT����begin�end�line)r����tups��� r ���r���zParserGenerator.gettokenA��sr�������4�>�"�"���!�f��)�8�;�7�7�7��t�~�&�&�C���!�f��)�8�;�7�7�7�AD�>�� �4�:�t�z�4�8�T�Y�Y�Yr���c����������� ������������|rG �||z��}n@#��d����������������������|gt����������t����������t����������|������������������������z���������������}Y�nxY�wt ����������||�j��������|�j��������d���������|�j��������d���������|�j��������f�������������)N� r#���r���)�joinr%����map�str�SyntaxErrorr���r����r����)r����msg�argss��� r ���r����zParserGenerator.raise_errorH��s��������� =� =��D�j���� =��h�h��u�t�C��T�N�N�';�';�;�<�<��������#�� �t�x��{� $����T�Y� 8��9��9�� 9s ���� ��;ArV���)r���r ���r ���r!���r?���r5���r1���r���rW���r���ri���r����r����rj���rh���r����r����r����rf���r���r����r���r���r ���r���r��� ���s4������������� �� �� �� ������2�����,"��,"��,"�\%��%��%�$��$��$�<!��!��!�0"��"��"�H7��7��7� A��A��A������*�����"����������(4��4��4�"�������E��E��E�9��9��9��9��9r���r���c�������������������������e�Zd�Zd��Zdd�ZdS�)ru���c�����������������������g�|�_���������d�S�rV���)r.���)r���s��� r ���r!���zNFAState.__init__S��s �������� � � r���Nc�����������������������|�t����������|t����������������������sJ��t����������|t����������������������sJ��|�j�����������������������������||f�������������d�S�rV���)rK���r����ru���r.���r0����r���r>���r=���s��� r ���ry���zNFAState.addarcV��sP�������}� �5�#� 6� 6�}�}�6��$��)�)�)�)�)�� ���%���'�'�'�'�'r���rV���)r���r ���r ���r!���ry���r���r���r ���ru���ru���Q��s7�������������������(��(��(��(��(��(r���ru���c��������������������*�����e�Zd�Zd��Zd��Zd��Zd��ZdZdS�)rv���c������������������������t����������|t����������������������sJ��t����������t����������t����������|������������������������t����������������������sJ��t����������|t����������������������sJ��||�_��������||v�|�_��������i�|�_��������d�S�rV���)rK����dictr>����iterru���rw���r3���r.���)r���rw����finals��� r ���r!���zDFAState.__init__]��so�������&�$�'�'�'�'�'��$�t�F�|�|�,�,�h�7�7�7�7�7��%��*�*�*�*�*����������� � � r���c�����������������������t����������|t����������������������sJ��||�j��������vsJ��t����������|t����������������������sJ��||�j��������|<���d�S�rV���)rK���r����r.���rv���r����s��� r ���ry���zDFAState.addarce��sS�������%��%�%�%�%�%��D�I�%�%�%�%��$��)�)�)�)�)��� �%���r���c������������������`�����|�j��������������������������������������������D�]\��}}||u�r ||�j���������|<����d�S�rV���)r.���r/���)r����old�newr=���r>���s��� r ���r����zDFAState.unifystatek��sA�������9�?�?�,�,�� '�� '�K�E�4��s�{�{�#&�� �%� �� '�� 'r���c������������������,����t����������|t����������������������sJ��|�j��������|j��������k����rdS�t����������|�j��������������������t����������|j��������������������k����rdS�|�j�������������������������������������������D�]$\��}}||j�����������������������������|������������ur�dS��%dS�)NFT)rK���rv���r3���r*���r.���r/����get)r����otherr=���r>���s��� r ����__eq__zDFAState.__eq__p��s��������%��*�*�*�*�*��<�5�=�(�(��5���t�y�>�>�S���_�_�,�,��5��9�?�?�,�,�� �� �K�E�4��5�:�>�>�%�0�0�0�0��u�u��1��tr���N)r���r ���r ���r!���ry���r����r�����__hash__r���r���r ���rv���rv���[��sQ������������������� �� �� �'��'��'� �������H�H�Hr���rv����Grammar.txtc������������������H�����t����������|�������������}|�����������������������������������S�rV���)r���r?���)r����ps��� r ����generate_grammarr�������s��������!�!�A��>�>���r���N)r����)r����r���r���r����Grammarr����objectr���ru���rv���r����r���r���r ����<module>r�������s������ �'��&��&��&��&��&��&��&��&��&� �� �� �� �� �'�/�� �� �� �E9��E9��E9��E9��E9�f��E9��E9��E9�N (��(��(��(��(�v��(��(��(�#��#��#��#��#�v��#��#��#�J����������r���