
    j	iO#                     ^   d Z ddlmZ  G d de          Z eddddd	          Zd
Zej        ZeZdZd	dl	T d	dl
T d	dlT d	dlmZmZ d	dlT d	dlT d	dlmZ d	dlT d	dlmZ d	dlmZmZmZ d	dlmZ d	dlmZmZ d e            vreZd e            vreZd e            vreZeeez   z  Zg dZdS )a  
pyparsing - Classes and methods to define and execute parsing grammars
======================================================================

Pyparsing is an alternative approach to creating and executing simple
grammars, vs. the traditional lex/yacc approach, or the use of regular
expressions.  With pyparsing, you don't need to learn a new syntax for
defining grammars or matching expressions - the parsing module provides
a library of classes that you use to construct the grammar directly in
Python.

Here is a program to parse "Hello, World!" (or any greeting of the form
``"<salutation>, <addressee>!"``), built up using :class:`Word`,
:class:`Literal`, and :class:`And` elements
(the :meth:`'+'<ParserElement.__add__>` operators create :class:`And` expressions,
and the strings are auto-converted to :class:`Literal` expressions):

.. testcode::

    from pyparsing import Word, alphas

    # define grammar of a greeting
    greet = Word(alphas) + "," + Word(alphas) + "!"

    hello = "Hello, World!"
    print(hello, "->", greet.parse_string(hello))

The program outputs the following:

.. testoutput::

    Hello, World! -> ['Hello', ',', 'World', '!']

The Python representation of the grammar is quite readable, owing to the
self-explanatory class names, and the use of :class:`'+'<And>`,
:class:`'|'<MatchFirst>`, :class:`'^'<Or>` and :class:`'&'<Each>` operators.

The :class:`ParseResults` object returned from
:class:`ParserElement.parse_string` can be
accessed as a nested list, a dictionary, or an object with named
attributes.

The pyparsing module handles some of the problems that are typically
vexing when writing text parsers:

  - extra or missing whitespace (the above program will also handle
    "Hello,World!", "Hello  ,  World  !", etc.)
  - quoted strings
  - embedded comments


Getting Started
---------------
Visit the classes :class:`ParserElement` and :class:`ParseResults` to
see the base classes that most other pyparsing
classes inherit from. Use the docstrings for examples of how to:

 - construct literal match expressions from :class:`Literal` and
   :class:`CaselessLiteral` classes
 - construct character word-group expressions using the :class:`Word`
   class
 - see how to create repetitive expressions using :class:`ZeroOrMore`
   and :class:`OneOrMore` classes
 - use :class:`'+'<And>`, :class:`'|'<MatchFirst>`, :class:`'^'<Or>`,
   and :class:`'&'<Each>` operators to combine simple expressions into
   more complex ones
 - associate names with your parsed results using
   :class:`ParserElement.set_results_name`
 - access the parsed data, which is returned as a :class:`ParseResults`
   object
 - find some helpful expression short-cuts like :class:`DelimitedList`
   and :class:`one_of`
 - find more useful common expressions in the :class:`pyparsing_common`
   namespace class
    )
NamedTuplec                   d    e Zd ZU eed<   eed<   eed<   eed<   eed<   ed             Zd Zd Z	d	S )
version_infomajorminormicroreleaselevelserialc                     | j          d| j         d| j         | j        d         dk    rdnd | j        d          | j         df| j        dk             z   S )N.r   cr final)r   r   r   r	   r
   selfs    J/srv/django_bis/venv311/lib/python3.11/site-packages/pyparsing/__init__.py__version__zversion_info.__version__n   s}     z55DJ5555+A.#55332bt?PQR?SbUYU`bb 7*,,	
    c                 4    t            d| j         dt           S )N z / )__name__r   __version_time__r   s    r   __str__zversion_info.__str__x   s"    DDT-DD2BDDDr   c                     t            dt          |           j          dd                    d t          | j        |           D                        dS )Nr   (z, c              3   *   K   | ]} d j         | V  dS )z{}={!r}N)format).0nvs     r   	<genexpr>z(version_info.__repr__.<locals>.<genexpr>|   s.      <u<uWY=MY=Mr=R<u<u<u<u<u<ur   ))r   typejoinzip_fieldsr   s    r   __repr__zversion_info.__repr__{   sU    xxT$ZZ0xx499<u<u]`aeamos]t]t<u<u<u3u3uxxxxr   N)
r   
__module____qualname__int__annotations__strpropertyr   r   r'    r   r   r   r   g   s         JJJJJJJJJKKK
 
 X
E E Ey y y y yr   r            r      z16 Sep 2025 22:24 UTCz+Paul McGuire <ptmcg.gm+pyparsing@gmail.com>)*)__diag__
__compat__)_builtin_exprs)unicode_setUnicodeRangeListpyparsing_unicode)pyparsing_test)pyparsing_commonr6   r9   r;   r:   )r   r   
__author__r5   r4   AndAtLineStartAtStringStartCaselessKeywordCaselessLiteral
CharsNotIn
CloseMatchCombineDelimitedListDictEachEmpty
FollowedByForward
GoToColumnGroupIndentedBlockKeywordLineEnd	LineStartLiteralLocated
PrecededBy
MatchFirstNoMatchNotAny	OneOrMoreOnlyOnceOpAssocOptOptionalOrParseBaseExceptionParseElementEnhanceParseExceptionParseExpressionParseFatalExceptionParseResultsParseSyntaxExceptionParserElementPositionTokenQuotedStringRecursiveGrammarExceptionRegexSkipTo	StringEndStringStartSuppressTagTokenTokenConverterWhiteWordWordEnd	WordStart
ZeroOrMoreChar	alphanumsalphas
alphas8bitany_close_tagany_open_tagautoname_elementsc_style_commentcolcommon_html_entitycondition_as_parse_actioncounted_arraycpp_style_commentdbl_quoted_stringdbl_slash_commentdelimited_listdict_ofemptyhexnumshtml_comment
identcharsidentbodycharsinfix_notationjava_style_commentlineline_end
line_startlinenomake_html_tagsmake_xml_tagsmatch_only_at_colmatch_previous_exprmatch_previous_literalnested_exprnull_debug_actionnumsone_oforiginal_text_for
printablespunc8bitr;   r:   r9   python_style_commentquoted_stringremove_quotesreplace_withreplace_html_entityrest_of_linesgl_quoted_stringsrange
string_endstring_start	token_maptrace_parse_actionungroupr7   unicode_stringwith_attribute
with_class__versionTime__anyCloseTag
anyOpenTagcStyleCommentcommonHTMLEntityconditionAsParseActioncountedArraycppStyleCommentdblQuotedStringdblSlashCommentdelimitedListdictOfhtmlCommentindentedBlockinfixNotationjavaStyleCommentlineEnd	lineStartlocatedExprmakeHTMLTagsmakeXMLTagsmatchOnlyAtColmatchPreviousExprmatchPreviousLiteral
nestedExprnullDebugActiononeOfopAssocoriginalTextForpythonStyleCommentquotedStringremoveQuotesreplaceHTMLEntityreplaceWith
restOfLinesglQuotedString	stringEndstringStarttokenMaptraceParseActionunicodeStringwithAttribute	withClasscommonunicodetestingN)__doc__typingr   r   __version_info__r   r   r   r<   util
exceptionsactionscorer4   r5   resultsr6   core_builtin_exprshelpershelper_builtin_exprsr   r7   r8   r9   r   r:   r   r;   common_builtin_exprsglobals__all__r.   r   r   <module>r      s  2JV      y y y y y: y y y0  <1a!44 * *":
             & & & & & & & &         6 6 6 6 6 6     ; ; ; ; ; ; P P P P P P P P P P . . . . . .        ggii''WWYY&&7799$$N *-AA A i i ir   