aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/pyparsing/py3/README.rst
blob: d0fb1e2cdd4fd7ec092c5eab50f83fe578954c3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
PyParsing -- A Python Parsing Module 
==================================== 
 
|Build Status| |Coverage|
 
Introduction 
============ 
 
The pyparsing module is an alternative approach to creating and 
executing simple grammars, vs. the traditional lex/yacc approach, or the 
use of regular expressions. The pyparsing module provides a library of 
classes that client code uses to construct the grammar directly in 
Python code. 
 
*[Since first writing this description of pyparsing in late 2003, this 
technique for developing parsers has become more widespread, under the 
name Parsing Expression Grammars - PEGs. See more information on PEGs*
`here <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`__
*.]*
 
Here is a program to parse ``"Hello, World!"`` (or any greeting of the form 
``"salutation, addressee!"``): 
 
.. code:: python 
 
    from pyparsing import Word, alphas 
    greet = Word(alphas) + "," + Word(alphas) + "!" 
    hello = "Hello, World!" 
    print(hello, "->", greet.parseString(hello)) 
 
The program outputs the following:: 
 
    Hello, World! -> ['Hello', ',', 'World', '!'] 
 
The Python representation of the grammar is quite readable, owing to the 
self-explanatory class names, and the use of '+', '|' and '^' operator 
definitions. 
 
The parsed results returned from ``parseString()`` is a collection of type
``ParseResults``, which 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 
 
The examples directory includes a simple SQL parser, simple CORBA IDL 
parser, a config file parser, a chemical formula parser, and a four- 
function algebraic notation parser, among many others. 
 
Documentation 
============= 
 
There are many examples in the online docstrings of the classes 
and methods in pyparsing. You can find them compiled into `online docs <https://pyparsing-docs.readthedocs.io/en/latest/>`__. Additional
documentation resources and project info are listed in the online 
`GitHub wiki <https://github.com/pyparsing/pyparsing/wiki>`__. An
entire directory of examples can be found `here <https://github.com/pyparsing/pyparsing/tree/master/examples>`__.
 
License 
======= 
 
MIT License. See header of the `pyparsing.py <https://github.com/pyparsing/pyparsing/blob/master/pyparsing/__init__.py#L1-L23>`__ file.
 
History 
======= 
 
See `CHANGES <https://github.com/pyparsing/pyparsing/blob/master/CHANGES>`__ file.
 
.. |Build Status| image:: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml/badge.svg
   :target: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml
.. |Coverage| image:: https://codecov.io/gh/pyparsing/pyparsing/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/pyparsing/pyparsing