관리-도구
편집 파일: common.cpython-37.pyc
B o|Se�2 � @ sP d dl T d dlmZmZmZ ddlmZ G dd� d�Zdd� ee��� D �Z d S ) � )�*)�delimited_list�any_open_tag� any_close_tag� )�datetimec @ s� e Zd ZdZee�Zee�Ze e ��d��e�Z e e��d��eed��Zed��d��e�Ze� �e�d e� �e� �d�Ze�d d � � eeeed��� e � B �d�Ze�e� ed ��d��e�Zed��d��e�ZeeB eB �d��� Zed��d��e�Ze ee��d�Z ed��d�Z!ed��d�Z"e"de" d �d�Z#ee"de" d �d ee"de" d � �d�Z$e$�%dd � � d e! �d!�Z&e'e#e&B e$B �d"���d"�Z(ed#��d$�Z)e*dAe+d&�d'd(��Z,e*dBe+d&�d*d+��Z-ed,��d-�Z.ed.��d/�Z/ed0��d1�Z0e1�� e2�� B Z3e*e+ee4d2�d3d4��Z5e'e6e7d5� e8� e e9d5d6� ee:d7�e;e8� d5B � � ���� �d8�Z<e=ee>�?� e<B d9d:���d;�Z@e*ed<d � ��ZAe*ed=d � ��ZBed>��d?�ZCeZDeZEe,ZFe-ZGe5ZHeAZIeBZJd@S )C�pyparsing_commona" Here are some common low-level expressions that may be useful in jump-starting parser development: - numeric forms (:class:`integers<integer>`, :class:`reals<real>`, :class:`scientific notation<sci_real>`) - common :class:`programming identifiers<identifier>` - network addresses (:class:`MAC<mac_address>`, :class:`IPv4<ipv4_address>`, :class:`IPv6<ipv6_address>`) - ISO8601 :class:`dates<iso8601_date>` and :class:`datetime<iso8601_datetime>` - :class:`UUID<uuid>` - :class:`comma-separated list<comma_separated_list>` - :class:`url` Parse actions: - :class:`convertToInteger` - :class:`convertToFloat` - :class:`convertToDate` - :class:`convertToDatetime` - :class:`stripHTMLTags` - :class:`upcaseTokens` - :class:`downcaseTokens` Example:: pyparsing_common.number.runTests(''' # any int or real number, returned as the appropriate type 100 -100 +100 3.14159 6.02e23 1e-12 ''') pyparsing_common.fnumber.runTests(''' # any int or real number, returned as float 100 -100 +100 3.14159 6.02e23 1e-12 ''') pyparsing_common.hex_integer.runTests(''' # hex numbers 100 FF ''') pyparsing_common.fraction.runTests(''' # fractions 1/2 -3/4 ''') pyparsing_common.mixed_integer.runTests(''' # mixed fractions 1 1/2 -3/4 1-3/4 ''') import uuid pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) pyparsing_common.uuid.runTests(''' # uuid 12345678-1234-5678-1234-567812345678 ''') prints:: # any int or real number, returned as the appropriate type 100 [100] -100 [-100] +100 [100] 3.14159 [3.14159] 6.02e23 [6.02e+23] 1e-12 [1e-12] # any int or real number, returned as float 100 [100.0] -100 [-100.0] +100 [100.0] 3.14159 [3.14159] 6.02e23 [6.02e+23] 1e-12 [1e-12] # hex numbers 100 [256] FF [255] # fractions 1/2 [0.5] -3/4 [-0.75] # mixed fractions 1 [1] 1/2 [0.5] -3/4 [-0.75] 1-3/4 [1.75] # uuid 12345678-1234-5678-1234-567812345678 [UUID('12345678-1234-5678-1234-567812345678')] �integerzhex integer� z[+-]?\d+zsigned integer�/�fractionc C s | d | d S )Nr ���� )�ttr r ��/builddir/build/BUILDROOT/alt-python37-pyparsing-3.0.9-2.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pyparsing/common.py�<lambda>� � zpyparsing_common.<lambda>�-z"fraction or mixed integer-fractionz[+-]?(?:\d+\.\d*|\.\d+)zreal numberz@[+-]?(?:\d+(?:[eE][+-]?\d+)|(?:\d+\.\d*|\.\d+)(?:[eE][+-]?\d+)?)z$real number with scientific notation�numberz[+-]?\d+\.?\d*([eE][+-]?\d+)?�fnumber� identifierzK(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}zIPv4 addressz[0-9a-fA-F]{1,4}�hex_integer�:� zfull IPv6 address)r � z::zshort IPv6 addressc C s t dd� | D ��dk S )Nc s s | ]}t j�|�rd V qdS )r N)r � _ipv6_part�matches)�.0r r r r � <genexpr>� s z,pyparsing_common.<lambda>.<locals>.<genexpr>� )�sum)�tr r r r � r z::ffff:zmixed IPv6 addresszIPv6 addressz:[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}zMAC address�%Y-%m-%d)�fmtc s � fdd�}|S )a� Helper to create a parse action for converting parsed date string to Python datetime.date Params - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%d"``) Example:: date_expr = pyparsing_common.iso8601_date.copy() date_expr.setParseAction(pyparsing_common.convertToDate()) print(date_expr.parseString("1999-12-31")) prints:: [datetime.date(1999, 12, 31)] c sL yt �|d � ��� S tk rF } zt| |t|���W d d }~X Y nX d S )Nr )r �strptime�date� ValueError�ParseException�str)�ssZllr �ve)r# r r �cvt_fn s z0pyparsing_common.convert_to_date.<locals>.cvt_fnr )r# r+ r )r# r �convert_to_date� s z pyparsing_common.convert_to_date�%Y-%m-%dT%H:%M:%S.%fc s � fdd�}|S )a Helper to create a parse action for converting parsed datetime string to Python datetime.datetime Params - - fmt - format to be passed to datetime.strptime (default= ``"%Y-%m-%dT%H:%M:%S.%f"``) Example:: dt_expr = pyparsing_common.iso8601_datetime.copy() dt_expr.setParseAction(pyparsing_common.convertToDatetime()) print(dt_expr.parseString("1999-12-31T23:59:59.999")) prints:: [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)] c sH yt �|d � �S tk rB } zt| |t|���W d d }~X Y nX d S )Nr )r r$ r&