Imported Upstream version 2.3.1 upstream/2.3.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 05:42:31 +0000 (14:42 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 05:42:31 +0000 (14:42 +0900)
193 files changed:
CHANGES
CODE_OF_CONDUCT.md [deleted file]
HowToUsePyparsing.html [deleted file]
LICENSE
MANIFEST.in
PKG-INFO
README.md [deleted file]
README.rst [new file with mode: 0644]
docs/CODE_OF_CONDUCT.rst [new file with mode: 0644]
docs/HowToUsePyparsing.rst [new file with mode: 0644]
docs/Makefile [new file with mode: 0644]
docs/_static/pyparsingClassDiagram.jpg [new file with mode: 0644]
docs/_static/pyparsingClassDiagram.png [new file with mode: 0644]
docs/conf.py [new file with mode: 0644]
docs/index.rst [new file with mode: 0644]
docs/modules.rst [new file with mode: 0644]
docs/pyparsing.rst [new file with mode: 0644]
examples/0README.html
examples/LAparser.py
examples/Setup.ini
examples/SimpleCalc.py
examples/SingleForm.dfm
examples/TAP.py
examples/adventureEngine.py
examples/antlr_grammar.py
examples/antlr_grammar_tests.py
examples/apicheck.py
examples/cLibHeader.py
examples/chemicalFormulas.py
examples/configParse.py
examples/cpp_enum_parser.py
examples/datetimeParseActions.py
examples/decaf_parser.py [new file with mode: 0644]
examples/deltaTime.py
examples/dfmparse.py
examples/dhcpd_leases_parser.py
examples/dictExample.py
examples/dictExample2.py
examples/ebnf.py
examples/ebnftest.py
examples/eval_arith.py
examples/excelExpr.py
examples/fourFn.py
examples/gen_ctypes.py
examples/getNTPserversNew.py
examples/greetingInGreek.py
examples/greetingInKorean.py
examples/holaMundo.py
examples/htmlStripper.py
examples/httpServerLogParser.py
examples/idlParse.py
examples/indentedGrammarExample.py
examples/invRegex.py
examples/jsonParser.py
examples/linenoExample.py
examples/listAllMatches.py
examples/lucene_grammar.py
examples/macroExpander.py
examples/makeHTMLTagExample.py
examples/matchPreviousDemo.py
examples/mozillaCalendarParser.py
examples/nested.py
examples/numerics.py
examples/oc.py
examples/parsePythonValue.py
examples/parseResultsSumExample.py
examples/parseTabularData.py
examples/partial_gene_match.py
examples/pgn.py
examples/position.py
examples/protobuf_parser.py
examples/pymicko.py
examples/pythonGrammarParser.py
examples/rangeCheck.py
examples/readJson.py
examples/removeLineBreaks.py
examples/romanNumerals.py
examples/scanExamples.py
examples/scanYahoo.py
examples/searchParserAppDemo.py
examples/searchparser.py
examples/select_parser.py
examples/sexpParser.py
examples/shapes.py
examples/simpleArith.py
examples/simpleBool.py
examples/simpleSQL.py
examples/simpleWiki.py
examples/sparser.py
examples/sql2dot.py
examples/stackish.py
examples/stateMachine2.py [deleted file]
examples/test_bibparse.py
examples/urlExtractor.py
examples/urlExtractorNew.py
examples/verilogParse.py
examples/withAttribute.py
examples/wordsToNum.py
htmldoc/api-objects.txt [deleted file]
htmldoc/class-tree.html [deleted file]
htmldoc/crarr.png [deleted file]
htmldoc/epydoc.css [deleted file]
htmldoc/epydoc.js [deleted file]
htmldoc/help.html [deleted file]
htmldoc/identifier-index.html [deleted file]
htmldoc/index.html [deleted file]
htmldoc/module-tree.html [deleted file]
htmldoc/pyparsing-module.html [deleted file]
htmldoc/pyparsing-pysrc.html [deleted file]
htmldoc/pyparsing.And-class.html [deleted file]
htmldoc/pyparsing.CaselessKeyword-class.html [deleted file]
htmldoc/pyparsing.CaselessLiteral-class.html [deleted file]
htmldoc/pyparsing.Char-class.html [deleted file]
htmldoc/pyparsing.CharsNotIn-class.html [deleted file]
htmldoc/pyparsing.CloseMatch-class.html [deleted file]
htmldoc/pyparsing.Combine-class.html [deleted file]
htmldoc/pyparsing.Dict-class.html [deleted file]
htmldoc/pyparsing.Each-class.html [deleted file]
htmldoc/pyparsing.Empty-class.html [deleted file]
htmldoc/pyparsing.FollowedBy-class.html [deleted file]
htmldoc/pyparsing.Forward-class.html [deleted file]
htmldoc/pyparsing.GoToColumn-class.html [deleted file]
htmldoc/pyparsing.Group-class.html [deleted file]
htmldoc/pyparsing.Keyword-class.html [deleted file]
htmldoc/pyparsing.LineEnd-class.html [deleted file]
htmldoc/pyparsing.LineStart-class.html [deleted file]
htmldoc/pyparsing.Literal-class.html [deleted file]
htmldoc/pyparsing.MatchFirst-class.html [deleted file]
htmldoc/pyparsing.NoMatch-class.html [deleted file]
htmldoc/pyparsing.NotAny-class.html [deleted file]
htmldoc/pyparsing.OneOrMore-class.html [deleted file]
htmldoc/pyparsing.OnlyOnce-class.html [deleted file]
htmldoc/pyparsing.Optional-class.html [deleted file]
htmldoc/pyparsing.Or-class.html [deleted file]
htmldoc/pyparsing.ParseBaseException-class.html [deleted file]
htmldoc/pyparsing.ParseElementEnhance-class.html [deleted file]
htmldoc/pyparsing.ParseException-class.html [deleted file]
htmldoc/pyparsing.ParseExpression-class.html [deleted file]
htmldoc/pyparsing.ParseFatalException-class.html [deleted file]
htmldoc/pyparsing.ParseResults-class.html [deleted file]
htmldoc/pyparsing.ParseSyntaxException-class.html [deleted file]
htmldoc/pyparsing.ParserElement-class.html [deleted file]
htmldoc/pyparsing.PrecededBy-class.html [deleted file]
htmldoc/pyparsing.QuotedString-class.html [deleted file]
htmldoc/pyparsing.RecursiveGrammarException-class.html [deleted file]
htmldoc/pyparsing.Regex-class.html [deleted file]
htmldoc/pyparsing.Regex.compiledREtype-class.html [deleted file]
htmldoc/pyparsing.SkipTo-class.html [deleted file]
htmldoc/pyparsing.StringEnd-class.html [deleted file]
htmldoc/pyparsing.StringStart-class.html [deleted file]
htmldoc/pyparsing.Suppress-class.html [deleted file]
htmldoc/pyparsing.Token-class.html [deleted file]
htmldoc/pyparsing.TokenConverter-class.html [deleted file]
htmldoc/pyparsing.White-class.html [deleted file]
htmldoc/pyparsing.Word-class.html [deleted file]
htmldoc/pyparsing.WordEnd-class.html [deleted file]
htmldoc/pyparsing.WordStart-class.html [deleted file]
htmldoc/pyparsing.ZeroOrMore-class.html [deleted file]
htmldoc/pyparsing.pyparsing_common-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Arabic-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.CJK-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Chinese-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Cyrillic-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Devanagari-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Greek-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Hebrew-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Japanese-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Japanese.Kanji-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Japanese.Katakana-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Korean-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Latin1-class.html [deleted file]
htmldoc/pyparsing.pyparsing_unicode.Thai-class.html [deleted file]
htmldoc/pyparsing.unicode_set-class.html [deleted file]
htmldoc/redirect.html [deleted file]
pyparsing.egg-info/PKG-INFO
pyparsing.egg-info/SOURCES.txt
pyparsing.py
pyparsingClassDiagram.JPG [deleted file]
pyparsingClassDiagram.PNG [deleted file]
setup.cfg
setup.py
simple_unit_tests.py [new file with mode: 0644]
test/__init__.py [new file with mode: 0644]
test/__init__.pyc [new file with mode: 0644]
test/__pycache__/__init__.cpython-35.pyc [new file with mode: 0644]
test/__pycache__/jsonParserTests.cpython-35.pyc [new file with mode: 0644]
test/jsonParserTests.py [new file with mode: 0644]
test/jsonParserTests.pyc [new file with mode: 0644]
test/karthik.ini [new file with mode: 0644]
test/parsefiletest_input_file.txt [new file with mode: 0644]
unitTests.py [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index e96fee0609612a20b29440850dcaebd26698b887..675a2846468f19169866ca61da0a612729de2c41 100644 (file)
--- a/CHANGES
+++ b/CHANGES
-==========\r
-Change Log\r
-==========\r
-\r
-Version 2.3.0 - October, 2018\r
------------------------------\r
-- NEW SUPPORT FOR UNICODE CHARACTER RANGES\r
-  This release introduces the pyparsing_unicode namespace class, defining\r
-  a series of language character sets to simplify the definition of alphas,\r
-  nums, alphanums, and printables in the following language sets:\r
-   . Arabic\r
-   . Chinese\r
-   . Cyrillic\r
-   . Devanagari\r
-   . Greek\r
-   . Hebrew\r
-   . Japanese (including Kanji, Katakana, and Hirigana subsets)\r
-   . Korean\r
-   . Latin1 (includes 7 and 8-bit Latin characters)\r
-   . Thai\r
-   . CJK (combination of Chinese, Japanese, and Korean sets)\r
-\r
-  For example, your code can define words using:\r
-\r
-    korean_word = Word(pyparsing_unicode.Korean.alphas)\r
-\r
-  See their use in the updated examples greetingInGreek.py and\r
-  greetingInKorean.py.\r
-\r
-  This namespace class also offers access to these sets using their\r
-  unicode identifiers.\r
-\r
-- POSSIBLE API CHANGE: Fixed bug where a parse action that explicitly \r
-  returned the input ParseResults could add another nesting level in\r
-  the results if the current expression had a results name.\r
-\r
-        vals = pp.OneOrMore(pp.pyparsing_common.integer)("int_values")\r
-        \r
-        def add_total(tokens):\r
-            tokens['total'] = sum(tokens)\r
-            return tokens  # this line can be removed\r
-\r
-        vals.addParseAction(add_total)\r
-        print(vals.parseString("244 23 13 2343").dump())\r
-\r
-  Before the fix, this code would print (note the extra nesting level):\r
-  \r
-    [244, 23, 13, 2343]\r
-    - int_values: [244, 23, 13, 2343]\r
-      - int_values: [244, 23, 13, 2343]\r
-      - total: 2623\r
-    - total: 2623\r
-\r
-  With the fix, this code now prints:\r
-  \r
-    [244, 23, 13, 2343]\r
-    - int_values: [244, 23, 13, 2343]\r
-    - total: 2623\r
-\r
-  This fix will change the structure of ParseResults returned if a \r
-  program defines a parse action that returns the tokens that were \r
-  sent in. This is not necessary, and statements like "return tokens" \r
-  in the example above can be safely deleted prior to upgrading to \r
-  this release, in order to avoid the bug and get the new behavior.\r
-\r
-  Reported by seron in Issue #22, nice catch!\r
-\r
-- POSSIBLE API CHANGE: Fixed a related bug where a results name \r
-  erroneously created a second level of hierarchy in the returned \r
-  ParseResults. The intent for accumulating results names into ParseResults\r
-  is that, in the absence of Group'ing, all names get merged into a\r
-  common namespace. This allows us to write:\r
-  \r
-       key_value_expr = (Word(alphas)("key") + '=' + Word(nums)("value"))\r
-       result = key_value_expr.parseString("a = 100") \r
-    \r
-  and have result structured as {"key": "a", "value": "100"} \r
-  instead of [{"key": "a"}, {"value": "100"}].\r
-  \r
-  However, if a named expression is used in a higher-level non-Group \r
-  expression that *also* has a name, a false sub-level would be created \r
-  in the namespace:\r
-\r
-        num = pp.Word(pp.nums)\r
-        num_pair = ("[" + (num("A") + num("B"))("values") + "]")\r
-        U = num_pair.parseString("[ 10 20 ]")\r
-        print(U.dump())\r
-\r
-  Since there is no grouping, "A", "B", and "values" should all appear\r
-  at the same level in the results, as:\r
-  \r
-        ['[', '10', '20', ']']\r
-        - A: '10'\r
-        - B: '20'\r
-        - values: ['10', '20']\r
-\r
-  Instead, an extra level of "A" and "B" show up under "values":\r
-  \r
-        ['[', '10', '20', ']']\r
-        - A: '10'\r
-        - B: '20'\r
-        - values: ['10', '20']\r
-          - A: '10'\r
-          - B: '20'\r
-\r
-  This bug has been fixed. Now, if this hierarchy is desired, then a\r
-  Group should be added:\r
-  \r
-        num_pair = ("[" + pp.Group(num("A") + num("B"))("values") + "]")\r
-\r
-  Giving:\r
-  \r
-        ['[', ['10', '20'], ']']\r
-        - values: ['10', '20']\r
-          - A: '10'\r
-          - B: '20'\r
-\r
-  But in no case should "A" and "B" appear in multiple levels. This bug-fix\r
-  fixes that.\r
-  \r
-  If you have current code which relies on this behavior, then add or remove\r
-  Groups as necessary to get your intended results structure.\r
-  \r
-  Reported by Athanasios Anastasiou.\r
-\r
-- IndexError's raised in parse actions will get explicitly reraised \r
-  as ParseExceptions that wrap the original IndexError. Since \r
-  IndexError sometimes occurs as part of pyparsing's normal parsing \r
-  logic, IndexErrors that are raised during a parse action may have\r
-  gotten silently reinterpreted as parsing errors. To retain the \r
-  information from the IndexError, these exceptions will now be \r
-  raised as ParseExceptions that reference the original IndexError. \r
-  This wrapping will only be visible when run under Python3, since it\r
-  emulates "raise ... from ..." syntax. \r
-  \r
-  Addresses Issue #4, reported by guswns0528.\r
-\r
-- Added Char class to simplify defining expressions of a single\r
-  character. (Char("abc") is equivalent to Word("abc", exact=1))\r
-\r
-- Added class PrecededBy to perform lookbehind tests. PrecededBy is \r
-  used in the same way as FollowedBy, passing in an expression that\r
-  must occur just prior to the current parse location.\r
-  \r
-  For fixed-length expressions like a Literal, Keyword, Char, or a \r
-  Word with an `exact` or `maxLen` length given, `PrecededBy(expr)` \r
-  is sufficient. For varying length expressions like a Word with no \r
-  given maximum length, `PrecededBy` must be constructed with an \r
-  integer `retreat` argument, as in \r
-  `PrecededBy(Word(alphas, nums), retreat=10)`, to specify the maximum \r
-  number of characters pyparsing must look backward to make a match. \r
-  pyparsing will check all the values from 1 up to retreat characters \r
-  back from the current parse location.\r
-\r
-  When stepping backwards through the input string, PrecededBy does \r
-  *not* skip over whitespace.\r
-  \r
-  PrecededBy can be created with a results name so that, even though\r
-  it always returns an empty parse result, the result *can* include\r
-  named results.\r
-  \r
-  Idea first suggested in Issue #30 by Freakwill.\r
-\r
-- Updated FollowedBy to accept expressions that contain named results,\r
-  so that results names defined in the lookahead expression will be \r
-  returned, even though FollowedBy always returns an empty list.\r
-  Inspired by the same feature implemented in PrecededBy.\r
-\r
-\r
-Version 2.2.2 - September, 2018\r
--------------------------------\r
-- Fixed bug in SkipTo, if a SkipTo expression that was skipping to\r
-  an expression that returned a list (such as an And), and the \r
-  SkipTo was saved as a named result, the named result could be \r
-  saved as a ParseResults - should always be saved as a string.\r
-  Issue #28, reported by seron.\r
-\r
-- Added simple_unit_tests.py, as a collection of easy-to-follow unit \r
-  tests for various classes and features of the pyparsing library. \r
-  Primary intent is more to be instructional than actually rigorous \r
-  testing. Complex tests can still be added in the unitTests.py file.\r
-\r
-- New features added to the Regex class:\r
-  - optional asGroupList parameter, returns all the capture groups as\r
-    a list\r
-  - optional asMatch parameter, returns the raw re.match result\r
-  - new sub(repl) method, which adds a parse action calling\r
-    re.sub(pattern, repl, parsed_result). Simplifies creating \r
-    Regex expressions to be used with transformString. Like re.sub,\r
-    repl may be an ordinary string (similar to using pyparsing's \r
-    replaceWith), or may contain references to capture groups by group \r
-    number, or may be a callable that takes an re match group and \r
-    returns a string.\r
-    \r
-    For instance:\r
-        expr = pp.Regex(r"([Hh]\d):\s*(.*)").sub(r"<\1>\2</\1>")\r
-        expr.transformString("h1: This is the title")\r
-\r
-    will return\r
-        <h1>This is the title</h1>\r
-\r
-- Fixed omission of LICENSE file in source tarball, also added \r
-  CODE_OF_CONDUCT.md per GitHub community standards.\r
-\r
-\r
-Version 2.2.1 - September, 2018\r
--------------------------------\r
-- Applied changes necessary to migrate hosting of pyparsing source\r
-  over to GitHub. Many thanks for help and contributions from hugovk,\r
-  jdufresne, and cngkaygusuz among others through this transition,\r
-  sorry it took me so long!\r
-\r
-- Fixed import of collections.abc to address DeprecationWarnings\r
-  in Python 3.7.\r
-\r
-- Updated oc.py example to support function calls in arithmetic\r
-  expressions; fixed regex for '==' operator; and added packrat\r
-  parsing. Raised on the pyparsing wiki by Boris Marin, thanks!\r
-\r
-- Fixed bug in select_parser.py example, group_by_terms was not\r
-  reported. Reported on SF bugs by Adam Groszer, thanks Adam!\r
-\r
-- Added "Getting Started" section to the module docstring, to \r
-  guide new users to the most common starting points in pyparsing's\r
-  API.\r
-\r
-- Fixed bug in Literal and Keyword classes, which erroneously\r
-  raised IndexError instead of ParseException.\r
-\r
-\r
-Version 2.2.0 - March, 2017\r
----------------------------\r
-- Bumped minor version number to reflect compatibility issues with\r
-  OneOrMore and ZeroOrMore bugfixes in 2.1.10. (2.1.10 fixed a bug\r
-  that was introduced in 2.1.4, but the fix could break code\r
-  written against 2.1.4 - 2.1.9.)\r
-\r
-- Updated setup.py to address recursive import problems now\r
-  that pyparsing is part of 'packaging' (used by setuptools).\r
-  Patch submitted by Joshua Root, much thanks!\r
-\r
-- Fixed KeyError issue reported by Yann Bizeul when using packrat\r
-  parsing in the Graphite time series database, thanks Yann!\r
-\r
-- Fixed incorrect usages of '\' in literals, as described in\r
-  https://docs.python.org/3/whatsnew/3.6.html#deprecated-python-behavior\r
-  Patch submitted by Ville Skyttä - thanks!\r
-\r
-- Minor internal change when using '-' operator, to be compatible\r
-  with ParserElement.streamline() method.\r
-\r
-- Expanded infixNotation to accept a list or tuple of parse actions\r
-  to attach to an operation.\r
-\r
-- New unit test added for dill support for storing pyparsing parsers.\r
-  Ordinary Python pickle can be used to pickle pyparsing parsers as\r
-  long as they do not use any parse actions. The 'dill' module is an\r
-  extension to pickle which *does* support pickling of attached\r
-  parse actions.\r
-\r
-\r
-Version 2.1.10 - October, 2016\r
--------------------------------\r
-- Fixed bug in reporting named parse results for ZeroOrMore\r
-  expressions, thanks Ethan Nash for reporting this!\r
-\r
-- Fixed behavior of LineStart to be much more predictable.\r
-  LineStart can now be used to detect if the next parse position\r
-  is col 1, factoring in potential leading whitespace (which would\r
-  cause LineStart to fail). Also fixed a bug in col, which is\r
-  used in LineStart, where '\n's were erroneously considered to\r
-  be column 1.\r
-\r
-- Added support for multiline test strings in runTests.\r
-\r
-- Fixed bug in ParseResults.dump when keys were not strings.\r
-  Also changed display of string values to show them in quotes,\r
-  to help distinguish parsed numeric strings from parsed integers\r
-  that have been converted to Python ints.\r
-\r
-\r
-Version 2.1.9 - September, 2016\r
--------------------------------\r
-- Added class CloseMatch, a variation on Literal which matches \r
-  "close" matches, that is, strings with at most 'n' mismatching\r
-  characters.\r
-\r
-- Fixed bug in Keyword.setDefaultKeywordChars(), reported by Kobayashi\r
-  Shinji - nice catch, thanks!\r
-\r
-- Minor API change in pyparsing_common. Renamed some of the common\r
-  expressions to PEP8 format (to be consistent with the other \r
-  pyparsing_common expressions):\r
-  . signedInteger -> signed_integer\r
-  . sciReal -> sci_real\r
-  \r
-  Also, in trying to stem the API bloat of pyparsing, I've copied\r
-  some of the global expressions and helper parse actions into \r
-  pyparsing_common, with the originals to be deprecated and removed\r
-  in a future release:\r
-  . commaSeparatedList -> pyparsing_common.comma_separated_list\r
-  . upcaseTokens -> pyparsing_common.upcaseTokens\r
-  . downcaseTokens -> pyparsing_common.downcaseTokens\r
-\r
-  (I don't expect any other expressions, like the comment expressions,\r
-  quotedString, or the Word-helping strings like alphas, nums, etc.\r
-  to migrate to pyparsing_common - they are just too pervasive. As for\r
-  the PEP8 vs camelCase naming, all the expressions are PEP8, while\r
-  the parse actions in pyparsing_common are still camelCase. It's a \r
-  small step - when pyparsing 3.0 comes around, everything will change\r
-  to PEP8 snake case.)\r
-\r
-- Fixed Python3 compatibility bug when using dict keys() and values()\r
-  in ParseResults.getName().\r
-\r
-- After some prodding, I've reworked the unitTests.py file for \r
-  pyparsing over the past few releases. It uses some variations on \r
-  unittest to handle my testing style. The test now:\r
-  . auto-discovers its test classes (while maintining their order\r
-    of definition)\r
-  . suppresses voluminous 'print' output for tests that pass\r
-\r
-\r
-Version 2.1.8 - August, 2016\r
-----------------------------\r
-- Fixed issue in the optimization to _trim_arity, when the full \r
-  stacktrace is retrieved to determine if a TypeError is raised in\r
-  pyparsing or in the caller's parse action. Code was traversing\r
-  the full stacktrace, and potentially encountering UnicodeDecodeError.\r
-\r
-- Fixed bug in ParserElement.inlineLiteralsUsing, causing infinite \r
-  loop with Suppress.\r
-\r
-- Fixed bug in Each, when merging named results from multiple\r
-  expressions in a ZeroOrMore or OneOrMore. Also fixed bug when\r
-  ZeroOrMore expressions were erroneously treated as required \r
-  expressions in an Each expression.\r
-  \r
-- Added a few more inline doc examples.\r
-\r
-- Improved use of runTests in several example scripts.\r
-\r
-\r
-Version 2.1.7 - August, 2016\r
-----------------------------\r
-- Fixed regression reported by Andrea Censi (surfaced in PyContracts \r
-  tests) when using ParseSyntaxExceptions (raised when using operator '-')\r
-  with packrat parsing.\r
-\r
-- Minor fix to oneOf, to accept all iterables, not just space-delimited\r
-  strings and lists. (If you have a list or set of strings, it is \r
-  not necessary to concat them using ' '.join to pass them to oneOf,\r
-  oneOf will accept the list or set or generator directly.)\r
-\r
-\r
-Version 2.1.6 - August, 2016\r
-----------------------------\r
-- *Major packrat upgrade*, inspired by patch provided by Tal Einat - \r
-  many, many, thanks to Tal for working on this! Tal's tests show \r
-  faster parsing performance (2X in some tests), *and* memory reduction \r
-  from 3GB down to ~100MB! Requires no changes to existing code using \r
-  packratting. (Uses OrderedDict, available in Python 2.7 and later.\r
-  For Python 2.6 users, will attempt to import from ordereddict\r
-  backport. If not present, will implement pure-Python Fifo dict.)\r
-\r
-- Minor API change - to better distinguish between the flexible\r
-  numeric types defined in pyparsing_common, I've changed "numeric" \r
-  (which parsed numbers of different types and returned int for ints, \r
-  float for floats, etc.) and "number" (which parsed numbers of int\r
-  or float type, and returned all floats) to "number" and "fnumber"\r
-  respectively. I hope the "f" prefix of "fnumber" will be a better\r
-  indicator of its internal conversion of parsed values to floats, \r
-  while the generic "number" is similar to the flexible number syntax\r
-  in other languages. Also fixed a bug in pyparsing_common.numeric\r
-  (now renamed to pyparsing_common.number), integers were parsed and \r
-  returned as floats instead of being retained as ints.\r
-\r
-- Fixed bug in upcaseTokens and downcaseTokens introduced in 2.1.5,\r
-  when the parse action was used in conjunction with results names.\r
-  Reported by Steven Arcangeli from the dql project, thanks for your\r
-  patience, Steven!\r
-\r
-- Major change to docs! After seeing some comments on reddit about \r
-  general issue with docs of Python modules, and thinking that I'm a \r
-  little overdue in doing some doc tuneup on pyparsing, I decided to\r
-  following the suggestions of the redditor and add more inline examples\r
-  to the pyparsing reference documentation. I hope this addition \r
-  will clarify some of the more common questions people have, especially\r
-  when first starting with pyparsing/Python.\r
-\r
-- Deprecated ParseResults.asXML. I've never been too happy with this\r
-  method, and it usually forces some unnatural code in the parsers in\r
-  order to get decent tag names. The amount of guesswork that asXML \r
-  has to do to try to match names with values should have been a red\r
-  flag from day one. If you are using asXML, you will need to implement \r
-  your own ParseResults->XML serialization. Or consider migrating to\r
-  a more current format such as JSON (which is very easy to do: \r
-  results_as_json = json.dumps(parse_result.asDict()) Hopefully, when\r
-  I remove this code in a future version, I'll also be able to simplify \r
-  some of the craziness in ParseResults, which IIRC was only there to try \r
-  to make asXML work.\r
-\r
-- Updated traceParseAction parse action decorator to show the repr\r
-  of the input and output tokens, instead of the str format, since \r
-  str has been simplified to just show the token list content.  \r
-  \r
-  (The change to ParseResults.__str__ occurred in pyparsing 2.0.4, but\r
-  it seems that didn't make it into the release notes - sorry! Too\r
-  many users, especially beginners, were confused by the \r
-  "([token_list], {names_dict})" str format for ParseResults, thinking \r
-  they were getting a tuple containing a list and a dict. The full form \r
-  can be seen if using repr().)\r
-\r
-  For tracing tokens in and out of parse actions, the more complete \r
-  repr form provides important information when debugging parse actions.\r
-\r
-\r
-Verison 2.1.5 - June, 2016\r
-------------------------------\r
-- Added ParserElement.split() generator method, similar to re.split(). \r
-  Includes optional arguments maxsplit (to limit the number of splits),\r
-  and includeSeparators (to include the separating matched text in the \r
-  returned output, default=False).\r
-\r
-- Added a new parse action construction helper tokenMap, which will\r
-  apply a function and optional arguments to each element in a \r
-  ParseResults. So this parse action:\r
-  \r
-      def lowercase_all(tokens):\r
-          return [str(t).lower() for t in tokens]\r
-      OneOrMore(Word(alphas)).setParseAction(lowercase_all)\r
-\r
-  can now be written:\r
-  \r
-      OneOrMore(Word(alphas)).setParseAction(tokenMap(str.lower))\r
-\r
-  Also simplifies writing conversion parse actions like:\r
-  \r
-      integer = Word(nums).setParseAction(lambda t: int(t[0]))\r
-\r
-  to just:\r
-  \r
-      integer = Word(nums).setParseAction(tokenMap(int))\r
-\r
-  If additional arguments are necessary, they can be included in the\r
-  call to tokenMap, as in:\r
-  \r
-      hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))\r
-\r
-- Added more expressions to pyparsing_common:\r
-  . IPv4 and IPv6 addresses (including long, short, and mixed forms\r
-    of IPv6)\r
-  . MAC address\r
-  . ISO8601 date and date time strings (with named fields for year, month, etc.)\r
-  . UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)\r
-  . hex integer (returned as int)\r
-  . fraction (integer '/' integer, returned as float)\r
-  . mixed integer (integer '-' fraction, or just fraction, returned as float)\r
-  . stripHTMLTags (parse action to remove tags from HTML source)\r
-  . parse action helpers convertToDate and convertToDatetime to do custom parse\r
-    time conversions of parsed ISO8601 strings\r
-\r
-- runTests now returns a two-tuple: success if all tests succeed,\r
-  and an output list of each test and its output lines.\r
-\r
-- Added failureTests argument (default=False) to runTests, so that\r
-  tests can be run that are expected failures, and runTests' success \r
-  value will return True only if all tests *fail* as expected. Also,\r
-  parseAll now defaults to True.\r
-\r
-- New example numerics.py, shows samples of parsing integer and real\r
-  numbers using locale-dependent formats:\r
-\r
-    4.294.967.295,000 \r
-    4 294 967 295,000  \r
-    4,294,967,295.000  \r
-  \r
-\r
-Version 2.1.4 - May, 2016\r
-------------------------------\r
-- Split out the '==' behavior in ParserElement, now implemented\r
-  as the ParserElement.matches() method. Using '==' for string test \r
-  purposes will be removed in a future release.\r
-\r
-- Expanded capabilities of runTests(). Will now accept embedded\r
-  comments (default is Python style, leading '#' character, but \r
-  customizable). Comments will be emitted along with the tests and\r
-  test output. Useful during test development, to create a test string\r
-  consisting only of test case description comments separated by \r
-  blank lines, and then fill in the test cases. Will also highlight\r
-  ParseFatalExceptions with "(FATAL)".\r
-\r
-- Added a 'pyparsing_common' class containing common/helpful little \r
-  expressions such as integer, float, identifier, etc. I used this \r
-  class as a sort of embedded namespace, to contain these helpers \r
-  without further adding to pyparsing's namespace bloat.\r
-\r
-- Minor enhancement to traceParseAction decorator, to retain the \r
-  parse action's name for the trace output.\r
-\r
-- Added optional 'fatal' keyword arg to addCondition, to indicate that\r
-  a condition failure should halt parsing immediately.\r
-\r
-\r
-Version 2.1.3 - May, 2016\r
-------------------------------\r
-- _trim_arity fix in 2.1.2 was very version-dependent on Py 3.5.0.\r
-  Now works for Python 2.x, 3.3, 3.4, 3.5.0, and 3.5.1 (and hopefully\r
-  beyond).\r
-\r
-\r
-Version 2.1.2 - May, 2016\r
-------------------------------\r
-- Fixed bug in _trim_arity when pyparsing code is included in a\r
-  PyInstaller, reported by maluwa.\r
-\r
-- Fixed catastrophic regex backtracking in implementation of the\r
-  quoted string expressions (dblQuotedString, sglQuotedString, and\r
-  quotedString). Reported on the pyparsing wiki by webpentest,\r
-  good catch! (Also tuned up some other expressions susceptible to the \r
-  same backtracking problem, such as cStyleComment, cppStyleComment, \r
-  etc.)\r
-\r
-\r
-Version 2.1.1 - March, 2016\r
----------------------------\r
-- Added support for assigning to ParseResults using slices.\r
-\r
-- Fixed bug in ParseResults.toDict(), in which dict values were always\r
-  converted to dicts, even if they were just unkeyed lists of tokens.\r
-  Reported on SO by Gerald Thibault, thanks Gerald!\r
-\r
-- Fixed bug in SkipTo when using failOn, reported by robyschek, thanks!\r
-\r
-- Fixed bug in Each introduced in 2.1.0, reported by AND patch and\r
-  unit test submitted by robyschek, well done!\r
-\r
-- Removed use of functools.partial in replaceWith, as this creates\r
-  an ambiguous signature for the generated parse action, which fails in \r
-  PyPy. Reported by Evan Hubinger, thanks Evan!\r
-\r
-- Added default behavior to QuotedString to convert embedded '\t', '\n',\r
-  etc. characters to their whitespace counterparts. Found during Q&A\r
-  exchange on SO with Maxim.\r
-\r
-\r
-Version 2.1.0 - February, 2016\r
-------------------------------\r
-- Modified the internal _trim_arity method to distinguish between \r
-  TypeError's raised while trying to determine parse action arity and\r
-  those raised within the parse action itself. This will clear up those\r
-  confusing "<lambda>() takes exactly 1 argument (0 given)" error \r
-  messages when there is an actual TypeError in the body of the parse\r
-  action. Thanks to all who have raised this issue in the past, and\r
-  most recently to Michael Cohen, who sent in a proposed patch, and got\r
-  me to finally tackle this problem.\r
-\r
-- Added compatibility for pickle protocols 2-4 when pickling ParseResults. \r
-  In Python 2.x, protocol 0 was the default, and protocol 2 did not work.\r
-  In Python 3.x, protocol 3 is the default, so explicitly naming \r
-  protocol 0 or 1 was required to pickle ParseResults. With this release,\r
-  all protocols 0-4 are supported. Thanks for reporting this on StackOverflow,\r
-  Arne Wolframm, and for providing a nice simple test case!\r
-\r
-- Added optional 'stopOn' argument to ZeroOrMore and OneOrMore, to\r
-  simplify breaking on stop tokens that would match the repetition \r
-  expression. \r
-  \r
-  It is a common problem to fail to look ahead when matching repetitive \r
-  tokens if the sentinel at the end also matches the repetition\r
-  expression, as when parsing "BEGIN aaa bbb ccc END" with:\r
-  \r
-    "BEGIN" + OneOrMore(Word(alphas)) + "END"\r
-\r
-  Since "END" matches the repetition expression "Word(alphas)", it will\r
-  never get parsed as the terminating sentinel. Up until now, this has \r
-  to be resolved by the user inserting their own negative lookahead:\r
-  \r
-    "BEGIN" + OneOrMore(~Literal("END") + Word(alphas)) + "END"\r
-  \r
-  Using stopOn, they can more easily write:\r
-  \r
-    "BEGIN" + OneOrMore(Word(alphas), stopOn="END") + "END"\r
-  \r
-  The stopOn argument can be a literal string or a pyparsing expression.\r
-  Inspired by a question by Lamakaha on StackOverflow (and many previous\r
-  questions with the same negative-lookahead resolution).\r
-\r
-- Added expression names for many internal and builtin expressions, to \r
-  reduce name and error message overhead during parsing.\r
-\r
-- Converted helper lambdas to functions to refactor and add docstring\r
-  support.\r
-\r
-- Fixed ParseResults.asDict() to correctly convert nested ParseResults\r
-  values to dicts.\r
-  \r
-- Cleaned up some examples, fixed typo in fourFn.py identified by\r
-  aristotle2600 on reddit.\r
-\r
-- Removed keepOriginalText helper method, which was deprecated ages ago.\r
-  Superceded by originalTextFor.\r
-\r
-- Same for the Upcase class, which was long ago deprecated and replaced\r
-  with the upcaseTokens method.\r
-\r
-\r
-\r
-Version 2.0.7 - December, 2015\r
-------------------------------\r
-- Simplified string representation of Forward class, to avoid memory\r
-  and performance errors while building ParseException messages. Thanks,\r
-  Will McGugan, Andrea Censi, and Martijn Vermaat for the bug reports and\r
-  test code.\r
-\r
-- Cleaned up additional issues from enhancing the error messages for\r
-  Or and MatchFirst, handling Unicode values in expressions. Fixes Unicode\r
-  encoding issues in Python 2, thanks to Evan Hubinger for the bug report.\r
-\r
-- Fixed implementation of dir() for ParseResults - was leaving out all the\r
-  defined methods and just adding the custom results names.\r
-\r
-- Fixed bug in ignore() that was introduced in pyparsing 1.5.3, that would\r
-  not accept a string literal as the ignore expression.\r
-\r
-- Added new example parseTabularData.py to illustrate parsing of data \r
-  formatted in columns, with detection of empty cells.\r
-\r
-- Updated a number of examples to more current Python and pyparsing \r
-  forms.\r
-\r
-\r
-Version 2.0.6 - November, 2015\r
-------------------------------\r
-- Fixed a bug in Each when multiple Optional elements are present.\r
-  Thanks for reporting this, whereswalden on SO.\r
-\r
-- Fixed another bug in Each, when Optional elements have results names\r
-  or parse actions, reported by Max Rothman - thank you, Max!\r
-\r
-- Added optional parseAll argument to runTests, whether tests should\r
-  require the entire input string to be parsed or not (similar to \r
-  parseAll argument to parseString). Plus a little neaten-up of the\r
-  output on Python 2 (no stray ()'s).\r
-\r
-- Modified exception messages from MatchFirst and Or expressions. These\r
-  were formerly misleading as they would only give the first or longest\r
-  exception mismatch error message. Now the error message includes all\r
-  the alternatives that were possible matches. Originally proposed by \r
-  a pyparsing user, but I've lost the email thread - finally figured out\r
-  a fairly clean way to do this.\r
-\r
-- Fixed a bug in Or, when a parse action on an alternative raises an \r
-  exception, other potentially matching alternatives were not always tried.\r
-  Reported by TheVeryOmni on the pyparsing wiki, thanks!\r
-\r
-- Fixed a bug to dump() introduced in 2.0.4, where list values were shown\r
-  in duplicate.\r
-\r
-\r
-Version 2.0.5 - October, 2015\r
------------------------------\r
-- (&$(@#&$(@!!!!  Some "print" statements snuck into pyparsing v2.0.4,\r
-  breaking Python 3 compatibility! Fixed. Reported by jenshn, thanks!\r
-  \r
-\r
-Version 2.0.4 - October, 2015\r
------------------------------\r
-- Added ParserElement.addCondition, to simplify adding parse actions \r
-  that act primarily as filters. If the given condition evaluates False,\r
-  pyparsing will raise a ParseException. The condition should be a method\r
-  with the same method signature as a parse action, but should return a\r
-  boolean. Suggested by Victor Porton, nice idea Victor, thanks!\r
-\r
-- Slight mod to srange to accept unicode literals for the input string,\r
-  such as "[а-яА-Я]" instead of "[\u0430-\u044f\u0410-\u042f]". Thanks \r
-  to Alexandr Suchkov for the patch!\r
-\r
-- Enhanced implementation of replaceWith.\r
-\r
-- Fixed enhanced ParseResults.dump() method when the results consists\r
-  only of an unnamed array of sub-structure results. Reported by Robin\r
-  Siebler, thanks for your patience and persistence, Robin!\r
-\r
-- Fixed bug in fourFn.py example code, where pi and e were defined using\r
-  CaselessLiteral instead of CaselessKeyword. This was not a problem until\r
-  adding a new function 'exp', and the leading 'e' of 'exp' was accidentally\r
-  parsed as the mathematical constant 'e'. Nice catch, Tom Grydeland - thanks!\r
-\r
-- Adopt new-fangled Python features, like decorators and ternary expressions, \r
-  per suggestions from Williamzjc - thanks William! (Oh yeah, I'm not\r
-  supporting Python 2.3 with this code any more...) Plus, some additional\r
-  code fixes/cleanup - thanks again!\r
-\r
-- Added ParserElement.runTests, a little test bench for quickly running\r
-  an expression against a list of sample input strings. Basically, I got \r
-  tired of writing the same test code over and over, and finally added it\r
-  as a test point method on ParserElement.\r
-\r
-- Added withClass helper method, a simplified version of withAttribute for\r
-  the common but annoying case when defining a filter on a div's class - \r
-  made difficult because 'class' is a Python reserved word.\r
-\r
-\r
-Version 2.0.3 - October, 2014\r
------------------------------\r
-- Fixed escaping behavior in QuotedString. Formerly, only quotation\r
-  marks (or characters designated as quotation marks in the QuotedString\r
-  constructor) would be escaped. Now all escaped characters will be\r
-  escaped, and the escaping backslashes will be removed.\r
-\r
-- Fixed regression in ParseResults.pop() - pop() was pretty much\r
-  broken after I added *improvements* in 2.0.2. Reported by Iain\r
-  Shelvington, thanks Iain!\r
-\r
-- Fixed bug in And class when initializing using a generator.\r
-\r
-- Enhanced ParseResults.dump() method to list out nested ParseResults that\r
-  are unnamed arrays of sub-structures.\r
-\r
-- Fixed UnboundLocalError under Python 3.4 in oneOf method, reported\r
-  on Sourceforge by aldanor, thanks!\r
-\r
-- Fixed bug in ParseResults __init__ method, when returning non-ParseResults\r
-  types from parse actions that implement __eq__. Raised during discussion \r
-  on the pyparsing wiki with cyrfer.\r
-\r
-\r
-Version 2.0.2 - April, 2014\r
----------------------------\r
-- Extended "expr(name)" shortcut (same as "expr.setResultsName(name)")\r
-  to accept "expr()" as a shortcut for "expr.copy()".\r
-\r
-- Added "locatedExpr(expr)" helper, to decorate any returned tokens\r
-  with their location within the input string. Adds the results names\r
-  locn_start and locn_end to the output parse results.\r
-\r
-- Added "pprint()" method to ParseResults, to simplify troubleshooting\r
-  and prettified output. Now instead of importing the pprint module\r
-  and then writing "pprint.pprint(result)", you can just write\r
-  "result.pprint()".  This method also accepts addtional positional and\r
-  keyword arguments (such as indent, width, etc.), which get passed \r
-  through directly to the pprint method \r
-  (see http://docs.python.org/2/library/pprint.html#pprint.pprint).\r
-\r
-- Removed deprecation warnings when using '<<' for Forward expression\r
-  assignment. '<<=' is still preferred, but '<<' will be retained\r
-  for cases whre '<<=' operator is not suitable (such as in defining\r
-  lambda expressions).\r
-\r
-- Expanded argument compatibility for classes and functions that\r
-  take list arguments, to now accept generators as well.\r
-\r
-- Extended list-like behavior of ParseResults, adding support for\r
-  append and extend. NOTE: if you have existing applications using\r
-  these names as results names, you will have to access them using\r
-  dict-style syntax: res["append"] and res["extend"]\r
-\r
-- ParseResults emulates the change in list vs. iterator semantics for\r
-  methods like keys(), values(), and items(). Under Python 2.x, these\r
-  methods will return lists, under Python 3.x, these methods will \r
-  return iterators.\r
-\r
-- ParseResults now has a method haskeys() which returns True or False\r
-  depending on whether any results names have been defined. This simplifies\r
-  testing for the existence of results names under Python 3.x, which \r
-  returns keys() as an iterator, not a list.\r
-\r
-- ParseResults now supports both list and dict semantics for pop().\r
-  If passed no argument or an integer argument, it will use list semantics\r
-  and pop tokens from the list of parsed tokens. If passed a non-integer\r
-  argument (most likely a string), it will use dict semantics and \r
-  pop the corresponding value from any defined results names. A\r
-  second default return value argument is supported, just as in \r
-  dict.pop().\r
-\r
-- Fixed bug in markInputline, thanks for reporting this, Matt Grant!\r
-\r
-- Cleaned up my unit test environment, now runs with Python 2.6 and \r
-  3.3.\r
-\r
-\r
-Version 2.0.1 - July, 2013\r
---------------------------\r
-- Removed use of "nonlocal" that prevented using this version of \r
-  pyparsing with Python 2.6 and 2.7. This will make it easier to \r
-  install for packages that depend on pyparsing, under Python \r
-  versions 2.6 and later. Those using older versions of Python\r
-  will have to manually install pyparsing 1.5.7.\r
-\r
-- Fixed implementation of <<= operator to return self; reported by\r
-  Luc J. Bourhis, with patch fix by Mathias Mamsch - thanks, Luc\r
-  and Mathias!\r
-\r
-\r
-Version 2.0.0 - November, 2012\r
-------------------------------\r
-- Rather than release another combined Python 2.x/3.x release\r
-  I've decided to start a new major version that is only \r
-  compatible with Python 3.x (and consequently Python 2.7 as\r
-  well due to backporting of key features). This version will\r
-  be the main development path from now on, with little follow-on\r
-  development on the 1.5.x path.\r
-\r
-- Operator '<<' is now deprecated, in favor of operator '<<=' for\r
-  attaching parsing expressions to Forward() expressions. This is\r
-  being done to address precedence of operations problems with '<<'.\r
-  Operator '<<' will be removed in a future version of pyparsing.\r
-\r
-\r
-Version 1.5.7 - November, 2012\r
------------------------------\r
-- NOTE: This is the last release of pyparsing that will try to \r
-  maintain compatibility with Python versions < 2.6. The next\r
-  release of pyparsing will be version 2.0.0, using new Python\r
-  syntax that will not be compatible for Python version 2.5 or\r
-  older.\r
-\r
-- An awesome new example is included in this release, submitted\r
-  by Luca DellOlio, for parsing ANTLR grammar definitions, nice\r
-  work Luca!\r
-\r
-- Fixed implementation of ParseResults.__str__ to use Pythonic\r
-  ''.join() instead of repeated string concatenation. This\r
-  purportedly has been a performance issue under PyPy.\r
-\r
-- Fixed bug in ParseResults.__dir__ under Python 3, reported by\r
-  Thomas Kluyver, thank you Thomas!\r
-\r
-- Added ParserElement.inlineLiteralsUsing static method, to \r
-  override pyparsing's default behavior of converting string\r
-  literals to Literal instances, to use other classes (such\r
-  as Suppress or CaselessLiteral).\r
-\r
-- Added new operator '<<=', which will eventually replace '<<' for \r
-  storing the contents of a Forward(). '<<=' does not have the same\r
-  operator precedence problems that '<<' does.\r
-\r
-- 'operatorPrecedence' is being renamed 'infixNotation' as a better\r
-  description of what this helper function creates. 'operatorPrecedence'\r
-  is deprecated, and will be dropped entirely in a future release.\r
-\r
-- Added optional arguments lpar and rpar to operatorPrecedence, so that \r
-  expressions that use it can override the default suppression of the\r
-  grouping characters.\r
-\r
-- Added support for using single argument builtin functions as parse \r
-  actions.  Now you can write 'expr.setParseAction(len)' and get back\r
-  the length of the list of matched tokens.  Supported builtins are:\r
-  sum, len, sorted, reversed, list, tuple, set, any, all, min, and max.\r
-  A script demonstrating this feature is included in the examples\r
-  directory.\r
-\r
-- Improved linking in generated docs, proposed on the pyparsing wiki\r
-  by techtonik, thanks!\r
-\r
-- Fixed a bug in the definition of 'alphas', which was based on the \r
-  string.uppercase and string.lowercase "constants", which in fact \r
-  *aren't* constant, but vary with locale settings. This could make \r
-  parsers locale-sensitive in a subtle way. Thanks to Kef Schecter for\r
-  his diligence in following through on reporting and monitoring \r
-  this bugfix!\r
-\r
-- Fixed a bug in the Py3 version of pyparsing, during exception\r
-  handling with packrat parsing enabled, reported by Catherine \r
-  Devlin - thanks Catherine!\r
-\r
-- Fixed typo in ParseBaseException.__dir__, reported anonymously on \r
-  the SourceForge bug tracker, thank you Pyparsing User With No Name.\r
-\r
-- Fixed bug in srange when using '\x###' hex character codes.\r
-\r
-- Addeed optional 'intExpr' argument to countedArray, so that you \r
-  can define your own expression that will evaluate to an integer,\r
-  to be used as the count for the following elements. Allows you \r
-  to define a countedArray with the count given in hex, for example,\r
-  by defining intExpr as "Word(hexnums).setParseAction(int(t[0],16))".\r
-\r
-\r
-Version 1.5.6 - June, 2011\r
-----------------------------\r
-- Cleanup of parse action normalizing code, to be more version-tolerant,\r
-  and robust in the face of future Python versions - much thanks to \r
-  Raymond Hettinger for this rewrite!\r
-\r
-- Removal of exception cacheing, addressing a memory leak condition\r
-  in Python 3. Thanks to Michael Droettboom and the Cape Town PUG for\r
-  their analysis and work on this problem!\r
-\r
-- Fixed bug when using packrat parsing, where a previously parsed\r
-  expression would duplicate subsequent tokens - reported by Frankie \r
-  Ribery on stackoverflow, thanks!\r
-\r
-- Added 'ungroup' helper method, to address token grouping done\r
-  implicitly by And expressions, even if only one expression in the\r
-  And actually returns any text - also inspired by stackoverflow\r
-  discussion with Frankie Ribery!\r
-\r
-- Fixed bug in srange, which accepted escaped hex characters of the \r
-  form '\0x##', but should be '\x##'.  Both forms will be supported\r
-  for backwards compatibility.\r
-\r
-- Enhancement to countedArray, accepting an optional expression to be\r
-  used for matching the leading integer count - proposed by Mathias on\r
-  the pyparsing mailing list, good idea!\r
-\r
-- Added the Verilog parser to the provided set of examples, under the\r
-  MIT license.  While this frees up this parser for any use, if you find\r
-  yourself using it in a commercial purpose, please consider making a\r
-  charitable donation as described in the parser's header.\r
-\r
-- Added the excludeChars argument to the Word class, to simplify defining\r
-  a word composed of all characters in a large range except for one or\r
-  two. Suggested by JesterEE on the pyparsing wiki.\r
-\r
-- Added optional overlap parameter to scanString, to return overlapping\r
-  matches found in the source text.\r
-\r
-- Updated oneOf internal regular expression generation, with improved\r
-  parse time performance.\r
-  \r
-- Slight performance improvement in transformString, removing empty\r
-  strings from the list of string fragments built while scanning the\r
-  source text, before calling ''.join.  Especially useful when using \r
-  transformString to strip out selected text.\r
-\r
-- Enhanced form of using the "expr('name')" style of results naming,\r
-  in lieu of calling setResultsName.  If name ends with an '*', then\r
-  this is equivalent to expr.setResultsName('name',listAllMatches=True).\r
-\r
-- Fixed up internal list flattener to use iteration instead of recursion,\r
-  to avoid stack overflow when transforming large files.\r
-\r
-- Added other new examples:\r
-  . protobuf parser - parses Google's protobuf language\r
-  . btpyparse - a BibTex parser contributed by Matthew Brett,\r
-    with test suite test_bibparse.py (thanks, Matthew!)\r
-  . groupUsingListAllMatches.py - demo using trailing '*' for results \r
-    names\r
-\r
-\r
-Version 1.5.5 - August, 2010\r
-----------------------------\r
-\r
-- Typo in Python3 version of pyparsing, "builtin" should be "builtins".\r
-  (sigh)\r
-\r
-\r
-Version 1.5.4 - August, 2010\r
-----------------------------\r
-\r
-- Fixed __builtins__ and file references in Python 3 code, thanks to \r
-  Greg Watson, saulspatz, sminos, and Mark Summerfield for reporting \r
-  their Python 3 experiences.\r
-\r
-- Added new example, apicheck.py, as a sample of scanning a Tcl-like\r
-  language for functions with incorrect number of arguments (difficult\r
-  to track down in Tcl languages).  This example uses some interesting\r
-  methods for capturing exceptions while scanning through source\r
-  code.\r
-\r
-- Added new example deltaTime.py, that takes everyday time references\r
-  like "an hour from now", "2 days ago", "next Sunday at 2pm".\r
-\r
-\r
-Version 1.5.3 - June, 2010\r
---------------------------\r
-\r
-- ======= NOTE:  API CHANGE!!!!!!! ===============\r
-  With this release, and henceforward, the pyparsing module is \r
-  imported as "pyparsing" on both Python 2.x and Python 3.x versions.\r
-\r
-- Fixed up setup.py to auto-detect Python version and install the \r
-  correct version of pyparsing - suggested by Alex Martelli, \r
-  thanks, Alex! (and my apologies to all those who struggled with \r
-  those spurious installation errors caused by my earlier \r
-  fumblings!)\r
-\r
-- Fixed bug on Python3 when using parseFile, getting bytes instead of\r
-  a str from the input file.\r
-\r
-- Fixed subtle bug in originalTextFor, if followed by\r
-  significant whitespace (like a newline) - discovered by\r
-  Francis Vidal, thanks!\r
-\r
-- Fixed very sneaky bug in Each, in which Optional elements were\r
-  not completely recognized as optional - found by Tal Weiss, thanks\r
-  for your patience.\r
-  \r
-- Fixed off-by-1 bug in line() method when the first line of the\r
-  input text was an empty line. Thanks to John Krukoff for submitting\r
-  a patch!\r
-  \r
-- Fixed bug in transformString if grammar contains Group expressions,\r
-  thanks to patch submitted by barnabas79, nice work!\r
-  \r
-- Fixed bug in originalTextFor in which trailing comments or otherwised\r
-  ignored text got slurped in with the matched expression.  Thanks to\r
-  michael_ramirez44 on the pyparsing wiki for reporting this just in\r
-  time to get into this release!\r
-\r
-- Added better support for summing ParseResults, see the new example,\r
-  parseResultsSumExample.py.\r
-  \r
-- Added support for composing a Regex using a compiled RE object; \r
-  thanks to my new colleague, Mike Thornton!\r
-\r
-- In version 1.5.2, I changed the way exceptions are raised in order\r
-  to simplify the stacktraces reported during parsing.  An anonymous\r
-  user posted a bug report on SF that this behavior makes it difficult\r
-  to debug some complex parsers, or parsers nested within parsers. In\r
-  this release I've added a class attribute ParserElement.verbose_stacktrace,\r
-  with a default value of False. If you set this to True, pyparsing will \r
-  report stacktraces using the pre-1.5.2 behavior.\r
-\r
-- New examples: \r
-\r
-  . pymicko.py, a MicroC compiler submitted by Zarko Zivanov. \r
-    (Note: this example is separately licensed under the GPLv3, \r
-    and requires Python 2.6 or higher.)  Thank you, Zarko!\r
-\r
-  . oc.py, a subset C parser, using the BNF from the 1996 Obfuscated C\r
-    Contest.\r
-\r
-  . stateMachine2.py, a modified version of stateMachine.py submitted \r
-    by Matt Anderson, that is compatible with Python versions 2.7 and \r
-    above - thanks so much, Matt!\r
-    \r
-  . select_parser.py, a parser for reading SQLite SELECT statements, \r
-    as specified at http://www.sqlite.org/lang_select.html; this goes\r
-    into much more detail than the simple SQL parser included in pyparsing's\r
-    source code\r
-    \r
-  . excelExpr.py, a *simplistic* first-cut at a parser for Excel \r
-    expressions, which I originally posted on comp.lang.python in January, \r
-    2010; beware, this parser omits many common Excel cases (addition of\r
-    numbers represented as strings, references to named ranges)\r
-    \r
-  . cpp_enum_parser.py, a nice little parser posted my Mark Tolonen on\r
-    comp.lang.python in August, 2009 (redistributed here with Mark's\r
-    permission).  Thanks a bunch, Mark!\r
-    \r
-  . partial_gene_match.py, a sample I posted to Stackoverflow.com,\r
-    implementing a special variation on Literal that does "close" matching,\r
-    up to a given number of allowed mismatches.  The application was to \r
-    find matching gene sequences, with allowance for one or two mismatches.\r
-    \r
-  . tagCapture.py, a sample showing how to use a Forward placeholder to\r
-    enforce matching of text parsed in a previous expression.\r
-\r
-  . matchPreviousDemo.py, simple demo showing how the matchPreviousLiteral\r
-    helper method is used to match a previously parsed token.\r
-\r
-\r
-Version 1.5.2 - April, 2009\r
-------------------------------\r
-- Added pyparsing_py3.py module, so that Python 3 users can use\r
-  pyparsing by changing their pyparsing import statement to:\r
-  \r
-      import pyparsing_py3\r
-\r
-  Thanks for help from Patrick Laban and his friend Geremy \r
-  Condra on the pyparsing wiki.\r
-  \r
-- Removed __slots__ declaration on ParseBaseException, for\r
-  compatibility with IronPython 2.0.1.  Raised by David\r
-  Lawler on the pyparsing wiki, thanks David!\r
-  \r
-- Fixed bug in SkipTo/failOn handling - caught by eagle eye \r
-  cpennington on the pyparsing wiki!\r
-\r
-- Fixed second bug in SkipTo when using the ignore constructor\r
-  argument, reported by Catherine Devlin, thanks!\r
-  \r
-- Fixed obscure bug reported by Eike Welk when using a class\r
-  as a ParseAction with an errant __getitem__ method.\r
-\r
-- Simplified exception stack traces when reporting parse \r
-  exceptions back to caller of parseString or parseFile - thanks\r
-  to a tip from Peter Otten on comp.lang.python.\r
-\r
-- Changed behavior of scanString to avoid infinitely looping on\r
-  expressions that match zero-length strings.  Prompted by a\r
-  question posted by ellisonbg on the wiki.\r
-\r
-- Enhanced classes that take a list of expressions (And, Or, \r
-  MatchFirst, and Each) to accept generator expressions also.\r
-  This can be useful when generating lists of alternative\r
-  expressions, as in this case, where the user wanted to match\r
-  any repetitions of '+', '*', '#', or '.', but not mixtures\r
-  of them (that is, match '+++', but not '+-+'):\r
-  \r
-      codes = "+*#."\r
-      format = MatchFirst(Word(c) for c in codes)\r
-      \r
-  Based on a problem posed by Denis Spir on the Python tutor\r
-  list.\r
-\r
-- Added new example eval_arith.py, which extends the example\r
-  simpleArith.py to actually evaluate the parsed expressions.\r
-\r
-\r
-Version 1.5.1 - October, 2008\r
--------------------------------\r
-- Added new helper method originalTextFor, to replace the use of\r
-  the current keepOriginalText parse action.  Now instead of \r
-  using the parse action, as in:\r
-  \r
-      fullName = Word(alphas) + Word(alphas)\r
-      fullName.setParseAction(keepOriginalText)\r
-      \r
-  (in this example, we used keepOriginalText to restore any white\r
-  space that may have been skipped between the first and last\r
-  names)\r
-  You can now write:\r
-  \r
-      fullName = originalTextFor(Word(alphas) + Word(alphas))\r
-      \r
-  The implementation of originalTextFor is simpler and faster than\r
-  keepOriginalText, and does not depend on using the inspect or\r
-  imp modules.\r
-  \r
-- Added optional parseAll argument to parseFile, to be consistent\r
-  with parseAll argument to parseString.  Posted by pboucher on the\r
-  pyparsing wiki, thanks!\r
-\r
-- Added failOn argument to SkipTo, so that grammars can define\r
-  literal strings or pyparsing expressions which, if found in the\r
-  skipped text, will cause SkipTo to fail.  Useful to prevent \r
-  SkipTo from reading past terminating expression.  Instigated by\r
-  question posed by Aki Niimura on the pyparsing wiki.\r
-\r
-- Fixed bug in nestedExpr if multi-character expressions are given\r
-  for nesting delimiters.  Patch provided by new pyparsing user,\r
-  Hans-Martin Gaudecker - thanks, H-M!\r
-\r
-- Removed dependency on xml.sax.saxutils.escape, and included\r
-  internal implementation instead - proposed by Mike Droettboom on\r
-  the pyparsing mailing list, thanks Mike!  Also fixed erroneous\r
-  mapping in replaceHTMLEntity of &quot; to ', now correctly maps\r
-  to ".  (Also added support for mapping &apos; to '.)\r
-\r
-- Fixed typo in ParseResults.insert, found by Alejandro Dubrovsky,\r
-  good catch!\r
-\r
-- Added __dir__() methods to ParseBaseException and ParseResults,\r
-  to support new dir() behavior in Py2.6 and Py3.0.  If dir() is\r
-  called on a ParseResults object, the returned list will include\r
-  the base set of attribute names, plus any results names that are\r
-  defined.\r
-\r
-- Fixed bug in ParseResults.asXML(), in which the first named\r
-  item within a ParseResults gets reported with an <ITEM> tag \r
-  instead of with the correct results name.\r
-  \r
-- Fixed bug in '-' error stop, when '-' operator is used inside a \r
-  Combine expression.\r
-\r
-- Reverted generator expression to use list comprehension, for \r
-  better compatibility with old versions of Python.  Reported by\r
-  jester/artixdesign on the SourceForge pyparsing discussion list.\r
-\r
-- Fixed bug in parseString(parseAll=True), when the input string\r
-  ends with a comment or whitespace.\r
-\r
-- Fixed bug in LineStart and LineEnd that did not recognize any\r
-  special whitespace chars defined using ParserElement.setDefault-\r
-  WhitespaceChars, found while debugging an issue for Marek Kubica,\r
-  thanks for the new test case, Marek!\r
-\r
-- Made Forward class more tolerant of subclassing.\r
-\r
-\r
-Version 1.5.0 - June, 2008\r
---------------------------\r
-This version of pyparsing includes work on two long-standing\r
-FAQ's: support for forcing parsing of the complete input string\r
-(without having to explicitly append StringEnd() to the grammar),\r
-and a method to improve the mechanism of detecting where syntax\r
-errors occur in an input string with various optional and\r
-alternative paths.  This release also includes a helper method\r
-to simplify definition of indentation-based grammars.  With\r
-these changes (and the past few minor updates), I thought it was\r
-finally time to bump the minor rev number on pyparsing - so\r
-1.5.0 is now available!  Read on...\r
-\r
-- AT LAST!!!  You can now call parseString and have it raise\r
-  an exception if the expression does not parse the entire\r
-  input string.  This has been an FAQ for a LONG time.\r
-\r
-  The parseString method now includes an optional parseAll\r
-  argument (default=False).  If parseAll is set to True, then\r
-  the given parse expression must parse the entire input\r
-  string.  (This is equivalent to adding StringEnd() to the\r
-  end of the expression.)  The default value is False to\r
-  retain backward compatibility.\r
-\r
-  Inspired by MANY requests over the years, most recently by\r
-  ecir-hana on the pyparsing wiki!\r
-\r
-- Added new operator '-' for composing grammar sequences. '-'\r
-  behaves just like '+' in creating And expressions, but '-'\r
-  is used to mark grammar structures that should stop parsing\r
-  immediately and report a syntax error, rather than just\r
-  backtracking to the last successful parse and trying another\r
-  alternative.  For instance, running the following code:\r
-\r
-    port_definition = Keyword("port") + '=' + Word(nums)\r
-    entity_definition = Keyword("entity") + "{" +\r
-        Optional(port_definition) + "}"\r
-\r
-    entity_definition.parseString("entity { port 100 }")\r
-\r
-  pyparsing fails to detect the missing '=' in the port definition.\r
-  But, since this expression is optional, pyparsing then proceeds\r
-  to try to match the closing '}' of the entity_definition.  Not\r
-  finding it, pyparsing reports that there was no '}' after the '{'\r
-  character.  Instead, we would like pyparsing to parse the 'port'\r
-  keyword, and if not followed by an equals sign and an integer,\r
-  to signal this as a syntax error.\r
-\r
-  This can now be done simply by changing the port_definition to:\r
-\r
-    port_definition = Keyword("port") - '=' + Word(nums)\r
-\r
-  Now after successfully parsing 'port', pyparsing must also find\r
-  an equals sign and an integer, or it will raise a fatal syntax\r
-  exception.\r
-\r
-  By judicious insertion of '-' operators, a pyparsing developer\r
-  can have their grammar report much more informative syntax error\r
-  messages.\r
-\r
-  Patches and suggestions proposed by several contributors on\r
-  the pyparsing mailing list and wiki - special thanks to\r
-  Eike Welk and Thomas/Poldy on the pyparsing wiki!\r
-\r
-- Added indentedBlock helper method, to encapsulate the parse\r
-  actions and indentation stack management needed to keep track of\r
-  indentation levels.  Use indentedBlock to define grammars for\r
-  indentation-based grouping grammars, like Python's.\r
-\r
-  indentedBlock takes up to 3 parameters:\r
-    - blockStatementExpr - expression defining syntax of statement\r
-        that is repeated within the indented block\r
-    - indentStack - list created by caller to manage indentation\r
-        stack (multiple indentedBlock expressions\r
-        within a single grammar should share a common indentStack)\r
-    - indent - boolean indicating whether block must be indented\r
-        beyond the the current level; set to False for block of\r
-        left-most statements (default=True)\r
-\r
-  A valid block must contain at least one indented statement.\r
-\r
-- Fixed bug in nestedExpr in which ignored expressions needed\r
-  to be set off with whitespace.  Reported by Stefaan Himpe,\r
-  nice catch!\r
-\r
-- Expanded multiplication of an expression by a tuple, to\r
-  accept tuple values of None:\r
-  . expr*(n,None) or expr*(n,) is equivalent\r
-    to expr*n + ZeroOrMore(expr)\r
-    (read as "at least n instances of expr")\r
-  . expr*(None,n) is equivalent to expr*(0,n)\r
-    (read as "0 to n instances of expr")\r
-  . expr*(None,None) is equivalent to ZeroOrMore(expr)\r
-  . expr*(1,None) is equivalent to OneOrMore(expr)\r
-\r
-  Note that expr*(None,n) does not raise an exception if\r
-  more than n exprs exist in the input stream; that is,\r
-  expr*(None,n) does not enforce a maximum number of expr\r
-  occurrences.  If this behavior is desired, then write\r
-  expr*(None,n) + ~expr\r
-\r
-- Added None as a possible operator for operatorPrecedence.\r
-  None signifies "no operator", as in multiplying m times x\r
-  in "y=mx+b".\r
-\r
-- Fixed bug in Each, reported by Michael Ramirez, in which the\r
-  order of terms in the Each affected the parsing of the results.\r
-  Problem was due to premature grouping of the expressions in\r
-  the overall Each during grammar construction, before the\r
-  complete Each was defined.  Thanks, Michael!\r
-\r
-- Also fixed bug in Each in which Optional's with default values\r
-  were not getting the defaults added to the results of the\r
-  overall Each expression.\r
-\r
-- Fixed a bug in Optional in which results names were not\r
-  assigned if a default value was supplied.\r
-\r
-- Cleaned up Py3K compatibility statements, including exception\r
-  construction statements, and better equivalence between _ustr\r
-  and basestring, and __nonzero__ and __bool__.\r
-\r
-\r
-Version 1.4.11 - February, 2008\r
--------------------------------\r
-- With help from Robert A. Clark, this version of pyparsing\r
-  is compatible with Python 3.0a3.  Thanks for the help,\r
-  Robert!\r
-\r
-- Added WordStart and WordEnd positional classes, to support\r
-  expressions that must occur at the start or end of a word.\r
-  Proposed by piranha on the pyparsing wiki, good idea!\r
-\r
-- Added matchOnlyAtCol helper parser action, to simplify\r
-  parsing log or data files that have optional fields that are\r
-  column dependent.  Inspired by a discussion thread with\r
-  hubritic on comp.lang.python.\r
-\r
-- Added withAttribute.ANY_VALUE as a match-all value when using\r
-  withAttribute.  Used to ensure that an attribute is present,\r
-  without having to match on the actual attribute value.\r
-\r
-- Added get() method to ParseResults, similar to dict.get().\r
-  Suggested by new pyparsing user, Alejandro Dubrovksy, thanks!\r
-\r
-- Added '==' short-cut to see if a given string matches a\r
-  pyparsing expression.  For instance, you can now write:\r
-\r
-    integer = Word(nums)\r
-    if "123" == integer:\r
-       # do something\r
-\r
-    print [ x for x in "123 234 asld".split() if x==integer ]\r
-    # prints ['123', '234']\r
-\r
-- Simplified the use of nestedExpr when using an expression for\r
-  the opening or closing delimiters.  Now the content expression\r
-  will not have to explicitly negate closing delimiters.  Found\r
-  while working with dfinnie on GHOP Task #277, thanks!\r
-\r
-- Fixed bug when defining ignorable expressions that are\r
-  later enclosed in a wrapper expression (such as ZeroOrMore,\r
-  OneOrMore, etc.) - found while working with Prabhu\r
-  Gurumurthy, thanks Prahbu!\r
-\r
-- Fixed bug in withAttribute in which keys were automatically\r
-  converted to lowercase, making it impossible to match XML\r
-  attributes with uppercase characters in them.  Using with-\r
-  Attribute requires that you reference attributes in all\r
-  lowercase if parsing HTML, and in correct case when parsing\r
-  XML.\r
-\r
-- Changed '<<' operator on Forward to return None, since this\r
-  is really used as a pseudo-assignment operator, not as a\r
-  left-shift operator.  By returning None, it is easier to\r
-  catch faulty statements such as a << b | c, where precedence\r
-  of operations causes the '|' operation to be performed\r
-  *after* inserting b into a, so no alternation is actually\r
-  implemented.  The correct form is a << (b | c).  With this\r
-  change, an error will be reported instead of silently\r
-  clipping the alternative term.  (Note: this may break some\r
-  existing code, but if it does, the code had a silent bug in\r
-  it anyway.)  Proposed by wcbarksdale on the pyparsing wiki,\r
-  thanks!\r
-\r
-- Several unit tests were added to pyparsing's regression\r
-  suite, courtesy of the Google Highly-Open Participation\r
-  Contest.  Thanks to all who administered and took part in\r
-  this event!\r
-\r
-\r
-Version 1.4.10 - December 9, 2007\r
----------------------------------\r
-- Fixed bug introduced in v1.4.8, parse actions were called for\r
-  intermediate operator levels, not just the deepest matching\r
-  operation level.  Again, big thanks to Torsten Marek for\r
-  helping isolate this problem!\r
-\r
-\r
-Version 1.4.9 - December 8, 2007\r
---------------------------------\r
-- Added '*' multiplication operator support when creating\r
-  grammars, accepting either an integer, or a two-integer\r
-  tuple multiplier, as in:\r
-    ipAddress = Word(nums) + ('.'+Word(nums))*3\r
-    usPhoneNumber = Word(nums) + ('-'+Word(nums))*(1,2)\r
-  If multiplying by a tuple, the two integer values represent\r
-  min and max multiples.  Suggested by Vincent of eToy.com,\r
-  great idea, Vincent!\r
-\r
-- Fixed bug in nestedExpr, original version was overly greedy!\r
-  Thanks to Michael Ramirez for raising this issue.\r
-\r
-- Fixed internal bug in ParseResults - when an item was deleted,\r
-  the key indices were not updated.  Thanks to Tim Mitchell for\r
-  posting a bugfix patch to the SF bug tracking system!\r
-\r
-- Fixed internal bug in operatorPrecedence - when the results of\r
-  a right-associative term were sent to a parse action, the wrong\r
-  tokens were sent.  Reported by Torsten Marek, nice job!\r
-\r
-- Added pop() method to ParseResults.  If pop is called with an\r
-  integer or with no arguments, it will use list semantics and\r
-  update the ParseResults' list of tokens.  If pop is called with\r
-  a non-integer (a string, for instance), then it will use dict\r
-  semantics and update the ParseResults' internal dict.\r
-  Suggested by Donn Ingle, thanks Donn!\r
-\r
-- Fixed quoted string built-ins to accept '\xHH' hex characters\r
-  within the string.\r
-\r
-\r
-Version 1.4.8 - October, 2007\r
------------------------------\r
-- Added new helper method nestedExpr to easily create expressions\r
-  that parse lists of data in nested parentheses, braces, brackets,\r
-  etc.\r
-\r
-- Added withAttribute parse action helper, to simplify creating\r
-  filtering parse actions to attach to expressions returned by\r
-  makeHTMLTags and makeXMLTags.  Use withAttribute to qualify a\r
-  starting tag with one or more required attribute values, to avoid\r
-  false matches on common tags such as <TD> or <DIV>.\r
-\r
-- Added new examples nested.py and withAttribute.py to demonstrate\r
-  the new features.\r
-\r
-- Added performance speedup to grammars using operatorPrecedence,\r
-  instigated by Stefan Reichör - thanks for the feedback, Stefan!\r
-\r
-- Fixed bug/typo when deleting an element from a ParseResults by\r
-  using the element's results name.\r
-\r
-- Fixed whitespace-skipping bug in wrapper classes (such as Group,\r
-  Suppress, Combine, etc.) and when using setDebug(), reported by\r
-  new pyparsing user dazzawazza on SourceForge, nice job!\r
-\r
-- Added restriction to prevent defining Word or CharsNotIn expressions\r
-  with minimum length of 0 (should use Optional if this is desired),\r
-  and enhanced docstrings to reflect this limitation.  Issue was\r
-  raised by Joey Tallieu, who submitted a patch with a slightly\r
-  different solution.  Thanks for taking the initiative, Joey, and\r
-  please keep submitting your ideas!\r
-\r
-- Fixed bug in makeHTMLTags that did not detect HTML tag attributes\r
-  with no '= value' portion (such as "<td nowrap>"), reported by\r
-  hamidh on the pyparsing wiki - thanks!\r
-\r
-- Fixed minor bug in makeHTMLTags and makeXMLTags, which did not\r
-  accept whitespace in closing tags.\r
-\r
-\r
-Version 1.4.7 - July, 2007\r
---------------------------\r
-- NEW NOTATION SHORTCUT: ParserElement now accepts results names using\r
-  a notational shortcut, following the expression with the results name\r
-  in parentheses.  So this:\r
-\r
-    stats = "AVE:" + realNum.setResultsName("average") + \\r
-            "MIN:" + realNum.setResultsName("min") + \\r
-            "MAX:" + realNum.setResultsName("max")\r
-\r
-  can now be written as this:\r
-\r
-    stats = "AVE:" + realNum("average") + \\r
-            "MIN:" + realNum("min") + \\r
-            "MAX:" + realNum("max")\r
-\r
-  The intent behind this change is to make it simpler to define results\r
-  names for significant fields within the expression, while keeping\r
-  the grammar syntax clean and uncluttered.\r
-\r
-- Fixed bug when packrat parsing is enabled, with cached ParseResults\r
-  being updated by subsequent parsing.  Reported on the pyparsing\r
-  wiki by Kambiz, thanks!\r
-\r
-- Fixed bug in operatorPrecedence for unary operators with left\r
-  associativity, if multiple operators were given for the same term.\r
-\r
-- Fixed bug in example simpleBool.py, corrected precedence of "and" vs.\r
-  "or" operations.\r
-\r
-- Fixed bug in Dict class, in which keys were converted to strings\r
-  whether they needed to be or not.  Have narrowed this logic to\r
-  convert keys to strings only if the keys are ints (which would\r
-  confuse __getitem__ behavior for list indexing vs. key lookup).\r
-\r
-- Added ParserElement method setBreak(), which will invoke the pdb\r
-  module's set_trace() function when this expression is about to be\r
-  parsed.\r
-\r
-- Fixed bug in StringEnd in which reading off the end of the input\r
-  string raises an exception - should match.  Resolved while\r
-  answering a question for Shawn on the pyparsing wiki.\r
-\r
-\r
-Version 1.4.6 - April, 2007\r
----------------------------\r
-- Simplified constructor for ParseFatalException, to support common\r
-  exception construction idiom:\r
-    raise ParseFatalException, "unexpected text: 'Spanish Inquisition'"\r
-\r
-- Added method getTokensEndLoc(), to be called from within a parse action,\r
-  for those parse actions that need both the starting *and* ending\r
-  location of the parsed tokens within the input text.\r
-\r
-- Enhanced behavior of keepOriginalText so that named parse fields are\r
-  preserved, even though tokens are replaced with the original input\r
-  text matched by the current expression.  Also, cleaned up the stack\r
-  traversal to be more robust.  Suggested by Tim Arnold - thanks, Tim!\r
-\r
-- Fixed subtle bug in which countedArray (and similar dynamic\r
-  expressions configured in parse actions) failed to match within Or,\r
-  Each, FollowedBy, or NotAny.  Reported by Ralf Vosseler, thanks for\r
-  your patience, Ralf!\r
-\r
-- Fixed Unicode bug in upcaseTokens and downcaseTokens parse actions,\r
-  scanString, and default debugging actions; reported (and patch submitted)\r
-  by Nikolai Zamkovoi, spasibo!\r
-\r
-- Fixed bug when saving a tuple as a named result.  The returned\r
-  token list gave the proper tuple value, but accessing the result by\r
-  name only gave the first element of the tuple.  Reported by\r
-  Poromenos, nice catch!\r
-\r
-- Fixed bug in makeHTMLTags/makeXMLTags, which failed to match tag\r
-  attributes with namespaces.\r
-\r
-- Fixed bug in SkipTo when setting include=True, to have the skipped-to\r
-  tokens correctly included in the returned data.  Reported by gunars on\r
-  the pyparsing wiki, thanks!\r
-\r
-- Fixed typobug in OnceOnly.reset method, omitted self argument.\r
-  Submitted by eike welk, thanks for the lint-picking!\r
-\r
-- Added performance enhancement to Forward class, suggested by\r
-  akkartik on the pyparsing Wiki discussion, nice work!\r
-\r
-- Added optional asKeyword to Word constructor, to indicate that the\r
-  given word pattern should be matched only as a keyword, that is, it\r
-  should only match if it is within word boundaries.\r
-\r
-- Added S-expression parser to examples directory.\r
-\r
-- Added macro substitution example to examples directory.\r
-\r
-- Added holaMundo.py example, excerpted from Marco Alfonso's blog -\r
-  muchas gracias, Marco!\r
-\r
-- Modified internal cyclic references in ParseResults to use weakrefs;\r
-  this should help reduce the memory footprint of large parsing\r
-  programs, at some cost to performance (3-5%). Suggested by bca48150 on\r
-  the pyparsing wiki, thanks!\r
-\r
-- Enhanced the documentation describing the vagaries and idiosyncracies\r
-  of parsing strings with embedded tabs, and the impact on:\r
-  . parse actions\r
-  . scanString\r
-  . col and line helper functions\r
-  (Suggested by eike welk in response to some unexplained inconsistencies\r
-  between parsed location and offsets in the input string.)\r
-\r
-- Cleaned up internal decorators to preserve function names,\r
-  docstrings, etc.\r
-\r
-\r
-Version 1.4.5 - December, 2006\r
-------------------------------\r
-- Removed debugging print statement from QuotedString class.  Sorry\r
-  for not stripping this out before the 1.4.4 release!\r
-\r
-- A significant performance improvement, the first one in a while!\r
-  For my Verilog parser, this version of pyparsing is about double the\r
-  speed - YMMV.\r
-\r
-- Added support for pickling of ParseResults objects.  (Reported by\r
-  Jeff Poole, thanks Jeff!)\r
-\r
-- Fixed minor bug in makeHTMLTags that did not recognize tag attributes\r
-  with embedded '-' or '_' characters.  Also, added support for\r
-  passing expressions to makeHTMLTags and makeXMLTags, and used this\r
-  feature to define the globals anyOpenTag and anyCloseTag.\r
-\r
-- Fixed error in alphas8bit, I had omitted the y-with-umlaut character.\r
-\r
-- Added punc8bit string to complement alphas8bit - it contains all the\r
-  non-alphabetic, non-blank 8-bit characters.\r
-\r
-- Added commonHTMLEntity expression, to match common HTML "ampersand"\r
-  codes, such as "&lt;", "&gt;", "&amp;", "&nbsp;", and "&quot;".  This\r
-  expression also defines a results name 'entity', which can be used\r
-  to extract the entity field (that is, "lt", "gt", etc.).  Also added\r
-  built-in parse action replaceHTMLEntity, which can be attached to\r
-  commonHTMLEntity to translate "&lt;", "&gt;", "&amp;", "&nbsp;", and\r
-  "&quot;" to "<", ">", "&", " ", and "'".\r
-\r
-- Added example, htmlStripper.py, that strips HTML tags and scripts\r
-  from HTML pages.  It also translates common HTML entities to their\r
-  respective characters.\r
-\r
-\r
-Version 1.4.4 - October, 2006\r
--------------------------------\r
-- Fixed traceParseAction decorator to also trap and record exception\r
-  returns from parse actions, and to handle parse actions with 0,\r
-  1, 2, or 3 arguments.\r
-\r
-- Enhanced parse action normalization to support using classes as\r
-  parse actions; that is, the class constructor is called at parse\r
-  time and the __init__ function is called with 0, 1, 2, or 3\r
-  arguments.  If passing a class as a parse action, the __init__\r
-  method must use one  of the valid parse action parameter list\r
-  formats. (This technique is useful when using pyparsing to compile\r
-  parsed text into a series of application objects - see the new\r
-  example simpleBool.py.)\r
-\r
-- Fixed bug in ParseResults when setting an item using an integer\r
-  index. (Reported by Christopher Lambacher, thanks!)\r
-\r
-- Fixed whitespace-skipping bug, patch submitted by Paolo Losi -\r
-  grazie, Paolo!\r
-\r
-- Fixed bug when a Combine contained an embedded Forward expression,\r
-  reported by cie on the pyparsing wiki - good catch!\r
-\r
-- Fixed listAllMatches bug, when a listAllMatches result was\r
-  nested within another result. (Reported by don pasquale on\r
-  comp.lang.python, well done!)\r
-\r
-- Fixed bug in ParseResults items() method, when returning an item\r
-  marked as listAllMatches=True\r
-\r
-- Fixed bug in definition of cppStyleComment (and javaStyleComment)\r
-  in which '//' line comments were not continued to the next line\r
-  if the line ends with a '\'.  (Reported by eagle-eyed Ralph\r
-  Corderoy!)\r
-\r
-- Optimized re's for cppStyleComment and quotedString for better\r
-  re performance - also provided by Ralph Corderoy, thanks!\r
-\r
-- Added new example, indentedGrammarExample.py, showing how to\r
-  define a grammar using indentation to show grouping (as Python\r
-  does for defining statement nesting).  Instigated by an e-mail\r
-  discussion with Andrew Dalke, thanks Andrew!\r
-\r
-- Added new helper operatorPrecedence (based on e-mail list discussion\r
-  with Ralph Corderoy and Paolo Losi), to facilitate definition of\r
-  grammars for expressions with unary and binary operators.  For\r
-  instance, this grammar defines a 6-function arithmetic expression\r
-  grammar, with unary plus and minus, proper operator precedence,and\r
-  right- and left-associativity:\r
-\r
-    expr = operatorPrecedence( operand,\r
-        [("!", 1, opAssoc.LEFT),\r
-         ("^", 2, opAssoc.RIGHT),\r
-         (oneOf("+ -"), 1, opAssoc.RIGHT),\r
-         (oneOf("* /"), 2, opAssoc.LEFT),\r
-         (oneOf("+ -"), 2, opAssoc.LEFT),]\r
-        )\r
-\r
-  Also added example simpleArith.py and simpleBool.py to provide\r
-  more detailed code samples using this new helper method.\r
-\r
-- Added new helpers matchPreviousLiteral and matchPreviousExpr, for\r
-  creating adaptive parsing expressions that match the same content\r
-  as was parsed in a previous parse expression.  For instance:\r
-\r
-        first = Word(nums)\r
-        matchExpr = first + ":" + matchPreviousLiteral(first)\r
-\r
-  will match "1:1", but not "1:2".  Since this matches at the literal\r
-  level, this will also match the leading "1:1" in "1:10".\r
-\r
-  In contrast:\r
-\r
-        first = Word(nums)\r
-        matchExpr = first + ":" + matchPreviousExpr(first)\r
-\r
-  will *not* match the leading "1:1" in "1:10"; the expressions are\r
-  evaluated first, and then compared, so "1" is compared with "10".\r
-\r
-- Added keepOriginalText parse action.  Sometimes pyparsing's\r
-  whitespace-skipping leaves out too much whitespace.  Adding this\r
-  parse action will restore any internal whitespace for a parse\r
-  expression.  This is especially useful when defining expressions\r
-  for scanString or transformString applications.\r
-\r
-- Added __add__ method for ParseResults class, to better support\r
-  using Python sum built-in for summing ParseResults objects returned\r
-  from scanString.\r
-\r
-- Added reset method for the new OnlyOnce class wrapper for parse\r
-  actions (to allow a grammar to be used multiple times).\r
-\r
-- Added optional maxMatches argument to scanString and searchString,\r
-  to short-circuit scanning after 'n' expression matches are found.\r
-\r
-\r
-Version 1.4.3 - July, 2006\r
-------------------------------\r
-- Fixed implementation of multiple parse actions for an expression\r
-  (added in 1.4.2).\r
-  . setParseAction() reverts to its previous behavior, setting\r
-    one (or more) actions for an expression, overwriting any\r
-    action or actions previously defined\r
-  . new method addParseAction() appends one or more parse actions\r
-    to the list of parse actions attached to an expression\r
-  Now it is harder to accidentally append parse actions to an\r
-  expression, when what you wanted to do was overwrite whatever had\r
-  been defined before.  (Thanks, Jean-Paul Calderone!)\r
-\r
-- Simplified interface to parse actions that do not require all 3\r
-  parse action arguments.  Very rarely do parse actions require more\r
-  than just the parsed tokens, yet parse actions still require all\r
-  3 arguments including the string being parsed and the location\r
-  within the string where the parse expression was matched.  With this\r
-  release, parse actions may now be defined to be called as:\r
-  . fn(string,locn,tokens)  (the current form)\r
-  . fn(locn,tokens)\r
-  . fn(tokens)\r
-  . fn()\r
-  The setParseAction and addParseAction methods will internally decorate\r
-  the provided parse actions with compatible wrappers to conform to\r
-  the full (string,locn,tokens) argument sequence.\r
-\r
-- REMOVED SUPPORT FOR RETURNING PARSE LOCATION FROM A PARSE ACTION.\r
-  I announced this in March, 2004, and gave a final warning in the last\r
-  release.  Now you can return a tuple from a parse action, and it will\r
-  be treated like any other return value (i.e., the tuple will be\r
-  substituted for the incoming tokens passed to the parse action,\r
-  which is useful when trying to parse strings into tuples).\r
-\r
-- Added setFailAction method, taking a callable function fn that\r
-  takes the arguments fn(s,loc,expr,err) where:\r
-  . s - string being parsed\r
-  . loc - location where expression match was attempted and failed\r
-  . expr - the parse expression that failed\r
-  . err - the exception thrown\r
-  The function returns no values.  It may throw ParseFatalException\r
-  if it is desired to stop parsing immediately.\r
-  (Suggested by peter21081944 on wikispaces.com)\r
-\r
-- Added class OnlyOnce as helper wrapper for parse actions.  OnlyOnce\r
-  only permits a parse action to be called one time, after which\r
-  all subsequent calls throw a ParseException.\r
-\r
-- Added traceParseAction decorator to help debug parse actions.\r
-  Simply insert "@traceParseAction" ahead of the definition of your\r
-  parse action, and each invocation will be displayed, along with\r
-  incoming arguments, and returned value.\r
-\r
-- Fixed bug when copying ParserElements using copy() or\r
-  setResultsName().  (Reported by Dan Thill, great catch!)\r
-\r
-- Fixed bug in asXML() where token text contains <, >, and &\r
-  characters - generated XML now escapes these as &lt;, &gt; and\r
-  &amp;.  (Reported by Jacek Sieka, thanks!)\r
-\r
-- Fixed bug in SkipTo() when searching for a StringEnd(). (Reported\r
-  by Pete McEvoy, thanks Pete!)\r
-\r
-- Fixed "except Exception" statements, the most critical added as part\r
-  of the packrat parsing enhancement.  (Thanks, Erick Tryzelaar!)\r
-\r
-- Fixed end-of-string infinite looping on LineEnd and StringEnd\r
-  expressions.  (Thanks again to Erick Tryzelaar.)\r
-\r
-- Modified setWhitespaceChars to return self, to be consistent with\r
-  other ParserElement modifiers. (Suggested by Erick Tryzelaar.)\r
-\r
-- Fixed bug/typo in new ParseResults.dump() method.\r
-\r
-- Fixed bug in searchString() method, in which only the first token of\r
-  an expression was returned.  searchString() now returns a\r
-  ParseResults collection of all search matches.\r
-\r
-- Added example program removeLineBreaks.py, a string transformer that\r
-  converts text files with hard line-breaks into one with line breaks\r
-  only between paragraphs.\r
-\r
-- Added example program listAllMatches.py, to illustrate using the\r
-  listAllMatches option when specifying results names (also shows new\r
-  support for passing lists to oneOf).\r
-\r
-- Added example program linenoExample.py, to illustrate using the\r
-  helper methods lineno, line, and col, and returning objects from a\r
-  parse action.\r
-\r
-- Added example program parseListString.py, to which can parse the\r
-  string representation of a Python list back into a true list.  Taken\r
-  mostly from my PyCon presentation examples, but now with support\r
-  for tuple elements, too!\r
-\r
-\r
-\r
-Version 1.4.2 - April 1, 2006 (No foolin'!)\r
--------------------------------------------\r
-- Significant speedup from memoizing nested expressions (a technique\r
-  known as "packrat parsing"), thanks to Chris Lesniewski-Laas!  Your\r
-  mileage may vary, but my Verilog parser almost doubled in speed to\r
-  over 600 lines/sec!\r
-\r
-  This speedup may break existing programs that use parse actions that\r
-  have side-effects.  For this reason, packrat parsing is disabled when\r
-  you first import pyparsing.  To activate the packrat feature, your\r
-  program must call the class method ParserElement.enablePackrat().  If\r
-  your program uses psyco to "compile as you go", you must call\r
-  enablePackrat before calling psyco.full().  If you do not do this,\r
-  Python will crash.  For best results, call enablePackrat() immediately\r
-  after importing pyparsing.\r
-\r
-- Added new helper method countedArray(expr), for defining patterns that\r
-  start with a leading integer to indicate the number of array elements,\r
-  followed by that many elements, matching the given expr parse\r
-  expression.  For instance, this two-liner:\r
-    wordArray = countedArray(Word(alphas))\r
-    print wordArray.parseString("3 Practicality beats purity")[0]\r
-  returns the parsed array of words:\r
-    ['Practicality', 'beats', 'purity']\r
-  The leading token '3' is suppressed, although it is easily obtained\r
-  from the length of the returned array.\r
-  (Inspired by e-mail discussion with Ralf Vosseler.)\r
-\r
-- Added support for attaching multiple parse actions to a single\r
-  ParserElement. (Suggested by Dan "Dang" Griffith - nice idea, Dan!)\r
-\r
-- Added support for asymmetric quoting characters in the recently-added\r
-  QuotedString class.  Now you can define your own quoted string syntax\r
-  like "<<This is a string in double angle brackets.>>".  To define\r
-  this custom form of QuotedString, your code would define:\r
-    dblAngleQuotedString = QuotedString('<<',endQuoteChar='>>')\r
-  QuotedString also supports escaped quotes, escape character other\r
-  than '\', and multiline.\r
-\r
-- Changed the default value returned internally by Optional, so that\r
-  None can be used as a default value.  (Suggested by Steven Bethard -\r
-  I finally saw the light!)\r
-\r
-- Added dump() method to ParseResults, to make it easier to list out\r
-  and diagnose values returned from calling parseString.\r
-\r
-- A new example, a search query string parser, submitted by Steven\r
-  Mooij and Rudolph Froger - a very interesting application, thanks!\r
-\r
-- Added an example that parses the BNF in Python's Grammar file, in\r
-  support of generating Python grammar documentation. (Suggested by\r
-  J H Stovall.)\r
-\r
-- A new example, submitted by Tim Cera, of a flexible parser module,\r
-  using a simple config variable to adjust parsing for input formats\r
-  that have slight variations - thanks, Tim!\r
-\r
-- Added an example for parsing Roman numerals, showing the capability\r
-  of parse actions to "compile" Roman numerals into their integer\r
-  values during parsing.\r
-\r
-- Added a new docs directory, for additional documentation or help.\r
-  Currently, this includes the text and examples from my recent\r
-  presentation at PyCon.\r
-\r
-- Fixed another typo in CaselessKeyword, thanks Stefan Behnel.\r
-\r
-- Expanded oneOf to also accept tuples, not just lists.  This really\r
-  should be sufficient...\r
-\r
-- Added deprecation warnings when tuple is returned from a parse action.\r
-  Looking back, I see that I originally deprecated this feature in March,\r
-  2004, so I'm guessing people really shouldn't have been using this\r
-  feature - I'll drop it altogether in the next release, which will\r
-  allow users to return a tuple from a parse action (which is really\r
-  handy when trying to reconstuct tuples from a tuple string\r
-  representation!).\r
-\r
-\r
-Version 1.4.1 - February, 2006\r
-------------------------------\r
-- Converted generator expression in QuotedString class to list\r
-  comprehension, to retain compatibility with Python 2.3. (Thanks, Titus\r
-  Brown for the heads-up!)\r
-\r
-- Added searchString() method to ParserElement, as an alternative to\r
-  using "scanString(instring).next()[0][0]" to search through a string\r
-  looking for a substring matching a given parse expression. (Inspired by\r
-  e-mail conversation with Dave Feustel.)\r
-\r
-- Modified oneOf to accept lists of strings as well as a single string\r
-  of space-delimited literals.  (Suggested by Jacek Sieka - thanks!)\r
-\r
-- Removed deprecated use of Upcase in pyparsing test code. (Also caught by\r
-  Titus Brown.)\r
-\r
-- Removed lstrip() call from Literal - too aggressive in stripping\r
-  whitespace which may be valid for some grammars.  (Point raised by Jacek\r
-  Sieka).  Also, made Literal more robust in the event of passing an empty\r
-  string.\r
-\r
-- Fixed bug in replaceWith when returning None.\r
-\r
-- Added cautionary documentation for Forward class when assigning a\r
-  MatchFirst expression, as in:\r
-    fwdExpr << a | b | c\r
-  Precedence of operators causes this to be evaluated as:\r
-    (fwdExpr << a) | b | c\r
-  thereby leaving b and c out as parseable alternatives.  Users must\r
-  explicitly group the values inserted into the Forward:\r
-    fwdExpr << (a | b | c)\r
-  (Suggested by Scot Wilcoxon - thanks, Scot!)\r
-\r
-\r
-Version 1.4 - January 18, 2006\r
-------------------------------\r
-- Added Regex class, to permit definition of complex embedded expressions\r
-  using regular expressions. (Enhancement provided by John Beisley, great\r
-  job!)\r
-\r
-- Converted implementations of Word, oneOf, quoted string, and comment\r
-  helpers to utilize regular expression matching.  Performance improvements\r
-  in the 20-40% range.\r
-\r
-- Added QuotedString class, to support definition of non-standard quoted\r
-  strings (Suggested by Guillaume Proulx, thanks!)\r
-\r
-- Added CaselessKeyword class, to streamline grammars with, well, caseless\r
-  keywords (Proposed by Stefan Behnel, thanks!)\r
-\r
-- Fixed bug in SkipTo, when using an ignoreable expression. (Patch provided\r
-  by Anonymous, thanks, whoever-you-are!)\r
-\r
-- Fixed typo in NoMatch class. (Good catch, Stefan Behnel!)\r
-\r
-- Fixed minor bug in _makeTags(), using string.printables instead of\r
-  pyparsing.printables.\r
-\r
-- Cleaned up some of the expressions created by makeXXXTags helpers, to\r
-  suppress extraneous <> characters.\r
-\r
-- Added some grammar definition-time checking to verify that a grammar is\r
-  being built using proper ParserElements.\r
-\r
-- Added examples:\r
-  . LAparser.py - linear algebra C preprocessor (submitted by Mike Ellis,\r
-    thanks Mike!)\r
-  . wordsToNum.py - converts word description of a number back to\r
-    the original number (such as 'one hundred and twenty three' -> 123)\r
-  . updated fourFn.py to support unary minus, added BNF comments\r
-\r
-\r
-Version 1.3.3 - September 12, 2005\r
-----------------------------------\r
-- Improved support for Unicode strings that would be returned using\r
-  srange.  Added greetingInKorean.py example, for a Korean version of\r
-  "Hello, World!" using Unicode. (Thanks, June Kim!)\r
-\r
-- Added 'hexnums' string constant (nums+"ABCDEFabcdef") for defining\r
-  hexadecimal value expressions.\r
-\r
-- NOTE: ===THIS CHANGE MAY BREAK EXISTING CODE===\r
-  Modified tag and results definitions returned by makeHTMLTags(),\r
-  to better support the looseness of HTML parsing.  Tags to be\r
-  parsed are now caseless, and keys generated for tag attributes are\r
-  now converted to lower case.\r
-\r
-  Formerly, makeXMLTags("XYZ") would return a tag with results\r
-  name of "startXYZ", this has been changed to "startXyz".  If this\r
-  tag is matched against '<XYZ Abc="1" DEF="2" ghi="3">', the\r
-  matched keys formerly would be "Abc", "DEF", and "ghi"; keys are\r
-  now converted to lower case, giving keys of "abc", "def", and\r
-  "ghi".  These changes were made to try to address the lax\r
-  case sensitivity agreement between start and end tags in many\r
-  HTML pages.\r
-\r
-  No changes were made to makeXMLTags(), which assumes more rigorous\r
-  parsing rules.\r
-\r
-  Also, cleaned up case-sensitivity bugs in closing tags, and\r
-  switched to using Keyword instead of Literal class for tags.\r
-  (Thanks, Steve Young, for getting me to look at these in more\r
-  detail!)\r
-\r
-- Added two helper parse actions, upcaseTokens and downcaseTokens,\r
-  which will convert matched text to all uppercase or lowercase,\r
-  respectively.\r
-\r
-- Deprecated Upcase class, to be replaced by upcaseTokens parse\r
-  action.\r
-\r
-- Converted messages sent to stderr to use warnings module, such as\r
-  when constructing a Literal with an empty string, one should use\r
-  the Empty() class or the empty helper instead.\r
-\r
-- Added ' ' (space) as an escapable character within a quoted\r
-  string.\r
-\r
-- Added helper expressions for common comment types, in addition\r
-  to the existing cStyleComment (/*...*/) and htmlStyleComment\r
-  (<!-- ... -->)\r
-  . dblSlashComment = // ... (to end of line)\r
-  . cppStyleComment = cStyleComment or dblSlashComment\r
-  . javaStyleComment = cppStyleComment\r
-  . pythonStyleComment = # ... (to end of line)\r
-\r
-\r
-\r
-Version 1.3.2 - July 24, 2005\r
------------------------------\r
-- Added Each class as an enhanced version of And.  'Each' requires\r
-  that all given expressions be present, but may occur in any order.\r
-  Special handling is provided to group ZeroOrMore and OneOrMore\r
-  elements that occur out-of-order in the input string.  You can also\r
-  construct 'Each' objects by joining expressions with the '&'\r
-  operator.  When using the Each class, results names are strongly\r
-  recommended for accessing the matched tokens. (Suggested by Pradam\r
-  Amini - thanks, Pradam!)\r
-\r
-- Stricter interpretation of 'max' qualifier on Word elements.  If the\r
-  'max' attribute is specified, matching will fail if an input field\r
-  contains more than 'max' consecutive body characters.  For example,\r
-  previously, Word(nums,max=3) would match the first three characters\r
-  of '0123456', returning '012' and continuing parsing at '3'.  Now,\r
-  when constructed using the max attribute, Word will raise an\r
-  exception with this string.\r
-\r
-- Cleaner handling of nested dictionaries returned by Dict.  No\r
-  longer necessary to dereference sub-dictionaries as element [0] of\r
-  their parents.\r
-  === NOTE: THIS CHANGE MAY BREAK SOME EXISTING CODE, BUT ONLY IF\r
-  PARSING NESTED DICTIONARIES USING THE LITTLE-USED DICT CLASS ===\r
-  (Prompted by discussion thread on the Python Tutor list, with\r
-  contributions from Danny Yoo, Kent Johnson, and original post by\r
-  Liam Clarke - thanks all!)\r
-\r
-\r
-\r
-Version 1.3.1 - June, 2005\r
-----------------------------------\r
-- Added markInputline() method to ParseException, to display the input\r
-  text line location of the parsing exception. (Thanks, Stefan Behnel!)\r
-\r
-- Added setDefaultKeywordChars(), so that Keyword definitions using a\r
-  custom keyword character set do not all need to add the keywordChars\r
-  constructor argument (similar to setDefaultWhitespaceChars()).\r
-  (suggested by rzhanka on the SourceForge pyparsing forum.)\r
-\r
-- Simplified passing debug actions to setDebugAction().  You can now\r
-  pass 'None' for a debug action if you want to take the default\r
-  debug behavior.  To suppress a particular debug action, you can pass\r
-  the pyparsing method nullDebugAction.\r
-\r
-- Refactored parse exception classes, moved all behavior to\r
-  ParseBaseException, and the former ParseException is now a subclass of\r
-  ParseBaseException.  Added a second subclass, ParseFatalException, as\r
-  a subclass of ParseBaseException.  User-defined parse actions can raise\r
-  ParseFatalException if a data inconsistency is detected (such as a\r
-  begin-tag/end-tag mismatch), and this will stop all parsing immediately.\r
-  (Inspired by e-mail thread with Michele Petrazzo - thanks, Michelle!)\r
-\r
-- Added helper methods makeXMLTags and makeHTMLTags, that simplify the\r
-  definition of XML or HTML tag parse expressions for a given tagname.\r
-  Both functions return a pair of parse expressions, one for the opening\r
-  tag (that is, '<tagname>') and one for the closing tag ('</tagname>').\r
-  The opening tagame also recognizes any attribute definitions that have\r
-  been included in the opening tag, as well as an empty tag (one with a\r
-  trailing '/', as in '<BODY/>' which is equivalent to '<BODY></BODY>').\r
-  makeXMLTags uses stricter XML syntax for attributes, requiring that they\r
-  be enclosed in double quote characters - makeHTMLTags is more lenient,\r
-  and accepts single-quoted strings or any contiguous string of characters\r
-  up to the next whitespace character or '>' character.  Attributes can\r
-  be retrieved as dictionary or attribute values of the returned results\r
-  from the opening tag.\r
-\r
-- Added example minimath2.py, a refinement on fourFn.py that adds\r
-  an interactive session and support for variables.  (Thanks, Steven Siew!)\r
-\r
-- Added performance improvement, up to 20% reduction!  (Found while working\r
-  with Wolfgang Borgert on performance tuning of his TTCN3 parser.)\r
-\r
-- And another performance improvement, up to 25%, when using scanString!\r
-  (Found while working with Henrik Westlund on his C header file scanner.)\r
-\r
-- Updated UML diagrams to reflect latest class/method changes.\r
-\r
-\r
-Version 1.3 - March, 2005\r
-----------------------------------\r
-- Added new Keyword class, as a special form of Literal.  Keywords\r
-  must be followed by whitespace or other non-keyword characters, to\r
-  distinguish them from variables or other identifiers that just\r
-  happen to start with the same characters as a keyword.  For instance,\r
-  the input string containing "ifOnlyIfOnly" will match a Literal("if")\r
-  at the beginning and in the middle, but will fail to match a\r
-  Keyword("if").  Keyword("if") will match only strings such as "if only"\r
-  or "if(only)". (Proposed by Wolfgang Borgert, and Berteun Damman\r
-  separately requested this on comp.lang.python - great idea!)\r
-\r
-- Added setWhitespaceChars() method to override the characters to be\r
-  skipped as whitespace before matching a particular ParseElement.  Also\r
-  added the class-level method setDefaultWhitespaceChars(), to allow\r
-  users to override the default set of whitespace characters (space,\r
-  tab, newline, and return) for all subsequently defined ParseElements.\r
-  (Inspired by Klaas Hofstra's inquiry on the Sourceforge pyparsing\r
-  forum.)\r
-\r
-- Added helper parse actions to support some very common parse\r
-  action use cases:\r
-  . replaceWith(replStr) - replaces the matching tokens with the\r
-    provided replStr replacement string; especially useful with\r
-    transformString()\r
-  . removeQuotes - removes first and last character from string enclosed\r
-    in quotes (note - NOT the same as the string strip() method, as only\r
-    a single character is removed at each end)\r
-\r
-- Added copy() method to ParseElement, to make it easier to define\r
-  different parse actions for the same basic parse expression.  (Note, copy\r
-  is implicitly called when using setResultsName().)\r
-\r
-\r
-  (The following changes were posted to CVS as Version 1.2.3 -\r
-  October-December, 2004)\r
-\r
-- Added support for Unicode strings in creating grammar definitions.\r
-  (Big thanks to Gavin Panella!)\r
-\r
-- Added constant alphas8bit to include the following 8-bit characters:\r
-    ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ\r
-\r
-- Added srange() function to simplify definition of Word elements, using\r
-  regexp-like '[A-Za-z0-9]' syntax.  This also simplifies referencing\r
-  common 8-bit characters.\r
-\r
-- Fixed bug in Dict when a single element Dict was embedded within another\r
-  Dict. (Thanks Andy Yates for catching this one!)\r
-\r
-- Added 'formatted' argument to ParseResults.asXML().  If set to False,\r
-  suppresses insertion of whitespace for pretty-print formatting.  Default\r
-  equals True for backward compatibility.\r
-\r
-- Added setDebugActions() function to ParserElement, to allow user-defined\r
-  debugging actions.\r
-\r
-- Added support for escaped quotes (either in \', \", or doubled quote\r
-  form) to the predefined expressions for quoted strings. (Thanks, Ero\r
-  Carrera!)\r
-\r
-- Minor performance improvement (~5%) converting "char in string" tests\r
-  to "char in dict". (Suggested by Gavin Panella, cool idea!)\r
-\r
-\r
-Version 1.2.2 - September 27, 2004\r
-----------------------------------\r
-- Modified delimitedList to accept an expression as the delimiter, instead\r
-  of only accepting strings.\r
-\r
-- Modified ParseResults, to convert integer field keys to strings (to\r
-  avoid confusion with list access).\r
-\r
-- Modified Combine, to convert all embedded tokens to strings before\r
-  combining.\r
-\r
-- Fixed bug in MatchFirst in which parse actions would be called for\r
-  expressions that only partially match. (Thanks, John Hunter!)\r
-\r
-- Fixed bug in fourFn.py example that fixes right-associativity of ^\r
-  operator. (Thanks, Andrea Griffini!)\r
-\r
-- Added class FollowedBy(expression), to look ahead in the input string\r
-  without consuming tokens.\r
-\r
-- Added class NoMatch that never matches any input. Can be useful in\r
-  debugging, and in very specialized grammars.\r
-\r
-- Added example pgn.py, for parsing chess game files stored in Portable\r
-  Game Notation. (Thanks, Alberto Santini!)\r
-\r
-\r
-Version 1.2.1 - August 19, 2004\r
--------------------------------\r
-- Added SkipTo(expression) token type, simplifying grammars that only\r
-  want to specify delimiting expressions, and want to match any characters\r
-  between them.\r
-\r
-- Added helper method dictOf(key,value), making it easier to work with\r
-  the Dict class. (Inspired by Pavel Volkovitskiy, thanks!).\r
-\r
-- Added optional argument listAllMatches (default=False) to\r
-  setResultsName().  Setting listAllMatches to True overrides the default\r
-  modal setting of tokens to results names; instead, the results name\r
-  acts as an accumulator for all matching tokens within the local\r
-  repetition group. (Suggested by Amaury Le Leyzour - thanks!)\r
-\r
-- Fixed bug in ParseResults, throwing exception when trying to extract\r
-  slice, or make a copy using [:]. (Thanks, Wilson Fowlie!)\r
-\r
-- Fixed bug in transformString() when the input string contains <TAB>'s\r
-  (Thanks, Rick Walia!).\r
-\r
-- Fixed bug in returning tokens from un-Grouped And's, Or's and\r
-  MatchFirst's, where too many tokens would be included in the results,\r
-  confounding parse actions and returned results.\r
-\r
-- Fixed bug in naming ParseResults returned by And's, Or's, and Match\r
-  First's.\r
-\r
-- Fixed bug in LineEnd() - matching this token now correctly consumes\r
-  and returns the end of line "\n".\r
-\r
-- Added a beautiful example for parsing Mozilla calendar files (Thanks,\r
-  Petri Savolainen!).\r
-\r
-- Added support for dynamically modifying Forward expressions during\r
-  parsing.\r
-\r
-\r
-Version 1.2 - 20 June 2004\r
---------------------------\r
-- Added definition for htmlComment to help support HTML scanning and\r
-  parsing.\r
-\r
-- Fixed bug in generating XML for Dict classes, in which trailing item was\r
-  duplicated in the output XML.\r
-\r
-- Fixed release bug in which scanExamples.py was omitted from release\r
-  files.\r
-\r
-- Fixed bug in transformString() when parse actions are not defined on the\r
-  outermost parser element.\r
-\r
-- Added example urlExtractor.py, as another example of using scanString\r
-  and parse actions.\r
-\r
-\r
-Version 1.2beta3 - 4 June 2004\r
-------------------------------\r
-- Added White() token type, analogous to Word, to match on whitespace\r
-  characters.  Use White in parsers with significant whitespace (such as\r
-  configuration file parsers that use indentation to indicate grouping).\r
-  Construct White with a string containing the whitespace characters to be\r
-  matched.  Similar to Word, White also takes optional min, max, and exact\r
-  parameters.\r
-\r
-- As part of supporting whitespace-signficant parsing, added parseWithTabs()\r
-  method to ParserElement, to override the default behavior in parseString\r
-  of automatically expanding tabs to spaces.  To retain tabs during\r
-  parsing, call parseWithTabs() before calling parseString(), parseFile() or\r
-  scanString(). (Thanks, Jean-Guillaume Paradis for catching this, and for\r
-  your suggestions on whitespace-significant parsing.)\r
-\r
-- Added transformString() method to ParseElement, as a complement to\r
-  scanString().  To use transformString, define a grammar and attach a parse\r
-  action to the overall grammar that modifies the returned token list.\r
-  Invoking transformString() on a target string will then scan for matches,\r
-  and replace the matched text patterns according to the logic in the parse\r
-  action.  transformString() returns the resulting transformed string.\r
-  (Note: transformString() does *not* automatically expand tabs to spaces.)\r
-  Also added scanExamples.py to the examples directory to show sample uses of\r
-  scanString() and transformString().\r
-\r
-- Removed group() method that was introduced in beta2.  This turns out NOT to\r
-  be equivalent to nesting within a Group() object, and I'd prefer not to sow\r
-  more seeds of confusion.\r
-\r
-- Fixed behavior of asXML() where tags for groups were incorrectly duplicated.\r
-  (Thanks, Brad Clements!)\r
-\r
-- Changed beta version message to display to stderr instead of stdout, to\r
-  make asXML() easier to use.  (Thanks again, Brad.)\r
-\r
-\r
-Version 1.2beta2 - 19 May 2004\r
-------------------------------\r
-- *** SIMPLIFIED API *** - Parse actions that do not modify the list of tokens\r
-  no longer need to return a value.  This simplifies those parse actions that\r
-  use the list of tokens to update a counter or record or display some of the\r
-  token content; these parse actions can simply end without having to specify\r
-  'return toks'.\r
-\r
-- *** POSSIBLE API INCOMPATIBILITY *** - Fixed CaselessLiteral bug, where the\r
-  returned token text was not the original string (as stated in the docs),\r
-  but the original string converted to upper case.  (Thanks, Dang Griffith!)\r
-  **NOTE: this may break some code that relied on this erroneous behavior.\r
-  Users should scan their code for uses of CaselessLiteral.**\r
-\r
-- *** POSSIBLE CODE INCOMPATIBILITY *** - I have renamed the internal\r
-  attributes on ParseResults from 'dict' and 'list' to '__tokdict' and\r
-  '__toklist', to avoid collisions with user-defined data fields named 'dict'\r
-  and 'list'.  Any client code that accesses these attributes directly will\r
-  need to be modified.  Hopefully the implementation of methods such as keys(),\r
-  items(), len(), etc. on ParseResults will make such direct attribute\r
-  accessess unnecessary.\r
-\r
-- Added asXML() method to ParseResults.  This greatly simplifies the process\r
-  of parsing an input data file and generating XML-structured data.\r
-\r
-- Added getName() method to ParseResults.  This method is helpful when\r
-  a grammar specifies ZeroOrMore or OneOrMore of a MatchFirst or Or\r
-  expression, and the parsing code needs to know which expression matched.\r
-  (Thanks, Eric van der Vlist, for this idea!)\r
-\r
-- Added items() and values() methods to ParseResults, to better support using\r
-  ParseResults as a Dictionary.\r
-\r
-- Added parseFile() as a convenience function to parse the contents of an\r
-  entire text file.  Accepts either a file name or a file object.  (Thanks\r
-  again, Dang!)\r
-\r
-- Added group() method to And, Or, and MatchFirst, as a short-cut alternative\r
-  to enclosing a construct inside a Group object.\r
-\r
-- Extended fourFn.py to support exponentiation, and simple built-in functions.\r
-\r
-- Added EBNF parser to examples, including a demo where it parses its own\r
-  EBNF!  (Thanks to Seo Sanghyeon!)\r
-\r
-- Added Delphi Form parser to examples, dfmparse.py, plus a couple of\r
-  sample Delphi forms as tests.  (Well done, Dang!)\r
-\r
-- Another performance speedup, 5-10%, inspired by Dang!  Plus about a 20%\r
-  speedup, by pre-constructing and cacheing exception objects instead of\r
-  constructing them on the fly.\r
-\r
-- Fixed minor bug when specifying oneOf() with 'caseless=True'.\r
-\r
-- Cleaned up and added a few more docstrings, to improve the generated docs.\r
-\r
-\r
-Version 1.1.2 - 21 Mar 2004\r
----------------------------\r
-- Fixed minor bug in scanString(), so that start location is at the start of\r
-  the matched tokens, not at the start of the whitespace before the matched\r
-  tokens.\r
-\r
-- Inclusion of HTML documentation, generated using Epydoc.  Reformatted some\r
-  doc strings to better generate readable docs. (Beautiful work, Ed Loper,\r
-  thanks for Epydoc!)\r
-\r
-- Minor performance speedup, 5-15%\r
-\r
-- And on a process note, I've used the unittest module to define a series of\r
-  unit tests, to help avoid the embarrassment of the version 1.1 snafu.\r
-\r
-\r
-Version 1.1.1 - 6 Mar 2004\r
---------------------------\r
-- Fixed critical bug introduced in 1.1, which broke MatchFirst(!) token\r
-  matching.\r
-  **THANK YOU, SEO SANGHYEON!!!**\r
-\r
-- Added "from future import __generators__" to permit running under\r
-  pre-Python 2.3.\r
-\r
-- Added example getNTPservers.py, showing how to use pyparsing to extract\r
-  a text pattern from the HTML of a web page.\r
-\r
-\r
-Version 1.1 - 3 Mar 2004\r
--------------------------\r
-- ***Changed API*** - While testing out parse actions, I found that the value\r
-  of loc passed in was not the starting location of the matched tokens, but\r
-  the location of the next token in the list.  With this version, the location\r
-  passed to the parse action is now the starting location of the tokens that\r
-  matched.\r
-\r
-  A second part of this change is that the return value of parse actions no\r
-  longer needs to return a tuple containing both the location and the parsed\r
-  tokens (which may optionally be modified); parse actions only need to return\r
-  the list of tokens.  Parse actions that return a tuple are deprecated; they\r
-  will still work properly for conversion/compatibility, but this behavior will\r
-  be removed in a future version.\r
-\r
-- Added validate() method, to help diagnose infinite recursion in a grammar tree.\r
-  validate() is not 100% fool-proof, but it can help track down nasty infinite\r
-  looping due to recursively referencing the same grammar construct without some\r
-  intervening characters.\r
-\r
-- Cleaned up default listing of some parse element types, to more closely match\r
-  ordinary BNF.  Instead of the form <classname>:[contents-list], some changes\r
-  are:\r
-  . And(token1,token2,token3) is "{ token1 token2 token3 }"\r
-  . Or(token1,token2,token3) is "{ token1 ^ token2 ^ token3 }"\r
-  . MatchFirst(token1,token2,token3) is "{ token1 | token2 | token3 }"\r
-  . Optional(token) is "[ token ]"\r
-  . OneOrMore(token) is "{ token }..."\r
-  . ZeroOrMore(token) is "[ token ]..."\r
-\r
-- Fixed an infinite loop in oneOf if the input string contains a duplicated\r
-  option. (Thanks Brad Clements)\r
-\r
-- Fixed a bug when specifying a results name on an Optional token. (Thanks\r
-  again, Brad Clements)\r
-\r
-- Fixed a bug introduced in 1.0.6 when I converted quotedString to use\r
-  CharsNotIn; I accidentally permitted quoted strings to span newlines.  I have\r
-  fixed this in this version to go back to the original behavior, in which\r
-  quoted strings do *not* span newlines.\r
-\r
-- Fixed minor bug in HTTP server log parser. (Thanks Jim Richardson)\r
-\r
-\r
-Version 1.0.6 -  13 Feb 2004\r
-----------------------------\r
-- Added CharsNotIn class (Thanks, Lee SangYeong).  This is the opposite of\r
-  Word, in that it is constructed with a set of characters *not* to be matched.\r
-  (This enhancement also allowed me to clean up and simplify some of the\r
-  definitions for quoted strings, cStyleComment, and restOfLine.)\r
-\r
-- **MINOR API CHANGE** - Added joinString argument to the __init__ method of\r
-  Combine (Thanks, Thomas Kalka).  joinString defaults to "", but some\r
-  applications might choose some other string to use instead, such as a blank\r
-  or newline.  joinString was inserted as the second argument to __init__,\r
-  so if you have code that specifies an adjacent value, without using\r
-  'adjacent=', this code will break.\r
-\r
-- Modified LineStart to recognize the start of an empty line.\r
-\r
-- Added optional caseless flag to oneOf(), to create a list of CaselessLiteral\r
-  tokens instead of Literal tokens.\r
-\r
-- Added some enhancements to the SQL example:\r
-  . Oracle-style comments (Thanks to Harald Armin Massa)\r
-  . simple WHERE clause\r
-\r
-- Minor performance speedup - 5-15%\r
-\r
-\r
-Version 1.0.5 -  19 Jan 2004\r
-----------------------------\r
-- Added scanString() generator method to ParseElement, to support regex-like\r
-  pattern-searching\r
-\r
-- Added items() list to ParseResults, to return named results as a\r
-  list of (key,value) pairs\r
-\r
-- Fixed memory overflow in asList() for deeply nested ParseResults (Thanks,\r
-  Sverrir Valgeirsson)\r
-\r
-- Minor performance speedup - 10-15%\r
-\r
-\r
-Version 1.0.4 -  8 Jan 2004\r
----------------------------\r
-- Added positional tokens StringStart, StringEnd, LineStart, and LineEnd\r
-\r
-- Added commaSeparatedList to pre-defined global token definitions; also added\r
-  commasep.py to the examples directory, to demonstrate the differences between\r
-  parsing comma-separated data and simple line-splitting at commas\r
-\r
-- Minor API change: delimitedList does not automatically enclose the\r
-  list elements in a Group, but makes this the responsibility of the caller;\r
-  also, if invoked using 'combine=True', the list delimiters are also included\r
-  in the returned text (good for scoped variables, such as a.b.c or a::b::c, or\r
-  for directory paths such as a/b/c)\r
-\r
-- Performance speed-up again, 30-40%\r
-\r
-- Added httpServerLogParser.py to examples directory, as this is\r
-  a common parsing task\r
-\r
-\r
-Version 1.0.3 - 23 Dec 2003\r
----------------------------\r
-- Performance speed-up again, 20-40%\r
-\r
-- Added Python distutils installation setup.py, etc. (thanks, Dave Kuhlman)\r
-\r
-\r
-Version 1.0.2 - 18 Dec 2003\r
----------------------------\r
-- **NOTE: Changed API again!!!** (for the last time, I hope)\r
-\r
-  + Renamed module from parsing to pyparsing, to better reflect Python\r
-    linkage.\r
-\r
-- Also added dictExample.py to examples directory, to illustrate\r
-  usage of the Dict class.\r
-\r
-\r
-Version 1.0.1 - 17 Dec 2003\r
----------------------------\r
-- **NOTE:  Changed API!**\r
-\r
-  + Renamed 'len' argument on Word.__init__() to 'exact'\r
-\r
-- Performance speed-up, 10-30%\r
-\r
-\r
-Version 1.0.0 - 15 Dec 2003\r
----------------------------\r
-- Initial public release\r
-\r
-Version 0.1.1 thru 0.1.17 - October-November, 2003\r
---------------------------------------------------\r
-- initial development iterations:\r
-    - added Dict, Group\r
-    - added helper methods oneOf, delimitedList\r
-    - added helpers quotedString (and double and single), restOfLine, cStyleComment\r
-    - added MatchFirst as an alternative to the slower Or\r
-    - added UML class diagram\r
-    - fixed various logic bugs\r
+==========
+Change Log
+==========
+
+Version 2.3.1 - January, 2019
+-----------------------------
+- POSSIBLE API CHANGE: this release fixes a bug when results names were
+  attached to a MatchFirst or Or object containing an And object.
+  Previously, a results name on an And object within an enclosing MatchFirst
+  or Or could return just the first token in the And. Now, all the tokens
+  matched by the And are correctly returned. This may result in subtle
+  changes in the tokens returned if you have this condition in your pyparsing
+  scripts.
+
+- New staticmethod ParseException.explain() to help diagnose parse exceptions
+  by showing the failing input line and the trace of ParserElements in
+  the parser leading up to the exception. explain() returns a multiline
+  string listing each element by name. (This is still an experimental
+  method, and the method signature and format of the returned string may
+  evolve over the next few releases.)
+
+  Example:
+        # define a parser to parse an integer followed by an
+        # alphabetic word
+        expr = pp.Word(pp.nums).setName("int")
+               + pp.Word(pp.alphas).setName("word")
+        try:
+            # parse a string with a numeric second value instead of alpha
+            expr.parseString("123 355")
+        except pp.ParseException as pe:
+            print_(pp.ParseException.explain(pe))
+
+  Prints:
+        123 355
+            ^
+        ParseException: Expected word (at char 4), (line:1, col:5)
+        __main__.ExplainExceptionTest
+        pyparsing.And - {int word}
+        pyparsing.Word - word
+
+  explain() will accept any exception type and will list the function
+  names and parse expressions in the stack trace. This is especially
+  useful when an exception is raised in a parse action.
+
+  Note: explain() is only supported under Python 3.
+
+- Fix bug in dictOf which could match an empty sequence, making it
+  infinitely loop if wrapped in a OneOrMore.
+
+- Added unicode sets to pyparsing_unicode for Latin-A and Latin-B ranges.
+
+- Added ability to define custom unicode sets as combinations of other sets
+  using multiple inheritance.
+
+    class Turkish_set(pp.pyparsing_unicode.Latin1, pp.pyparsing_unicode.LatinA):
+        pass
+
+    turkish_word = pp.Word(Turkish_set.alphas)
+
+- Updated state machine import examples, with state machine demos for:
+  . traffic light
+  . library book checkin/checkout
+  . document review/approval
+
+  In the traffic light example, you can use the custom 'statemachine' keyword
+  to define the states for a traffic light, and have the state classes
+  auto-generated for you:
+
+      statemachine TrafficLightState:
+          Red -> Green
+          Green -> Yellow
+          Yellow -> Red
+
+  Similar for state machines with named transitions, like the library book
+  state example:
+
+      statemachine LibraryBookState:
+          New -(shelve)-> Available
+          Available -(reserve)-> OnHold
+          OnHold -(release)-> Available
+          Available -(checkout)-> CheckedOut
+          CheckedOut -(checkin)-> Available
+
+  Once the classes are defined, then additional Python code can reference those
+  classes to add class attributes, instance methods, etc.
+
+  See the examples in examples/statemachine
+
+- Added an example parser for the decaf language. This language is used in
+  CS compiler classes in many colleges and universities.
+
+- Fixup of docstrings to Sphinx format, inclusion of test files in the source
+  package, and convert markdown to rst throughout the distribution, great job
+  by Matěj Cepl!
+
+- Expanded the whitespace characters recognized by the White class to include
+  all unicode defined spaces. Suggested in Issue #51 by rtkjbillo.
+
+- Added optional postParse argument to ParserElement.runTests() to add a
+  custom callback to be called for test strings that parse successfully. Useful
+  for running tests that do additional validation or processing on the parsed
+  results. See updated chemicalFormulas.py example.
+
+- Removed distutils fallback in setup.py. If installing the package fails,
+  please update to the latest version of setuptools. Plus overall project code
+  cleanup (CRLFs, whitespace, imports, etc.), thanks Jon Dufresne!
+
+- Fix bug in CaselessKeyword, to make its behavior consistent with
+  Keyword(caseless=True). Fixes Issue #65 reported by telesphore.
+
+
+Version 2.3.0 - October, 2018
+-----------------------------
+- NEW SUPPORT FOR UNICODE CHARACTER RANGES
+  This release introduces the pyparsing_unicode namespace class, defining
+  a series of language character sets to simplify the definition of alphas,
+  nums, alphanums, and printables in the following language sets:
+   . Arabic
+   . Chinese
+   . Cyrillic
+   . Devanagari
+   . Greek
+   . Hebrew
+   . Japanese (including Kanji, Katakana, and Hirigana subsets)
+   . Korean
+   . Latin1 (includes 7 and 8-bit Latin characters)
+   . Thai
+   . CJK (combination of Chinese, Japanese, and Korean sets)
+
+  For example, your code can define words using:
+
+    korean_word = Word(pyparsing_unicode.Korean.alphas)
+
+  See their use in the updated examples greetingInGreek.py and
+  greetingInKorean.py.
+
+  This namespace class also offers access to these sets using their
+  unicode identifiers.
+
+- POSSIBLE API CHANGE: Fixed bug where a parse action that explicitly
+  returned the input ParseResults could add another nesting level in
+  the results if the current expression had a results name.
+
+        vals = pp.OneOrMore(pp.pyparsing_common.integer)("int_values")
+
+        def add_total(tokens):
+            tokens['total'] = sum(tokens)
+            return tokens  # this line can be removed
+
+        vals.addParseAction(add_total)
+        print(vals.parseString("244 23 13 2343").dump())
+
+  Before the fix, this code would print (note the extra nesting level):
+
+    [244, 23, 13, 2343]
+    - int_values: [244, 23, 13, 2343]
+      - int_values: [244, 23, 13, 2343]
+      - total: 2623
+    - total: 2623
+
+  With the fix, this code now prints:
+
+    [244, 23, 13, 2343]
+    - int_values: [244, 23, 13, 2343]
+    - total: 2623
+
+  This fix will change the structure of ParseResults returned if a
+  program defines a parse action that returns the tokens that were
+  sent in. This is not necessary, and statements like "return tokens"
+  in the example above can be safely deleted prior to upgrading to
+  this release, in order to avoid the bug and get the new behavior.
+
+  Reported by seron in Issue #22, nice catch!
+
+- POSSIBLE API CHANGE: Fixed a related bug where a results name
+  erroneously created a second level of hierarchy in the returned
+  ParseResults. The intent for accumulating results names into ParseResults
+  is that, in the absence of Group'ing, all names get merged into a
+  common namespace. This allows us to write:
+
+       key_value_expr = (Word(alphas)("key") + '=' + Word(nums)("value"))
+       result = key_value_expr.parseString("a = 100")
+
+  and have result structured as {"key": "a", "value": "100"}
+  instead of [{"key": "a"}, {"value": "100"}].
+
+  However, if a named expression is used in a higher-level non-Group
+  expression that *also* has a name, a false sub-level would be created
+  in the namespace:
+
+        num = pp.Word(pp.nums)
+        num_pair = ("[" + (num("A") + num("B"))("values") + "]")
+        U = num_pair.parseString("[ 10 20 ]")
+        print(U.dump())
+
+  Since there is no grouping, "A", "B", and "values" should all appear
+  at the same level in the results, as:
+
+        ['[', '10', '20', ']']
+        - A: '10'
+        - B: '20'
+        - values: ['10', '20']
+
+  Instead, an extra level of "A" and "B" show up under "values":
+
+        ['[', '10', '20', ']']
+        - A: '10'
+        - B: '20'
+        - values: ['10', '20']
+          - A: '10'
+          - B: '20'
+
+  This bug has been fixed. Now, if this hierarchy is desired, then a
+  Group should be added:
+
+        num_pair = ("[" + pp.Group(num("A") + num("B"))("values") + "]")
+
+  Giving:
+
+        ['[', ['10', '20'], ']']
+        - values: ['10', '20']
+          - A: '10'
+          - B: '20'
+
+  But in no case should "A" and "B" appear in multiple levels. This bug-fix
+  fixes that.
+
+  If you have current code which relies on this behavior, then add or remove
+  Groups as necessary to get your intended results structure.
+
+  Reported by Athanasios Anastasiou.
+
+- IndexError's raised in parse actions will get explicitly reraised
+  as ParseExceptions that wrap the original IndexError. Since
+  IndexError sometimes occurs as part of pyparsing's normal parsing
+  logic, IndexErrors that are raised during a parse action may have
+  gotten silently reinterpreted as parsing errors. To retain the
+  information from the IndexError, these exceptions will now be
+  raised as ParseExceptions that reference the original IndexError.
+  This wrapping will only be visible when run under Python3, since it
+  emulates "raise ... from ..." syntax.
+
+  Addresses Issue #4, reported by guswns0528.
+
+- Added Char class to simplify defining expressions of a single
+  character. (Char("abc") is equivalent to Word("abc", exact=1))
+
+- Added class PrecededBy to perform lookbehind tests. PrecededBy is
+  used in the same way as FollowedBy, passing in an expression that
+  must occur just prior to the current parse location.
+
+  For fixed-length expressions like a Literal, Keyword, Char, or a
+  Word with an `exact` or `maxLen` length given, `PrecededBy(expr)`
+  is sufficient. For varying length expressions like a Word with no
+  given maximum length, `PrecededBy` must be constructed with an
+  integer `retreat` argument, as in
+  `PrecededBy(Word(alphas, nums), retreat=10)`, to specify the maximum
+  number of characters pyparsing must look backward to make a match.
+  pyparsing will check all the values from 1 up to retreat characters
+  back from the current parse location.
+
+  When stepping backwards through the input string, PrecededBy does
+  *not* skip over whitespace.
+
+  PrecededBy can be created with a results name so that, even though
+  it always returns an empty parse result, the result *can* include
+  named results.
+
+  Idea first suggested in Issue #30 by Freakwill.
+
+- Updated FollowedBy to accept expressions that contain named results,
+  so that results names defined in the lookahead expression will be
+  returned, even though FollowedBy always returns an empty list.
+  Inspired by the same feature implemented in PrecededBy.
+
+
+Version 2.2.2 - September, 2018
+-------------------------------
+- Fixed bug in SkipTo, if a SkipTo expression that was skipping to
+  an expression that returned a list (such as an And), and the
+  SkipTo was saved as a named result, the named result could be
+  saved as a ParseResults - should always be saved as a string.
+  Issue #28, reported by seron.
+
+- Added simple_unit_tests.py, as a collection of easy-to-follow unit
+  tests for various classes and features of the pyparsing library.
+  Primary intent is more to be instructional than actually rigorous
+  testing. Complex tests can still be added in the unitTests.py file.
+
+- New features added to the Regex class:
+  - optional asGroupList parameter, returns all the capture groups as
+    a list
+  - optional asMatch parameter, returns the raw re.match result
+  - new sub(repl) method, which adds a parse action calling
+    re.sub(pattern, repl, parsed_result). Simplifies creating
+    Regex expressions to be used with transformString. Like re.sub,
+    repl may be an ordinary string (similar to using pyparsing's
+    replaceWith), or may contain references to capture groups by group
+    number, or may be a callable that takes an re match group and
+    returns a string.
+
+    For instance:
+        expr = pp.Regex(r"([Hh]\d):\s*(.*)").sub(r"<\1>\2</\1>")
+        expr.transformString("h1: This is the title")
+
+    will return
+        <h1>This is the title</h1>
+
+- Fixed omission of LICENSE file in source tarball, also added
+  CODE_OF_CONDUCT.md per GitHub community standards.
+
+
+Version 2.2.1 - September, 2018
+-------------------------------
+- Applied changes necessary to migrate hosting of pyparsing source
+  over to GitHub. Many thanks for help and contributions from hugovk,
+  jdufresne, and cngkaygusuz among others through this transition,
+  sorry it took me so long!
+
+- Fixed import of collections.abc to address DeprecationWarnings
+  in Python 3.7.
+
+- Updated oc.py example to support function calls in arithmetic
+  expressions; fixed regex for '==' operator; and added packrat
+  parsing. Raised on the pyparsing wiki by Boris Marin, thanks!
+
+- Fixed bug in select_parser.py example, group_by_terms was not
+  reported. Reported on SF bugs by Adam Groszer, thanks Adam!
+
+- Added "Getting Started" section to the module docstring, to
+  guide new users to the most common starting points in pyparsing's
+  API.
+
+- Fixed bug in Literal and Keyword classes, which erroneously
+  raised IndexError instead of ParseException.
+
+
+Version 2.2.0 - March, 2017
+---------------------------
+- Bumped minor version number to reflect compatibility issues with
+  OneOrMore and ZeroOrMore bugfixes in 2.1.10. (2.1.10 fixed a bug
+  that was introduced in 2.1.4, but the fix could break code
+  written against 2.1.4 - 2.1.9.)
+
+- Updated setup.py to address recursive import problems now
+  that pyparsing is part of 'packaging' (used by setuptools).
+  Patch submitted by Joshua Root, much thanks!
+
+- Fixed KeyError issue reported by Yann Bizeul when using packrat
+  parsing in the Graphite time series database, thanks Yann!
+
+- Fixed incorrect usages of '\' in literals, as described in
+  https://docs.python.org/3/whatsnew/3.6.html#deprecated-python-behavior
+  Patch submitted by Ville Skyttä - thanks!
+
+- Minor internal change when using '-' operator, to be compatible
+  with ParserElement.streamline() method.
+
+- Expanded infixNotation to accept a list or tuple of parse actions
+  to attach to an operation.
+
+- New unit test added for dill support for storing pyparsing parsers.
+  Ordinary Python pickle can be used to pickle pyparsing parsers as
+  long as they do not use any parse actions. The 'dill' module is an
+  extension to pickle which *does* support pickling of attached
+  parse actions.
+
+
+Version 2.1.10 - October, 2016
+-------------------------------
+- Fixed bug in reporting named parse results for ZeroOrMore
+  expressions, thanks Ethan Nash for reporting this!
+
+- Fixed behavior of LineStart to be much more predictable.
+  LineStart can now be used to detect if the next parse position
+  is col 1, factoring in potential leading whitespace (which would
+  cause LineStart to fail). Also fixed a bug in col, which is
+  used in LineStart, where '\n's were erroneously considered to
+  be column 1.
+
+- Added support for multiline test strings in runTests.
+
+- Fixed bug in ParseResults.dump when keys were not strings.
+  Also changed display of string values to show them in quotes,
+  to help distinguish parsed numeric strings from parsed integers
+  that have been converted to Python ints.
+
+
+Version 2.1.9 - September, 2016
+-------------------------------
+- Added class CloseMatch, a variation on Literal which matches
+  "close" matches, that is, strings with at most 'n' mismatching
+  characters.
+
+- Fixed bug in Keyword.setDefaultKeywordChars(), reported by Kobayashi
+  Shinji - nice catch, thanks!
+
+- Minor API change in pyparsing_common. Renamed some of the common
+  expressions to PEP8 format (to be consistent with the other
+  pyparsing_common expressions):
+  . signedInteger -> signed_integer
+  . sciReal -> sci_real
+
+  Also, in trying to stem the API bloat of pyparsing, I've copied
+  some of the global expressions and helper parse actions into
+  pyparsing_common, with the originals to be deprecated and removed
+  in a future release:
+  . commaSeparatedList -> pyparsing_common.comma_separated_list
+  . upcaseTokens -> pyparsing_common.upcaseTokens
+  . downcaseTokens -> pyparsing_common.downcaseTokens
+
+  (I don't expect any other expressions, like the comment expressions,
+  quotedString, or the Word-helping strings like alphas, nums, etc.
+  to migrate to pyparsing_common - they are just too pervasive. As for
+  the PEP8 vs camelCase naming, all the expressions are PEP8, while
+  the parse actions in pyparsing_common are still camelCase. It's a
+  small step - when pyparsing 3.0 comes around, everything will change
+  to PEP8 snake case.)
+
+- Fixed Python3 compatibility bug when using dict keys() and values()
+  in ParseResults.getName().
+
+- After some prodding, I've reworked the unitTests.py file for
+  pyparsing over the past few releases. It uses some variations on
+  unittest to handle my testing style. The test now:
+  . auto-discovers its test classes (while maintining their order
+    of definition)
+  . suppresses voluminous 'print' output for tests that pass
+
+
+Version 2.1.8 - August, 2016
+----------------------------
+- Fixed issue in the optimization to _trim_arity, when the full
+  stacktrace is retrieved to determine if a TypeError is raised in
+  pyparsing or in the caller's parse action. Code was traversing
+  the full stacktrace, and potentially encountering UnicodeDecodeError.
+
+- Fixed bug in ParserElement.inlineLiteralsUsing, causing infinite
+  loop with Suppress.
+
+- Fixed bug in Each, when merging named results from multiple
+  expressions in a ZeroOrMore or OneOrMore. Also fixed bug when
+  ZeroOrMore expressions were erroneously treated as required
+  expressions in an Each expression.
+
+- Added a few more inline doc examples.
+
+- Improved use of runTests in several example scripts.
+
+
+Version 2.1.7 - August, 2016
+----------------------------
+- Fixed regression reported by Andrea Censi (surfaced in PyContracts
+  tests) when using ParseSyntaxExceptions (raised when using operator '-')
+  with packrat parsing.
+
+- Minor fix to oneOf, to accept all iterables, not just space-delimited
+  strings and lists. (If you have a list or set of strings, it is
+  not necessary to concat them using ' '.join to pass them to oneOf,
+  oneOf will accept the list or set or generator directly.)
+
+
+Version 2.1.6 - August, 2016
+----------------------------
+- *Major packrat upgrade*, inspired by patch provided by Tal Einat -
+  many, many, thanks to Tal for working on this! Tal's tests show
+  faster parsing performance (2X in some tests), *and* memory reduction
+  from 3GB down to ~100MB! Requires no changes to existing code using
+  packratting. (Uses OrderedDict, available in Python 2.7 and later.
+  For Python 2.6 users, will attempt to import from ordereddict
+  backport. If not present, will implement pure-Python Fifo dict.)
+
+- Minor API change - to better distinguish between the flexible
+  numeric types defined in pyparsing_common, I've changed "numeric"
+  (which parsed numbers of different types and returned int for ints,
+  float for floats, etc.) and "number" (which parsed numbers of int
+  or float type, and returned all floats) to "number" and "fnumber"
+  respectively. I hope the "f" prefix of "fnumber" will be a better
+  indicator of its internal conversion of parsed values to floats,
+  while the generic "number" is similar to the flexible number syntax
+  in other languages. Also fixed a bug in pyparsing_common.numeric
+  (now renamed to pyparsing_common.number), integers were parsed and
+  returned as floats instead of being retained as ints.
+
+- Fixed bug in upcaseTokens and downcaseTokens introduced in 2.1.5,
+  when the parse action was used in conjunction with results names.
+  Reported by Steven Arcangeli from the dql project, thanks for your
+  patience, Steven!
+
+- Major change to docs! After seeing some comments on reddit about
+  general issue with docs of Python modules, and thinking that I'm a
+  little overdue in doing some doc tuneup on pyparsing, I decided to
+  following the suggestions of the redditor and add more inline examples
+  to the pyparsing reference documentation. I hope this addition
+  will clarify some of the more common questions people have, especially
+  when first starting with pyparsing/Python.
+
+- Deprecated ParseResults.asXML. I've never been too happy with this
+  method, and it usually forces some unnatural code in the parsers in
+  order to get decent tag names. The amount of guesswork that asXML
+  has to do to try to match names with values should have been a red
+  flag from day one. If you are using asXML, you will need to implement
+  your own ParseResults->XML serialization. Or consider migrating to
+  a more current format such as JSON (which is very easy to do:
+  results_as_json = json.dumps(parse_result.asDict()) Hopefully, when
+  I remove this code in a future version, I'll also be able to simplify
+  some of the craziness in ParseResults, which IIRC was only there to try
+  to make asXML work.
+
+- Updated traceParseAction parse action decorator to show the repr
+  of the input and output tokens, instead of the str format, since
+  str has been simplified to just show the token list content.
+
+  (The change to ParseResults.__str__ occurred in pyparsing 2.0.4, but
+  it seems that didn't make it into the release notes - sorry! Too
+  many users, especially beginners, were confused by the
+  "([token_list], {names_dict})" str format for ParseResults, thinking
+  they were getting a tuple containing a list and a dict. The full form
+  can be seen if using repr().)
+
+  For tracing tokens in and out of parse actions, the more complete
+  repr form provides important information when debugging parse actions.
+
+
+Verison 2.1.5 - June, 2016
+------------------------------
+- Added ParserElement.split() generator method, similar to re.split().
+  Includes optional arguments maxsplit (to limit the number of splits),
+  and includeSeparators (to include the separating matched text in the
+  returned output, default=False).
+
+- Added a new parse action construction helper tokenMap, which will
+  apply a function and optional arguments to each element in a
+  ParseResults. So this parse action:
+
+      def lowercase_all(tokens):
+          return [str(t).lower() for t in tokens]
+      OneOrMore(Word(alphas)).setParseAction(lowercase_all)
+
+  can now be written:
+
+      OneOrMore(Word(alphas)).setParseAction(tokenMap(str.lower))
+
+  Also simplifies writing conversion parse actions like:
+
+      integer = Word(nums).setParseAction(lambda t: int(t[0]))
+
+  to just:
+
+      integer = Word(nums).setParseAction(tokenMap(int))
+
+  If additional arguments are necessary, they can be included in the
+  call to tokenMap, as in:
+
+      hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))
+
+- Added more expressions to pyparsing_common:
+  . IPv4 and IPv6 addresses (including long, short, and mixed forms
+    of IPv6)
+  . MAC address
+  . ISO8601 date and date time strings (with named fields for year, month, etc.)
+  . UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
+  . hex integer (returned as int)
+  . fraction (integer '/' integer, returned as float)
+  . mixed integer (integer '-' fraction, or just fraction, returned as float)
+  . stripHTMLTags (parse action to remove tags from HTML source)
+  . parse action helpers convertToDate and convertToDatetime to do custom parse
+    time conversions of parsed ISO8601 strings
+
+- runTests now returns a two-tuple: success if all tests succeed,
+  and an output list of each test and its output lines.
+
+- Added failureTests argument (default=False) to runTests, so that
+  tests can be run that are expected failures, and runTests' success
+  value will return True only if all tests *fail* as expected. Also,
+  parseAll now defaults to True.
+
+- New example numerics.py, shows samples of parsing integer and real
+  numbers using locale-dependent formats:
+
+    4.294.967.295,000
+    4 294 967 295,000
+    4,294,967,295.000
+
+
+Version 2.1.4 - May, 2016
+------------------------------
+- Split out the '==' behavior in ParserElement, now implemented
+  as the ParserElement.matches() method. Using '==' for string test
+  purposes will be removed in a future release.
+
+- Expanded capabilities of runTests(). Will now accept embedded
+  comments (default is Python style, leading '#' character, but
+  customizable). Comments will be emitted along with the tests and
+  test output. Useful during test development, to create a test string
+  consisting only of test case description comments separated by
+  blank lines, and then fill in the test cases. Will also highlight
+  ParseFatalExceptions with "(FATAL)".
+
+- Added a 'pyparsing_common' class containing common/helpful little
+  expressions such as integer, float, identifier, etc. I used this
+  class as a sort of embedded namespace, to contain these helpers
+  without further adding to pyparsing's namespace bloat.
+
+- Minor enhancement to traceParseAction decorator, to retain the
+  parse action's name for the trace output.
+
+- Added optional 'fatal' keyword arg to addCondition, to indicate that
+  a condition failure should halt parsing immediately.
+
+
+Version 2.1.3 - May, 2016
+------------------------------
+- _trim_arity fix in 2.1.2 was very version-dependent on Py 3.5.0.
+  Now works for Python 2.x, 3.3, 3.4, 3.5.0, and 3.5.1 (and hopefully
+  beyond).
+
+
+Version 2.1.2 - May, 2016
+------------------------------
+- Fixed bug in _trim_arity when pyparsing code is included in a
+  PyInstaller, reported by maluwa.
+
+- Fixed catastrophic regex backtracking in implementation of the
+  quoted string expressions (dblQuotedString, sglQuotedString, and
+  quotedString). Reported on the pyparsing wiki by webpentest,
+  good catch! (Also tuned up some other expressions susceptible to the
+  same backtracking problem, such as cStyleComment, cppStyleComment,
+  etc.)
+
+
+Version 2.1.1 - March, 2016
+---------------------------
+- Added support for assigning to ParseResults using slices.
+
+- Fixed bug in ParseResults.toDict(), in which dict values were always
+  converted to dicts, even if they were just unkeyed lists of tokens.
+  Reported on SO by Gerald Thibault, thanks Gerald!
+
+- Fixed bug in SkipTo when using failOn, reported by robyschek, thanks!
+
+- Fixed bug in Each introduced in 2.1.0, reported by AND patch and
+  unit test submitted by robyschek, well done!
+
+- Removed use of functools.partial in replaceWith, as this creates
+  an ambiguous signature for the generated parse action, which fails in
+  PyPy. Reported by Evan Hubinger, thanks Evan!
+
+- Added default behavior to QuotedString to convert embedded '\t', '\n',
+  etc. characters to their whitespace counterparts. Found during Q&A
+  exchange on SO with Maxim.
+
+
+Version 2.1.0 - February, 2016
+------------------------------
+- Modified the internal _trim_arity method to distinguish between
+  TypeError's raised while trying to determine parse action arity and
+  those raised within the parse action itself. This will clear up those
+  confusing "<lambda>() takes exactly 1 argument (0 given)" error
+  messages when there is an actual TypeError in the body of the parse
+  action. Thanks to all who have raised this issue in the past, and
+  most recently to Michael Cohen, who sent in a proposed patch, and got
+  me to finally tackle this problem.
+
+- Added compatibility for pickle protocols 2-4 when pickling ParseResults.
+  In Python 2.x, protocol 0 was the default, and protocol 2 did not work.
+  In Python 3.x, protocol 3 is the default, so explicitly naming
+  protocol 0 or 1 was required to pickle ParseResults. With this release,
+  all protocols 0-4 are supported. Thanks for reporting this on StackOverflow,
+  Arne Wolframm, and for providing a nice simple test case!
+
+- Added optional 'stopOn' argument to ZeroOrMore and OneOrMore, to
+  simplify breaking on stop tokens that would match the repetition
+  expression.
+
+  It is a common problem to fail to look ahead when matching repetitive
+  tokens if the sentinel at the end also matches the repetition
+  expression, as when parsing "BEGIN aaa bbb ccc END" with:
+
+    "BEGIN" + OneOrMore(Word(alphas)) + "END"
+
+  Since "END" matches the repetition expression "Word(alphas)", it will
+  never get parsed as the terminating sentinel. Up until now, this has
+  to be resolved by the user inserting their own negative lookahead:
+
+    "BEGIN" + OneOrMore(~Literal("END") + Word(alphas)) + "END"
+
+  Using stopOn, they can more easily write:
+
+    "BEGIN" + OneOrMore(Word(alphas), stopOn="END") + "END"
+
+  The stopOn argument can be a literal string or a pyparsing expression.
+  Inspired by a question by Lamakaha on StackOverflow (and many previous
+  questions with the same negative-lookahead resolution).
+
+- Added expression names for many internal and builtin expressions, to
+  reduce name and error message overhead during parsing.
+
+- Converted helper lambdas to functions to refactor and add docstring
+  support.
+
+- Fixed ParseResults.asDict() to correctly convert nested ParseResults
+  values to dicts.
+
+- Cleaned up some examples, fixed typo in fourFn.py identified by
+  aristotle2600 on reddit.
+
+- Removed keepOriginalText helper method, which was deprecated ages ago.
+  Superceded by originalTextFor.
+
+- Same for the Upcase class, which was long ago deprecated and replaced
+  with the upcaseTokens method.
+
+
+
+Version 2.0.7 - December, 2015
+------------------------------
+- Simplified string representation of Forward class, to avoid memory
+  and performance errors while building ParseException messages. Thanks,
+  Will McGugan, Andrea Censi, and Martijn Vermaat for the bug reports and
+  test code.
+
+- Cleaned up additional issues from enhancing the error messages for
+  Or and MatchFirst, handling Unicode values in expressions. Fixes Unicode
+  encoding issues in Python 2, thanks to Evan Hubinger for the bug report.
+
+- Fixed implementation of dir() for ParseResults - was leaving out all the
+  defined methods and just adding the custom results names.
+
+- Fixed bug in ignore() that was introduced in pyparsing 1.5.3, that would
+  not accept a string literal as the ignore expression.
+
+- Added new example parseTabularData.py to illustrate parsing of data
+  formatted in columns, with detection of empty cells.
+
+- Updated a number of examples to more current Python and pyparsing
+  forms.
+
+
+Version 2.0.6 - November, 2015
+------------------------------
+- Fixed a bug in Each when multiple Optional elements are present.
+  Thanks for reporting this, whereswalden on SO.
+
+- Fixed another bug in Each, when Optional elements have results names
+  or parse actions, reported by Max Rothman - thank you, Max!
+
+- Added optional parseAll argument to runTests, whether tests should
+  require the entire input string to be parsed or not (similar to
+  parseAll argument to parseString). Plus a little neaten-up of the
+  output on Python 2 (no stray ()'s).
+
+- Modified exception messages from MatchFirst and Or expressions. These
+  were formerly misleading as they would only give the first or longest
+  exception mismatch error message. Now the error message includes all
+  the alternatives that were possible matches. Originally proposed by
+  a pyparsing user, but I've lost the email thread - finally figured out
+  a fairly clean way to do this.
+
+- Fixed a bug in Or, when a parse action on an alternative raises an
+  exception, other potentially matching alternatives were not always tried.
+  Reported by TheVeryOmni on the pyparsing wiki, thanks!
+
+- Fixed a bug to dump() introduced in 2.0.4, where list values were shown
+  in duplicate.
+
+
+Version 2.0.5 - October, 2015
+-----------------------------
+- (&$(@#&$(@!!!!  Some "print" statements snuck into pyparsing v2.0.4,
+  breaking Python 3 compatibility! Fixed. Reported by jenshn, thanks!
+
+
+Version 2.0.4 - October, 2015
+-----------------------------
+- Added ParserElement.addCondition, to simplify adding parse actions
+  that act primarily as filters. If the given condition evaluates False,
+  pyparsing will raise a ParseException. The condition should be a method
+  with the same method signature as a parse action, but should return a
+  boolean. Suggested by Victor Porton, nice idea Victor, thanks!
+
+- Slight mod to srange to accept unicode literals for the input string,
+  such as "[а-яА-Я]" instead of "[\u0430-\u044f\u0410-\u042f]". Thanks
+  to Alexandr Suchkov for the patch!
+
+- Enhanced implementation of replaceWith.
+
+- Fixed enhanced ParseResults.dump() method when the results consists
+  only of an unnamed array of sub-structure results. Reported by Robin
+  Siebler, thanks for your patience and persistence, Robin!
+
+- Fixed bug in fourFn.py example code, where pi and e were defined using
+  CaselessLiteral instead of CaselessKeyword. This was not a problem until
+  adding a new function 'exp', and the leading 'e' of 'exp' was accidentally
+  parsed as the mathematical constant 'e'. Nice catch, Tom Grydeland - thanks!
+
+- Adopt new-fangled Python features, like decorators and ternary expressions,
+  per suggestions from Williamzjc - thanks William! (Oh yeah, I'm not
+  supporting Python 2.3 with this code any more...) Plus, some additional
+  code fixes/cleanup - thanks again!
+
+- Added ParserElement.runTests, a little test bench for quickly running
+  an expression against a list of sample input strings. Basically, I got
+  tired of writing the same test code over and over, and finally added it
+  as a test point method on ParserElement.
+
+- Added withClass helper method, a simplified version of withAttribute for
+  the common but annoying case when defining a filter on a div's class -
+  made difficult because 'class' is a Python reserved word.
+
+
+Version 2.0.3 - October, 2014
+-----------------------------
+- Fixed escaping behavior in QuotedString. Formerly, only quotation
+  marks (or characters designated as quotation marks in the QuotedString
+  constructor) would be escaped. Now all escaped characters will be
+  escaped, and the escaping backslashes will be removed.
+
+- Fixed regression in ParseResults.pop() - pop() was pretty much
+  broken after I added *improvements* in 2.0.2. Reported by Iain
+  Shelvington, thanks Iain!
+
+- Fixed bug in And class when initializing using a generator.
+
+- Enhanced ParseResults.dump() method to list out nested ParseResults that
+  are unnamed arrays of sub-structures.
+
+- Fixed UnboundLocalError under Python 3.4 in oneOf method, reported
+  on Sourceforge by aldanor, thanks!
+
+- Fixed bug in ParseResults __init__ method, when returning non-ParseResults
+  types from parse actions that implement __eq__. Raised during discussion
+  on the pyparsing wiki with cyrfer.
+
+
+Version 2.0.2 - April, 2014
+---------------------------
+- Extended "expr(name)" shortcut (same as "expr.setResultsName(name)")
+  to accept "expr()" as a shortcut for "expr.copy()".
+
+- Added "locatedExpr(expr)" helper, to decorate any returned tokens
+  with their location within the input string. Adds the results names
+  locn_start and locn_end to the output parse results.
+
+- Added "pprint()" method to ParseResults, to simplify troubleshooting
+  and prettified output. Now instead of importing the pprint module
+  and then writing "pprint.pprint(result)", you can just write
+  "result.pprint()".  This method also accepts addtional positional and
+  keyword arguments (such as indent, width, etc.), which get passed
+  through directly to the pprint method
+  (see https://docs.python.org/2/library/pprint.html#pprint.pprint).
+
+- Removed deprecation warnings when using '<<' for Forward expression
+  assignment. '<<=' is still preferred, but '<<' will be retained
+  for cases where '<<=' operator is not suitable (such as in defining
+  lambda expressions).
+
+- Expanded argument compatibility for classes and functions that
+  take list arguments, to now accept generators as well.
+
+- Extended list-like behavior of ParseResults, adding support for
+  append and extend. NOTE: if you have existing applications using
+  these names as results names, you will have to access them using
+  dict-style syntax: res["append"] and res["extend"]
+
+- ParseResults emulates the change in list vs. iterator semantics for
+  methods like keys(), values(), and items(). Under Python 2.x, these
+  methods will return lists, under Python 3.x, these methods will
+  return iterators.
+
+- ParseResults now has a method haskeys() which returns True or False
+  depending on whether any results names have been defined. This simplifies
+  testing for the existence of results names under Python 3.x, which
+  returns keys() as an iterator, not a list.
+
+- ParseResults now supports both list and dict semantics for pop().
+  If passed no argument or an integer argument, it will use list semantics
+  and pop tokens from the list of parsed tokens. If passed a non-integer
+  argument (most likely a string), it will use dict semantics and
+  pop the corresponding value from any defined results names. A
+  second default return value argument is supported, just as in
+  dict.pop().
+
+- Fixed bug in markInputline, thanks for reporting this, Matt Grant!
+
+- Cleaned up my unit test environment, now runs with Python 2.6 and
+  3.3.
+
+
+Version 2.0.1 - July, 2013
+--------------------------
+- Removed use of "nonlocal" that prevented using this version of
+  pyparsing with Python 2.6 and 2.7. This will make it easier to
+  install for packages that depend on pyparsing, under Python
+  versions 2.6 and later. Those using older versions of Python
+  will have to manually install pyparsing 1.5.7.
+
+- Fixed implementation of <<= operator to return self; reported by
+  Luc J. Bourhis, with patch fix by Mathias Mamsch - thanks, Luc
+  and Mathias!
+
+
+Version 2.0.0 - November, 2012
+------------------------------
+- Rather than release another combined Python 2.x/3.x release
+  I've decided to start a new major version that is only
+  compatible with Python 3.x (and consequently Python 2.7 as
+  well due to backporting of key features). This version will
+  be the main development path from now on, with little follow-on
+  development on the 1.5.x path.
+
+- Operator '<<' is now deprecated, in favor of operator '<<=' for
+  attaching parsing expressions to Forward() expressions. This is
+  being done to address precedence of operations problems with '<<'.
+  Operator '<<' will be removed in a future version of pyparsing.
+
+
+Version 1.5.7 - November, 2012
+-----------------------------
+- NOTE: This is the last release of pyparsing that will try to
+  maintain compatibility with Python versions < 2.6. The next
+  release of pyparsing will be version 2.0.0, using new Python
+  syntax that will not be compatible for Python version 2.5 or
+  older.
+
+- An awesome new example is included in this release, submitted
+  by Luca DellOlio, for parsing ANTLR grammar definitions, nice
+  work Luca!
+
+- Fixed implementation of ParseResults.__str__ to use Pythonic
+  ''.join() instead of repeated string concatenation. This
+  purportedly has been a performance issue under PyPy.
+
+- Fixed bug in ParseResults.__dir__ under Python 3, reported by
+  Thomas Kluyver, thank you Thomas!
+
+- Added ParserElement.inlineLiteralsUsing static method, to
+  override pyparsing's default behavior of converting string
+  literals to Literal instances, to use other classes (such
+  as Suppress or CaselessLiteral).
+
+- Added new operator '<<=', which will eventually replace '<<' for
+  storing the contents of a Forward(). '<<=' does not have the same
+  operator precedence problems that '<<' does.
+
+- 'operatorPrecedence' is being renamed 'infixNotation' as a better
+  description of what this helper function creates. 'operatorPrecedence'
+  is deprecated, and will be dropped entirely in a future release.
+
+- Added optional arguments lpar and rpar to operatorPrecedence, so that
+  expressions that use it can override the default suppression of the
+  grouping characters.
+
+- Added support for using single argument builtin functions as parse
+  actions.  Now you can write 'expr.setParseAction(len)' and get back
+  the length of the list of matched tokens.  Supported builtins are:
+  sum, len, sorted, reversed, list, tuple, set, any, all, min, and max.
+  A script demonstrating this feature is included in the examples
+  directory.
+
+- Improved linking in generated docs, proposed on the pyparsing wiki
+  by techtonik, thanks!
+
+- Fixed a bug in the definition of 'alphas', which was based on the
+  string.uppercase and string.lowercase "constants", which in fact
+  *aren't* constant, but vary with locale settings. This could make
+  parsers locale-sensitive in a subtle way. Thanks to Kef Schecter for
+  his diligence in following through on reporting and monitoring
+  this bugfix!
+
+- Fixed a bug in the Py3 version of pyparsing, during exception
+  handling with packrat parsing enabled, reported by Catherine
+  Devlin - thanks Catherine!
+
+- Fixed typo in ParseBaseException.__dir__, reported anonymously on
+  the SourceForge bug tracker, thank you Pyparsing User With No Name.
+
+- Fixed bug in srange when using '\x###' hex character codes.
+
+- Addeed optional 'intExpr' argument to countedArray, so that you
+  can define your own expression that will evaluate to an integer,
+  to be used as the count for the following elements. Allows you
+  to define a countedArray with the count given in hex, for example,
+  by defining intExpr as "Word(hexnums).setParseAction(int(t[0],16))".
+
+
+Version 1.5.6 - June, 2011
+----------------------------
+- Cleanup of parse action normalizing code, to be more version-tolerant,
+  and robust in the face of future Python versions - much thanks to
+  Raymond Hettinger for this rewrite!
+
+- Removal of exception cacheing, addressing a memory leak condition
+  in Python 3. Thanks to Michael Droettboom and the Cape Town PUG for
+  their analysis and work on this problem!
+
+- Fixed bug when using packrat parsing, where a previously parsed
+  expression would duplicate subsequent tokens - reported by Frankie
+  Ribery on stackoverflow, thanks!
+
+- Added 'ungroup' helper method, to address token grouping done
+  implicitly by And expressions, even if only one expression in the
+  And actually returns any text - also inspired by stackoverflow
+  discussion with Frankie Ribery!
+
+- Fixed bug in srange, which accepted escaped hex characters of the
+  form '\0x##', but should be '\x##'.  Both forms will be supported
+  for backwards compatibility.
+
+- Enhancement to countedArray, accepting an optional expression to be
+  used for matching the leading integer count - proposed by Mathias on
+  the pyparsing mailing list, good idea!
+
+- Added the Verilog parser to the provided set of examples, under the
+  MIT license.  While this frees up this parser for any use, if you find
+  yourself using it in a commercial purpose, please consider making a
+  charitable donation as described in the parser's header.
+
+- Added the excludeChars argument to the Word class, to simplify defining
+  a word composed of all characters in a large range except for one or
+  two. Suggested by JesterEE on the pyparsing wiki.
+
+- Added optional overlap parameter to scanString, to return overlapping
+  matches found in the source text.
+
+- Updated oneOf internal regular expression generation, with improved
+  parse time performance.
+
+- Slight performance improvement in transformString, removing empty
+  strings from the list of string fragments built while scanning the
+  source text, before calling ''.join.  Especially useful when using
+  transformString to strip out selected text.
+
+- Enhanced form of using the "expr('name')" style of results naming,
+  in lieu of calling setResultsName.  If name ends with an '*', then
+  this is equivalent to expr.setResultsName('name',listAllMatches=True).
+
+- Fixed up internal list flattener to use iteration instead of recursion,
+  to avoid stack overflow when transforming large files.
+
+- Added other new examples:
+  . protobuf parser - parses Google's protobuf language
+  . btpyparse - a BibTex parser contributed by Matthew Brett,
+    with test suite test_bibparse.py (thanks, Matthew!)
+  . groupUsingListAllMatches.py - demo using trailing '*' for results
+    names
+
+
+Version 1.5.5 - August, 2010
+----------------------------
+
+- Typo in Python3 version of pyparsing, "builtin" should be "builtins".
+  (sigh)
+
+
+Version 1.5.4 - August, 2010
+----------------------------
+
+- Fixed __builtins__ and file references in Python 3 code, thanks to
+  Greg Watson, saulspatz, sminos, and Mark Summerfield for reporting
+  their Python 3 experiences.
+
+- Added new example, apicheck.py, as a sample of scanning a Tcl-like
+  language for functions with incorrect number of arguments (difficult
+  to track down in Tcl languages).  This example uses some interesting
+  methods for capturing exceptions while scanning through source
+  code.
+
+- Added new example deltaTime.py, that takes everyday time references
+  like "an hour from now", "2 days ago", "next Sunday at 2pm".
+
+
+Version 1.5.3 - June, 2010
+--------------------------
+
+- ======= NOTE:  API CHANGE!!!!!!! ===============
+  With this release, and henceforward, the pyparsing module is
+  imported as "pyparsing" on both Python 2.x and Python 3.x versions.
+
+- Fixed up setup.py to auto-detect Python version and install the
+  correct version of pyparsing - suggested by Alex Martelli,
+  thanks, Alex! (and my apologies to all those who struggled with
+  those spurious installation errors caused by my earlier
+  fumblings!)
+
+- Fixed bug on Python3 when using parseFile, getting bytes instead of
+  a str from the input file.
+
+- Fixed subtle bug in originalTextFor, if followed by
+  significant whitespace (like a newline) - discovered by
+  Francis Vidal, thanks!
+
+- Fixed very sneaky bug in Each, in which Optional elements were
+  not completely recognized as optional - found by Tal Weiss, thanks
+  for your patience.
+
+- Fixed off-by-1 bug in line() method when the first line of the
+  input text was an empty line. Thanks to John Krukoff for submitting
+  a patch!
+
+- Fixed bug in transformString if grammar contains Group expressions,
+  thanks to patch submitted by barnabas79, nice work!
+
+- Fixed bug in originalTextFor in which trailing comments or otherwised
+  ignored text got slurped in with the matched expression.  Thanks to
+  michael_ramirez44 on the pyparsing wiki for reporting this just in
+  time to get into this release!
+
+- Added better support for summing ParseResults, see the new example,
+  parseResultsSumExample.py.
+
+- Added support for composing a Regex using a compiled RE object;
+  thanks to my new colleague, Mike Thornton!
+
+- In version 1.5.2, I changed the way exceptions are raised in order
+  to simplify the stacktraces reported during parsing.  An anonymous
+  user posted a bug report on SF that this behavior makes it difficult
+  to debug some complex parsers, or parsers nested within parsers. In
+  this release I've added a class attribute ParserElement.verbose_stacktrace,
+  with a default value of False. If you set this to True, pyparsing will
+  report stacktraces using the pre-1.5.2 behavior.
+
+- New examples:
+
+  . pymicko.py, a MicroC compiler submitted by Zarko Zivanov.
+    (Note: this example is separately licensed under the GPLv3,
+    and requires Python 2.6 or higher.)  Thank you, Zarko!
+
+  . oc.py, a subset C parser, using the BNF from the 1996 Obfuscated C
+    Contest.
+
+  . stateMachine2.py, a modified version of stateMachine.py submitted
+    by Matt Anderson, that is compatible with Python versions 2.7 and
+    above - thanks so much, Matt!
+
+  . select_parser.py, a parser for reading SQLite SELECT statements,
+    as specified at https://www.sqlite.org/lang_select.html this goes
+    into much more detail than the simple SQL parser included in pyparsing's
+    source code
+
+  . excelExpr.py, a *simplistic* first-cut at a parser for Excel
+    expressions, which I originally posted on comp.lang.python in January,
+    2010; beware, this parser omits many common Excel cases (addition of
+    numbers represented as strings, references to named ranges)
+
+  . cpp_enum_parser.py, a nice little parser posted my Mark Tolonen on
+    comp.lang.python in August, 2009 (redistributed here with Mark's
+    permission).  Thanks a bunch, Mark!
+
+  . partial_gene_match.py, a sample I posted to Stackoverflow.com,
+    implementing a special variation on Literal that does "close" matching,
+    up to a given number of allowed mismatches.  The application was to
+    find matching gene sequences, with allowance for one or two mismatches.
+
+  . tagCapture.py, a sample showing how to use a Forward placeholder to
+    enforce matching of text parsed in a previous expression.
+
+  . matchPreviousDemo.py, simple demo showing how the matchPreviousLiteral
+    helper method is used to match a previously parsed token.
+
+
+Version 1.5.2 - April, 2009
+------------------------------
+- Added pyparsing_py3.py module, so that Python 3 users can use
+  pyparsing by changing their pyparsing import statement to:
+
+      import pyparsing_py3
+
+  Thanks for help from Patrick Laban and his friend Geremy
+  Condra on the pyparsing wiki.
+
+- Removed __slots__ declaration on ParseBaseException, for
+  compatibility with IronPython 2.0.1.  Raised by David
+  Lawler on the pyparsing wiki, thanks David!
+
+- Fixed bug in SkipTo/failOn handling - caught by eagle eye
+  cpennington on the pyparsing wiki!
+
+- Fixed second bug in SkipTo when using the ignore constructor
+  argument, reported by Catherine Devlin, thanks!
+
+- Fixed obscure bug reported by Eike Welk when using a class
+  as a ParseAction with an errant __getitem__ method.
+
+- Simplified exception stack traces when reporting parse
+  exceptions back to caller of parseString or parseFile - thanks
+  to a tip from Peter Otten on comp.lang.python.
+
+- Changed behavior of scanString to avoid infinitely looping on
+  expressions that match zero-length strings.  Prompted by a
+  question posted by ellisonbg on the wiki.
+
+- Enhanced classes that take a list of expressions (And, Or,
+  MatchFirst, and Each) to accept generator expressions also.
+  This can be useful when generating lists of alternative
+  expressions, as in this case, where the user wanted to match
+  any repetitions of '+', '*', '#', or '.', but not mixtures
+  of them (that is, match '+++', but not '+-+'):
+
+      codes = "+*#."
+      format = MatchFirst(Word(c) for c in codes)
+
+  Based on a problem posed by Denis Spir on the Python tutor
+  list.
+
+- Added new example eval_arith.py, which extends the example
+  simpleArith.py to actually evaluate the parsed expressions.
+
+
+Version 1.5.1 - October, 2008
+-------------------------------
+- Added new helper method originalTextFor, to replace the use of
+  the current keepOriginalText parse action.  Now instead of
+  using the parse action, as in:
+
+      fullName = Word(alphas) + Word(alphas)
+      fullName.setParseAction(keepOriginalText)
+
+  (in this example, we used keepOriginalText to restore any white
+  space that may have been skipped between the first and last
+  names)
+  You can now write:
+
+      fullName = originalTextFor(Word(alphas) + Word(alphas))
+
+  The implementation of originalTextFor is simpler and faster than
+  keepOriginalText, and does not depend on using the inspect or
+  imp modules.
+
+- Added optional parseAll argument to parseFile, to be consistent
+  with parseAll argument to parseString.  Posted by pboucher on the
+  pyparsing wiki, thanks!
+
+- Added failOn argument to SkipTo, so that grammars can define
+  literal strings or pyparsing expressions which, if found in the
+  skipped text, will cause SkipTo to fail.  Useful to prevent
+  SkipTo from reading past terminating expression.  Instigated by
+  question posed by Aki Niimura on the pyparsing wiki.
+
+- Fixed bug in nestedExpr if multi-character expressions are given
+  for nesting delimiters.  Patch provided by new pyparsing user,
+  Hans-Martin Gaudecker - thanks, H-M!
+
+- Removed dependency on xml.sax.saxutils.escape, and included
+  internal implementation instead - proposed by Mike Droettboom on
+  the pyparsing mailing list, thanks Mike!  Also fixed erroneous
+  mapping in replaceHTMLEntity of &quot; to ', now correctly maps
+  to ".  (Also added support for mapping &apos; to '.)
+
+- Fixed typo in ParseResults.insert, found by Alejandro Dubrovsky,
+  good catch!
+
+- Added __dir__() methods to ParseBaseException and ParseResults,
+  to support new dir() behavior in Py2.6 and Py3.0.  If dir() is
+  called on a ParseResults object, the returned list will include
+  the base set of attribute names, plus any results names that are
+  defined.
+
+- Fixed bug in ParseResults.asXML(), in which the first named
+  item within a ParseResults gets reported with an <ITEM> tag
+  instead of with the correct results name.
+
+- Fixed bug in '-' error stop, when '-' operator is used inside a
+  Combine expression.
+
+- Reverted generator expression to use list comprehension, for
+  better compatibility with old versions of Python.  Reported by
+  jester/artixdesign on the SourceForge pyparsing discussion list.
+
+- Fixed bug in parseString(parseAll=True), when the input string
+  ends with a comment or whitespace.
+
+- Fixed bug in LineStart and LineEnd that did not recognize any
+  special whitespace chars defined using ParserElement.setDefault-
+  WhitespaceChars, found while debugging an issue for Marek Kubica,
+  thanks for the new test case, Marek!
+
+- Made Forward class more tolerant of subclassing.
+
+
+Version 1.5.0 - June, 2008
+--------------------------
+This version of pyparsing includes work on two long-standing
+FAQ's: support for forcing parsing of the complete input string
+(without having to explicitly append StringEnd() to the grammar),
+and a method to improve the mechanism of detecting where syntax
+errors occur in an input string with various optional and
+alternative paths.  This release also includes a helper method
+to simplify definition of indentation-based grammars.  With
+these changes (and the past few minor updates), I thought it was
+finally time to bump the minor rev number on pyparsing - so
+1.5.0 is now available!  Read on...
+
+- AT LAST!!!  You can now call parseString and have it raise
+  an exception if the expression does not parse the entire
+  input string.  This has been an FAQ for a LONG time.
+
+  The parseString method now includes an optional parseAll
+  argument (default=False).  If parseAll is set to True, then
+  the given parse expression must parse the entire input
+  string.  (This is equivalent to adding StringEnd() to the
+  end of the expression.)  The default value is False to
+  retain backward compatibility.
+
+  Inspired by MANY requests over the years, most recently by
+  ecir-hana on the pyparsing wiki!
+
+- Added new operator '-' for composing grammar sequences. '-'
+  behaves just like '+' in creating And expressions, but '-'
+  is used to mark grammar structures that should stop parsing
+  immediately and report a syntax error, rather than just
+  backtracking to the last successful parse and trying another
+  alternative.  For instance, running the following code:
+
+    port_definition = Keyword("port") + '=' + Word(nums)
+    entity_definition = Keyword("entity") + "{" +
+        Optional(port_definition) + "}"
+
+    entity_definition.parseString("entity { port 100 }")
+
+  pyparsing fails to detect the missing '=' in the port definition.
+  But, since this expression is optional, pyparsing then proceeds
+  to try to match the closing '}' of the entity_definition.  Not
+  finding it, pyparsing reports that there was no '}' after the '{'
+  character.  Instead, we would like pyparsing to parse the 'port'
+  keyword, and if not followed by an equals sign and an integer,
+  to signal this as a syntax error.
+
+  This can now be done simply by changing the port_definition to:
+
+    port_definition = Keyword("port") - '=' + Word(nums)
+
+  Now after successfully parsing 'port', pyparsing must also find
+  an equals sign and an integer, or it will raise a fatal syntax
+  exception.
+
+  By judicious insertion of '-' operators, a pyparsing developer
+  can have their grammar report much more informative syntax error
+  messages.
+
+  Patches and suggestions proposed by several contributors on
+  the pyparsing mailing list and wiki - special thanks to
+  Eike Welk and Thomas/Poldy on the pyparsing wiki!
+
+- Added indentedBlock helper method, to encapsulate the parse
+  actions and indentation stack management needed to keep track of
+  indentation levels.  Use indentedBlock to define grammars for
+  indentation-based grouping grammars, like Python's.
+
+  indentedBlock takes up to 3 parameters:
+    - blockStatementExpr - expression defining syntax of statement
+        that is repeated within the indented block
+    - indentStack - list created by caller to manage indentation
+        stack (multiple indentedBlock expressions
+        within a single grammar should share a common indentStack)
+    - indent - boolean indicating whether block must be indented
+        beyond the the current level; set to False for block of
+        left-most statements (default=True)
+
+  A valid block must contain at least one indented statement.
+
+- Fixed bug in nestedExpr in which ignored expressions needed
+  to be set off with whitespace.  Reported by Stefaan Himpe,
+  nice catch!
+
+- Expanded multiplication of an expression by a tuple, to
+  accept tuple values of None:
+  . expr*(n,None) or expr*(n,) is equivalent
+    to expr*n + ZeroOrMore(expr)
+    (read as "at least n instances of expr")
+  . expr*(None,n) is equivalent to expr*(0,n)
+    (read as "0 to n instances of expr")
+  . expr*(None,None) is equivalent to ZeroOrMore(expr)
+  . expr*(1,None) is equivalent to OneOrMore(expr)
+
+  Note that expr*(None,n) does not raise an exception if
+  more than n exprs exist in the input stream; that is,
+  expr*(None,n) does not enforce a maximum number of expr
+  occurrences.  If this behavior is desired, then write
+  expr*(None,n) + ~expr
+
+- Added None as a possible operator for operatorPrecedence.
+  None signifies "no operator", as in multiplying m times x
+  in "y=mx+b".
+
+- Fixed bug in Each, reported by Michael Ramirez, in which the
+  order of terms in the Each affected the parsing of the results.
+  Problem was due to premature grouping of the expressions in
+  the overall Each during grammar construction, before the
+  complete Each was defined.  Thanks, Michael!
+
+- Also fixed bug in Each in which Optional's with default values
+  were not getting the defaults added to the results of the
+  overall Each expression.
+
+- Fixed a bug in Optional in which results names were not
+  assigned if a default value was supplied.
+
+- Cleaned up Py3K compatibility statements, including exception
+  construction statements, and better equivalence between _ustr
+  and basestring, and __nonzero__ and __bool__.
+
+
+Version 1.4.11 - February, 2008
+-------------------------------
+- With help from Robert A. Clark, this version of pyparsing
+  is compatible with Python 3.0a3.  Thanks for the help,
+  Robert!
+
+- Added WordStart and WordEnd positional classes, to support
+  expressions that must occur at the start or end of a word.
+  Proposed by piranha on the pyparsing wiki, good idea!
+
+- Added matchOnlyAtCol helper parser action, to simplify
+  parsing log or data files that have optional fields that are
+  column dependent.  Inspired by a discussion thread with
+  hubritic on comp.lang.python.
+
+- Added withAttribute.ANY_VALUE as a match-all value when using
+  withAttribute.  Used to ensure that an attribute is present,
+  without having to match on the actual attribute value.
+
+- Added get() method to ParseResults, similar to dict.get().
+  Suggested by new pyparsing user, Alejandro Dubrovksy, thanks!
+
+- Added '==' short-cut to see if a given string matches a
+  pyparsing expression.  For instance, you can now write:
+
+    integer = Word(nums)
+    if "123" == integer:
+       # do something
+
+    print [ x for x in "123 234 asld".split() if x==integer ]
+    # prints ['123', '234']
+
+- Simplified the use of nestedExpr when using an expression for
+  the opening or closing delimiters.  Now the content expression
+  will not have to explicitly negate closing delimiters.  Found
+  while working with dfinnie on GHOP Task #277, thanks!
+
+- Fixed bug when defining ignorable expressions that are
+  later enclosed in a wrapper expression (such as ZeroOrMore,
+  OneOrMore, etc.) - found while working with Prabhu
+  Gurumurthy, thanks Prahbu!
+
+- Fixed bug in withAttribute in which keys were automatically
+  converted to lowercase, making it impossible to match XML
+  attributes with uppercase characters in them.  Using with-
+  Attribute requires that you reference attributes in all
+  lowercase if parsing HTML, and in correct case when parsing
+  XML.
+
+- Changed '<<' operator on Forward to return None, since this
+  is really used as a pseudo-assignment operator, not as a
+  left-shift operator.  By returning None, it is easier to
+  catch faulty statements such as a << b | c, where precedence
+  of operations causes the '|' operation to be performed
+  *after* inserting b into a, so no alternation is actually
+  implemented.  The correct form is a << (b | c).  With this
+  change, an error will be reported instead of silently
+  clipping the alternative term.  (Note: this may break some
+  existing code, but if it does, the code had a silent bug in
+  it anyway.)  Proposed by wcbarksdale on the pyparsing wiki,
+  thanks!
+
+- Several unit tests were added to pyparsing's regression
+  suite, courtesy of the Google Highly-Open Participation
+  Contest.  Thanks to all who administered and took part in
+  this event!
+
+
+Version 1.4.10 - December 9, 2007
+---------------------------------
+- Fixed bug introduced in v1.4.8, parse actions were called for
+  intermediate operator levels, not just the deepest matching
+  operation level.  Again, big thanks to Torsten Marek for
+  helping isolate this problem!
+
+
+Version 1.4.9 - December 8, 2007
+--------------------------------
+- Added '*' multiplication operator support when creating
+  grammars, accepting either an integer, or a two-integer
+  tuple multiplier, as in:
+    ipAddress = Word(nums) + ('.'+Word(nums))*3
+    usPhoneNumber = Word(nums) + ('-'+Word(nums))*(1,2)
+  If multiplying by a tuple, the two integer values represent
+  min and max multiples.  Suggested by Vincent of eToy.com,
+  great idea, Vincent!
+
+- Fixed bug in nestedExpr, original version was overly greedy!
+  Thanks to Michael Ramirez for raising this issue.
+
+- Fixed internal bug in ParseResults - when an item was deleted,
+  the key indices were not updated.  Thanks to Tim Mitchell for
+  posting a bugfix patch to the SF bug tracking system!
+
+- Fixed internal bug in operatorPrecedence - when the results of
+  a right-associative term were sent to a parse action, the wrong
+  tokens were sent.  Reported by Torsten Marek, nice job!
+
+- Added pop() method to ParseResults.  If pop is called with an
+  integer or with no arguments, it will use list semantics and
+  update the ParseResults' list of tokens.  If pop is called with
+  a non-integer (a string, for instance), then it will use dict
+  semantics and update the ParseResults' internal dict.
+  Suggested by Donn Ingle, thanks Donn!
+
+- Fixed quoted string built-ins to accept '\xHH' hex characters
+  within the string.
+
+
+Version 1.4.8 - October, 2007
+-----------------------------
+- Added new helper method nestedExpr to easily create expressions
+  that parse lists of data in nested parentheses, braces, brackets,
+  etc.
+
+- Added withAttribute parse action helper, to simplify creating
+  filtering parse actions to attach to expressions returned by
+  makeHTMLTags and makeXMLTags.  Use withAttribute to qualify a
+  starting tag with one or more required attribute values, to avoid
+  false matches on common tags such as <TD> or <DIV>.
+
+- Added new examples nested.py and withAttribute.py to demonstrate
+  the new features.
+
+- Added performance speedup to grammars using operatorPrecedence,
+  instigated by Stefan Reichör - thanks for the feedback, Stefan!
+
+- Fixed bug/typo when deleting an element from a ParseResults by
+  using the element's results name.
+
+- Fixed whitespace-skipping bug in wrapper classes (such as Group,
+  Suppress, Combine, etc.) and when using setDebug(), reported by
+  new pyparsing user dazzawazza on SourceForge, nice job!
+
+- Added restriction to prevent defining Word or CharsNotIn expressions
+  with minimum length of 0 (should use Optional if this is desired),
+  and enhanced docstrings to reflect this limitation.  Issue was
+  raised by Joey Tallieu, who submitted a patch with a slightly
+  different solution.  Thanks for taking the initiative, Joey, and
+  please keep submitting your ideas!
+
+- Fixed bug in makeHTMLTags that did not detect HTML tag attributes
+  with no '= value' portion (such as "<td nowrap>"), reported by
+  hamidh on the pyparsing wiki - thanks!
+
+- Fixed minor bug in makeHTMLTags and makeXMLTags, which did not
+  accept whitespace in closing tags.
+
+
+Version 1.4.7 - July, 2007
+--------------------------
+- NEW NOTATION SHORTCUT: ParserElement now accepts results names using
+  a notational shortcut, following the expression with the results name
+  in parentheses.  So this:
+
+    stats = "AVE:" + realNum.setResultsName("average") + \
+            "MIN:" + realNum.setResultsName("min") + \
+            "MAX:" + realNum.setResultsName("max")
+
+  can now be written as this:
+
+    stats = "AVE:" + realNum("average") + \
+            "MIN:" + realNum("min") + \
+            "MAX:" + realNum("max")
+
+  The intent behind this change is to make it simpler to define results
+  names for significant fields within the expression, while keeping
+  the grammar syntax clean and uncluttered.
+
+- Fixed bug when packrat parsing is enabled, with cached ParseResults
+  being updated by subsequent parsing.  Reported on the pyparsing
+  wiki by Kambiz, thanks!
+
+- Fixed bug in operatorPrecedence for unary operators with left
+  associativity, if multiple operators were given for the same term.
+
+- Fixed bug in example simpleBool.py, corrected precedence of "and" vs.
+  "or" operations.
+
+- Fixed bug in Dict class, in which keys were converted to strings
+  whether they needed to be or not.  Have narrowed this logic to
+  convert keys to strings only if the keys are ints (which would
+  confuse __getitem__ behavior for list indexing vs. key lookup).
+
+- Added ParserElement method setBreak(), which will invoke the pdb
+  module's set_trace() function when this expression is about to be
+  parsed.
+
+- Fixed bug in StringEnd in which reading off the end of the input
+  string raises an exception - should match.  Resolved while
+  answering a question for Shawn on the pyparsing wiki.
+
+
+Version 1.4.6 - April, 2007
+---------------------------
+- Simplified constructor for ParseFatalException, to support common
+  exception construction idiom:
+    raise ParseFatalException, "unexpected text: 'Spanish Inquisition'"
+
+- Added method getTokensEndLoc(), to be called from within a parse action,
+  for those parse actions that need both the starting *and* ending
+  location of the parsed tokens within the input text.
+
+- Enhanced behavior of keepOriginalText so that named parse fields are
+  preserved, even though tokens are replaced with the original input
+  text matched by the current expression.  Also, cleaned up the stack
+  traversal to be more robust.  Suggested by Tim Arnold - thanks, Tim!
+
+- Fixed subtle bug in which countedArray (and similar dynamic
+  expressions configured in parse actions) failed to match within Or,
+  Each, FollowedBy, or NotAny.  Reported by Ralf Vosseler, thanks for
+  your patience, Ralf!
+
+- Fixed Unicode bug in upcaseTokens and downcaseTokens parse actions,
+  scanString, and default debugging actions; reported (and patch submitted)
+  by Nikolai Zamkovoi, spasibo!
+
+- Fixed bug when saving a tuple as a named result.  The returned
+  token list gave the proper tuple value, but accessing the result by
+  name only gave the first element of the tuple.  Reported by
+  Poromenos, nice catch!
+
+- Fixed bug in makeHTMLTags/makeXMLTags, which failed to match tag
+  attributes with namespaces.
+
+- Fixed bug in SkipTo when setting include=True, to have the skipped-to
+  tokens correctly included in the returned data.  Reported by gunars on
+  the pyparsing wiki, thanks!
+
+- Fixed typobug in OnceOnly.reset method, omitted self argument.
+  Submitted by eike welk, thanks for the lint-picking!
+
+- Added performance enhancement to Forward class, suggested by
+  akkartik on the pyparsing Wiki discussion, nice work!
+
+- Added optional asKeyword to Word constructor, to indicate that the
+  given word pattern should be matched only as a keyword, that is, it
+  should only match if it is within word boundaries.
+
+- Added S-expression parser to examples directory.
+
+- Added macro substitution example to examples directory.
+
+- Added holaMundo.py example, excerpted from Marco Alfonso's blog -
+  muchas gracias, Marco!
+
+- Modified internal cyclic references in ParseResults to use weakrefs;
+  this should help reduce the memory footprint of large parsing
+  programs, at some cost to performance (3-5%). Suggested by bca48150 on
+  the pyparsing wiki, thanks!
+
+- Enhanced the documentation describing the vagaries and idiosyncracies
+  of parsing strings with embedded tabs, and the impact on:
+  . parse actions
+  . scanString
+  . col and line helper functions
+  (Suggested by eike welk in response to some unexplained inconsistencies
+  between parsed location and offsets in the input string.)
+
+- Cleaned up internal decorators to preserve function names,
+  docstrings, etc.
+
+
+Version 1.4.5 - December, 2006
+------------------------------
+- Removed debugging print statement from QuotedString class.  Sorry
+  for not stripping this out before the 1.4.4 release!
+
+- A significant performance improvement, the first one in a while!
+  For my Verilog parser, this version of pyparsing is about double the
+  speed - YMMV.
+
+- Added support for pickling of ParseResults objects.  (Reported by
+  Jeff Poole, thanks Jeff!)
+
+- Fixed minor bug in makeHTMLTags that did not recognize tag attributes
+  with embedded '-' or '_' characters.  Also, added support for
+  passing expressions to makeHTMLTags and makeXMLTags, and used this
+  feature to define the globals anyOpenTag and anyCloseTag.
+
+- Fixed error in alphas8bit, I had omitted the y-with-umlaut character.
+
+- Added punc8bit string to complement alphas8bit - it contains all the
+  non-alphabetic, non-blank 8-bit characters.
+
+- Added commonHTMLEntity expression, to match common HTML "ampersand"
+  codes, such as "&lt;", "&gt;", "&amp;", "&nbsp;", and "&quot;".  This
+  expression also defines a results name 'entity', which can be used
+  to extract the entity field (that is, "lt", "gt", etc.).  Also added
+  built-in parse action replaceHTMLEntity, which can be attached to
+  commonHTMLEntity to translate "&lt;", "&gt;", "&amp;", "&nbsp;", and
+  "&quot;" to "<", ">", "&", " ", and "'".
+
+- Added example, htmlStripper.py, that strips HTML tags and scripts
+  from HTML pages.  It also translates common HTML entities to their
+  respective characters.
+
+
+Version 1.4.4 - October, 2006
+-------------------------------
+- Fixed traceParseAction decorator to also trap and record exception
+  returns from parse actions, and to handle parse actions with 0,
+  1, 2, or 3 arguments.
+
+- Enhanced parse action normalization to support using classes as
+  parse actions; that is, the class constructor is called at parse
+  time and the __init__ function is called with 0, 1, 2, or 3
+  arguments.  If passing a class as a parse action, the __init__
+  method must use one  of the valid parse action parameter list
+  formats. (This technique is useful when using pyparsing to compile
+  parsed text into a series of application objects - see the new
+  example simpleBool.py.)
+
+- Fixed bug in ParseResults when setting an item using an integer
+  index. (Reported by Christopher Lambacher, thanks!)
+
+- Fixed whitespace-skipping bug, patch submitted by Paolo Losi -
+  grazie, Paolo!
+
+- Fixed bug when a Combine contained an embedded Forward expression,
+  reported by cie on the pyparsing wiki - good catch!
+
+- Fixed listAllMatches bug, when a listAllMatches result was
+  nested within another result. (Reported by don pasquale on
+  comp.lang.python, well done!)
+
+- Fixed bug in ParseResults items() method, when returning an item
+  marked as listAllMatches=True
+
+- Fixed bug in definition of cppStyleComment (and javaStyleComment)
+  in which '//' line comments were not continued to the next line
+  if the line ends with a '\'.  (Reported by eagle-eyed Ralph
+  Corderoy!)
+
+- Optimized re's for cppStyleComment and quotedString for better
+  re performance - also provided by Ralph Corderoy, thanks!
+
+- Added new example, indentedGrammarExample.py, showing how to
+  define a grammar using indentation to show grouping (as Python
+  does for defining statement nesting).  Instigated by an e-mail
+  discussion with Andrew Dalke, thanks Andrew!
+
+- Added new helper operatorPrecedence (based on e-mail list discussion
+  with Ralph Corderoy and Paolo Losi), to facilitate definition of
+  grammars for expressions with unary and binary operators.  For
+  instance, this grammar defines a 6-function arithmetic expression
+  grammar, with unary plus and minus, proper operator precedence,and
+  right- and left-associativity:
+
+    expr = operatorPrecedence( operand,
+        [("!", 1, opAssoc.LEFT),
+         ("^", 2, opAssoc.RIGHT),
+         (oneOf("+ -"), 1, opAssoc.RIGHT),
+         (oneOf("* /"), 2, opAssoc.LEFT),
+         (oneOf("+ -"), 2, opAssoc.LEFT),]
+        )
+
+  Also added example simpleArith.py and simpleBool.py to provide
+  more detailed code samples using this new helper method.
+
+- Added new helpers matchPreviousLiteral and matchPreviousExpr, for
+  creating adaptive parsing expressions that match the same content
+  as was parsed in a previous parse expression.  For instance:
+
+        first = Word(nums)
+        matchExpr = first + ":" + matchPreviousLiteral(first)
+
+  will match "1:1", but not "1:2".  Since this matches at the literal
+  level, this will also match the leading "1:1" in "1:10".
+
+  In contrast:
+
+        first = Word(nums)
+        matchExpr = first + ":" + matchPreviousExpr(first)
+
+  will *not* match the leading "1:1" in "1:10"; the expressions are
+  evaluated first, and then compared, so "1" is compared with "10".
+
+- Added keepOriginalText parse action.  Sometimes pyparsing's
+  whitespace-skipping leaves out too much whitespace.  Adding this
+  parse action will restore any internal whitespace for a parse
+  expression.  This is especially useful when defining expressions
+  for scanString or transformString applications.
+
+- Added __add__ method for ParseResults class, to better support
+  using Python sum built-in for summing ParseResults objects returned
+  from scanString.
+
+- Added reset method for the new OnlyOnce class wrapper for parse
+  actions (to allow a grammar to be used multiple times).
+
+- Added optional maxMatches argument to scanString and searchString,
+  to short-circuit scanning after 'n' expression matches are found.
+
+
+Version 1.4.3 - July, 2006
+------------------------------
+- Fixed implementation of multiple parse actions for an expression
+  (added in 1.4.2).
+  . setParseAction() reverts to its previous behavior, setting
+    one (or more) actions for an expression, overwriting any
+    action or actions previously defined
+  . new method addParseAction() appends one or more parse actions
+    to the list of parse actions attached to an expression
+  Now it is harder to accidentally append parse actions to an
+  expression, when what you wanted to do was overwrite whatever had
+  been defined before.  (Thanks, Jean-Paul Calderone!)
+
+- Simplified interface to parse actions that do not require all 3
+  parse action arguments.  Very rarely do parse actions require more
+  than just the parsed tokens, yet parse actions still require all
+  3 arguments including the string being parsed and the location
+  within the string where the parse expression was matched.  With this
+  release, parse actions may now be defined to be called as:
+  . fn(string,locn,tokens)  (the current form)
+  . fn(locn,tokens)
+  . fn(tokens)
+  . fn()
+  The setParseAction and addParseAction methods will internally decorate
+  the provided parse actions with compatible wrappers to conform to
+  the full (string,locn,tokens) argument sequence.
+
+- REMOVED SUPPORT FOR RETURNING PARSE LOCATION FROM A PARSE ACTION.
+  I announced this in March, 2004, and gave a final warning in the last
+  release.  Now you can return a tuple from a parse action, and it will
+  be treated like any other return value (i.e., the tuple will be
+  substituted for the incoming tokens passed to the parse action,
+  which is useful when trying to parse strings into tuples).
+
+- Added setFailAction method, taking a callable function fn that
+  takes the arguments fn(s,loc,expr,err) where:
+  . s - string being parsed
+  . loc - location where expression match was attempted and failed
+  . expr - the parse expression that failed
+  . err - the exception thrown
+  The function returns no values.  It may throw ParseFatalException
+  if it is desired to stop parsing immediately.
+  (Suggested by peter21081944 on wikispaces.com)
+
+- Added class OnlyOnce as helper wrapper for parse actions.  OnlyOnce
+  only permits a parse action to be called one time, after which
+  all subsequent calls throw a ParseException.
+
+- Added traceParseAction decorator to help debug parse actions.
+  Simply insert "@traceParseAction" ahead of the definition of your
+  parse action, and each invocation will be displayed, along with
+  incoming arguments, and returned value.
+
+- Fixed bug when copying ParserElements using copy() or
+  setResultsName().  (Reported by Dan Thill, great catch!)
+
+- Fixed bug in asXML() where token text contains <, >, and &
+  characters - generated XML now escapes these as &lt;, &gt; and
+  &amp;.  (Reported by Jacek Sieka, thanks!)
+
+- Fixed bug in SkipTo() when searching for a StringEnd(). (Reported
+  by Pete McEvoy, thanks Pete!)
+
+- Fixed "except Exception" statements, the most critical added as part
+  of the packrat parsing enhancement.  (Thanks, Erick Tryzelaar!)
+
+- Fixed end-of-string infinite looping on LineEnd and StringEnd
+  expressions.  (Thanks again to Erick Tryzelaar.)
+
+- Modified setWhitespaceChars to return self, to be consistent with
+  other ParserElement modifiers. (Suggested by Erick Tryzelaar.)
+
+- Fixed bug/typo in new ParseResults.dump() method.
+
+- Fixed bug in searchString() method, in which only the first token of
+  an expression was returned.  searchString() now returns a
+  ParseResults collection of all search matches.
+
+- Added example program removeLineBreaks.py, a string transformer that
+  converts text files with hard line-breaks into one with line breaks
+  only between paragraphs.
+
+- Added example program listAllMatches.py, to illustrate using the
+  listAllMatches option when specifying results names (also shows new
+  support for passing lists to oneOf).
+
+- Added example program linenoExample.py, to illustrate using the
+  helper methods lineno, line, and col, and returning objects from a
+  parse action.
+
+- Added example program parseListString.py, to which can parse the
+  string representation of a Python list back into a true list.  Taken
+  mostly from my PyCon presentation examples, but now with support
+  for tuple elements, too!
+
+
+
+Version 1.4.2 - April 1, 2006 (No foolin'!)
+-------------------------------------------
+- Significant speedup from memoizing nested expressions (a technique
+  known as "packrat parsing"), thanks to Chris Lesniewski-Laas!  Your
+  mileage may vary, but my Verilog parser almost doubled in speed to
+  over 600 lines/sec!
+
+  This speedup may break existing programs that use parse actions that
+  have side-effects.  For this reason, packrat parsing is disabled when
+  you first import pyparsing.  To activate the packrat feature, your
+  program must call the class method ParserElement.enablePackrat().  If
+  your program uses psyco to "compile as you go", you must call
+  enablePackrat before calling psyco.full().  If you do not do this,
+  Python will crash.  For best results, call enablePackrat() immediately
+  after importing pyparsing.
+
+- Added new helper method countedArray(expr), for defining patterns that
+  start with a leading integer to indicate the number of array elements,
+  followed by that many elements, matching the given expr parse
+  expression.  For instance, this two-liner:
+    wordArray = countedArray(Word(alphas))
+    print wordArray.parseString("3 Practicality beats purity")[0]
+  returns the parsed array of words:
+    ['Practicality', 'beats', 'purity']
+  The leading token '3' is suppressed, although it is easily obtained
+  from the length of the returned array.
+  (Inspired by e-mail discussion with Ralf Vosseler.)
+
+- Added support for attaching multiple parse actions to a single
+  ParserElement. (Suggested by Dan "Dang" Griffith - nice idea, Dan!)
+
+- Added support for asymmetric quoting characters in the recently-added
+  QuotedString class.  Now you can define your own quoted string syntax
+  like "<<This is a string in double angle brackets.>>".  To define
+  this custom form of QuotedString, your code would define:
+    dblAngleQuotedString = QuotedString('<<',endQuoteChar='>>')
+  QuotedString also supports escaped quotes, escape character other
+  than '\', and multiline.
+
+- Changed the default value returned internally by Optional, so that
+  None can be used as a default value.  (Suggested by Steven Bethard -
+  I finally saw the light!)
+
+- Added dump() method to ParseResults, to make it easier to list out
+  and diagnose values returned from calling parseString.
+
+- A new example, a search query string parser, submitted by Steven
+  Mooij and Rudolph Froger - a very interesting application, thanks!
+
+- Added an example that parses the BNF in Python's Grammar file, in
+  support of generating Python grammar documentation. (Suggested by
+  J H Stovall.)
+
+- A new example, submitted by Tim Cera, of a flexible parser module,
+  using a simple config variable to adjust parsing for input formats
+  that have slight variations - thanks, Tim!
+
+- Added an example for parsing Roman numerals, showing the capability
+  of parse actions to "compile" Roman numerals into their integer
+  values during parsing.
+
+- Added a new docs directory, for additional documentation or help.
+  Currently, this includes the text and examples from my recent
+  presentation at PyCon.
+
+- Fixed another typo in CaselessKeyword, thanks Stefan Behnel.
+
+- Expanded oneOf to also accept tuples, not just lists.  This really
+  should be sufficient...
+
+- Added deprecation warnings when tuple is returned from a parse action.
+  Looking back, I see that I originally deprecated this feature in March,
+  2004, so I'm guessing people really shouldn't have been using this
+  feature - I'll drop it altogether in the next release, which will
+  allow users to return a tuple from a parse action (which is really
+  handy when trying to reconstuct tuples from a tuple string
+  representation!).
+
+
+Version 1.4.1 - February, 2006
+------------------------------
+- Converted generator expression in QuotedString class to list
+  comprehension, to retain compatibility with Python 2.3. (Thanks, Titus
+  Brown for the heads-up!)
+
+- Added searchString() method to ParserElement, as an alternative to
+  using "scanString(instring).next()[0][0]" to search through a string
+  looking for a substring matching a given parse expression. (Inspired by
+  e-mail conversation with Dave Feustel.)
+
+- Modified oneOf to accept lists of strings as well as a single string
+  of space-delimited literals.  (Suggested by Jacek Sieka - thanks!)
+
+- Removed deprecated use of Upcase in pyparsing test code. (Also caught by
+  Titus Brown.)
+
+- Removed lstrip() call from Literal - too aggressive in stripping
+  whitespace which may be valid for some grammars.  (Point raised by Jacek
+  Sieka).  Also, made Literal more robust in the event of passing an empty
+  string.
+
+- Fixed bug in replaceWith when returning None.
+
+- Added cautionary documentation for Forward class when assigning a
+  MatchFirst expression, as in:
+    fwdExpr << a | b | c
+  Precedence of operators causes this to be evaluated as:
+    (fwdExpr << a) | b | c
+  thereby leaving b and c out as parseable alternatives.  Users must
+  explicitly group the values inserted into the Forward:
+    fwdExpr << (a | b | c)
+  (Suggested by Scot Wilcoxon - thanks, Scot!)
+
+
+Version 1.4 - January 18, 2006
+------------------------------
+- Added Regex class, to permit definition of complex embedded expressions
+  using regular expressions. (Enhancement provided by John Beisley, great
+  job!)
+
+- Converted implementations of Word, oneOf, quoted string, and comment
+  helpers to utilize regular expression matching.  Performance improvements
+  in the 20-40% range.
+
+- Added QuotedString class, to support definition of non-standard quoted
+  strings (Suggested by Guillaume Proulx, thanks!)
+
+- Added CaselessKeyword class, to streamline grammars with, well, caseless
+  keywords (Proposed by Stefan Behnel, thanks!)
+
+- Fixed bug in SkipTo, when using an ignoreable expression. (Patch provided
+  by Anonymous, thanks, whoever-you-are!)
+
+- Fixed typo in NoMatch class. (Good catch, Stefan Behnel!)
+
+- Fixed minor bug in _makeTags(), using string.printables instead of
+  pyparsing.printables.
+
+- Cleaned up some of the expressions created by makeXXXTags helpers, to
+  suppress extraneous <> characters.
+
+- Added some grammar definition-time checking to verify that a grammar is
+  being built using proper ParserElements.
+
+- Added examples:
+  . LAparser.py - linear algebra C preprocessor (submitted by Mike Ellis,
+    thanks Mike!)
+  . wordsToNum.py - converts word description of a number back to
+    the original number (such as 'one hundred and twenty three' -> 123)
+  . updated fourFn.py to support unary minus, added BNF comments
+
+
+Version 1.3.3 - September 12, 2005
+----------------------------------
+- Improved support for Unicode strings that would be returned using
+  srange.  Added greetingInKorean.py example, for a Korean version of
+  "Hello, World!" using Unicode. (Thanks, June Kim!)
+
+- Added 'hexnums' string constant (nums+"ABCDEFabcdef") for defining
+  hexadecimal value expressions.
+
+- NOTE: ===THIS CHANGE MAY BREAK EXISTING CODE===
+  Modified tag and results definitions returned by makeHTMLTags(),
+  to better support the looseness of HTML parsing.  Tags to be
+  parsed are now caseless, and keys generated for tag attributes are
+  now converted to lower case.
+
+  Formerly, makeXMLTags("XYZ") would return a tag with results
+  name of "startXYZ", this has been changed to "startXyz".  If this
+  tag is matched against '<XYZ Abc="1" DEF="2" ghi="3">', the
+  matched keys formerly would be "Abc", "DEF", and "ghi"; keys are
+  now converted to lower case, giving keys of "abc", "def", and
+  "ghi".  These changes were made to try to address the lax
+  case sensitivity agreement between start and end tags in many
+  HTML pages.
+
+  No changes were made to makeXMLTags(), which assumes more rigorous
+  parsing rules.
+
+  Also, cleaned up case-sensitivity bugs in closing tags, and
+  switched to using Keyword instead of Literal class for tags.
+  (Thanks, Steve Young, for getting me to look at these in more
+  detail!)
+
+- Added two helper parse actions, upcaseTokens and downcaseTokens,
+  which will convert matched text to all uppercase or lowercase,
+  respectively.
+
+- Deprecated Upcase class, to be replaced by upcaseTokens parse
+  action.
+
+- Converted messages sent to stderr to use warnings module, such as
+  when constructing a Literal with an empty string, one should use
+  the Empty() class or the empty helper instead.
+
+- Added ' ' (space) as an escapable character within a quoted
+  string.
+
+- Added helper expressions for common comment types, in addition
+  to the existing cStyleComment (/*...*/) and htmlStyleComment
+  (<!-- ... -->)
+  . dblSlashComment = // ... (to end of line)
+  . cppStyleComment = cStyleComment or dblSlashComment
+  . javaStyleComment = cppStyleComment
+  . pythonStyleComment = # ... (to end of line)
+
+
+
+Version 1.3.2 - July 24, 2005
+-----------------------------
+- Added Each class as an enhanced version of And.  'Each' requires
+  that all given expressions be present, but may occur in any order.
+  Special handling is provided to group ZeroOrMore and OneOrMore
+  elements that occur out-of-order in the input string.  You can also
+  construct 'Each' objects by joining expressions with the '&'
+  operator.  When using the Each class, results names are strongly
+  recommended for accessing the matched tokens. (Suggested by Pradam
+  Amini - thanks, Pradam!)
+
+- Stricter interpretation of 'max' qualifier on Word elements.  If the
+  'max' attribute is specified, matching will fail if an input field
+  contains more than 'max' consecutive body characters.  For example,
+  previously, Word(nums,max=3) would match the first three characters
+  of '0123456', returning '012' and continuing parsing at '3'.  Now,
+  when constructed using the max attribute, Word will raise an
+  exception with this string.
+
+- Cleaner handling of nested dictionaries returned by Dict.  No
+  longer necessary to dereference sub-dictionaries as element [0] of
+  their parents.
+  === NOTE: THIS CHANGE MAY BREAK SOME EXISTING CODE, BUT ONLY IF
+  PARSING NESTED DICTIONARIES USING THE LITTLE-USED DICT CLASS ===
+  (Prompted by discussion thread on the Python Tutor list, with
+  contributions from Danny Yoo, Kent Johnson, and original post by
+  Liam Clarke - thanks all!)
+
+
+
+Version 1.3.1 - June, 2005
+----------------------------------
+- Added markInputline() method to ParseException, to display the input
+  text line location of the parsing exception. (Thanks, Stefan Behnel!)
+
+- Added setDefaultKeywordChars(), so that Keyword definitions using a
+  custom keyword character set do not all need to add the keywordChars
+  constructor argument (similar to setDefaultWhitespaceChars()).
+  (suggested by rzhanka on the SourceForge pyparsing forum.)
+
+- Simplified passing debug actions to setDebugAction().  You can now
+  pass 'None' for a debug action if you want to take the default
+  debug behavior.  To suppress a particular debug action, you can pass
+  the pyparsing method nullDebugAction.
+
+- Refactored parse exception classes, moved all behavior to
+  ParseBaseException, and the former ParseException is now a subclass of
+  ParseBaseException.  Added a second subclass, ParseFatalException, as
+  a subclass of ParseBaseException.  User-defined parse actions can raise
+  ParseFatalException if a data inconsistency is detected (such as a
+  begin-tag/end-tag mismatch), and this will stop all parsing immediately.
+  (Inspired by e-mail thread with Michele Petrazzo - thanks, Michelle!)
+
+- Added helper methods makeXMLTags and makeHTMLTags, that simplify the
+  definition of XML or HTML tag parse expressions for a given tagname.
+  Both functions return a pair of parse expressions, one for the opening
+  tag (that is, '<tagname>') and one for the closing tag ('</tagname>').
+  The opening tagame also recognizes any attribute definitions that have
+  been included in the opening tag, as well as an empty tag (one with a
+  trailing '/', as in '<BODY/>' which is equivalent to '<BODY></BODY>').
+  makeXMLTags uses stricter XML syntax for attributes, requiring that they
+  be enclosed in double quote characters - makeHTMLTags is more lenient,
+  and accepts single-quoted strings or any contiguous string of characters
+  up to the next whitespace character or '>' character.  Attributes can
+  be retrieved as dictionary or attribute values of the returned results
+  from the opening tag.
+
+- Added example minimath2.py, a refinement on fourFn.py that adds
+  an interactive session and support for variables.  (Thanks, Steven Siew!)
+
+- Added performance improvement, up to 20% reduction!  (Found while working
+  with Wolfgang Borgert on performance tuning of his TTCN3 parser.)
+
+- And another performance improvement, up to 25%, when using scanString!
+  (Found while working with Henrik Westlund on his C header file scanner.)
+
+- Updated UML diagrams to reflect latest class/method changes.
+
+
+Version 1.3 - March, 2005
+----------------------------------
+- Added new Keyword class, as a special form of Literal.  Keywords
+  must be followed by whitespace or other non-keyword characters, to
+  distinguish them from variables or other identifiers that just
+  happen to start with the same characters as a keyword.  For instance,
+  the input string containing "ifOnlyIfOnly" will match a Literal("if")
+  at the beginning and in the middle, but will fail to match a
+  Keyword("if").  Keyword("if") will match only strings such as "if only"
+  or "if(only)". (Proposed by Wolfgang Borgert, and Berteun Damman
+  separately requested this on comp.lang.python - great idea!)
+
+- Added setWhitespaceChars() method to override the characters to be
+  skipped as whitespace before matching a particular ParseElement.  Also
+  added the class-level method setDefaultWhitespaceChars(), to allow
+  users to override the default set of whitespace characters (space,
+  tab, newline, and return) for all subsequently defined ParseElements.
+  (Inspired by Klaas Hofstra's inquiry on the Sourceforge pyparsing
+  forum.)
+
+- Added helper parse actions to support some very common parse
+  action use cases:
+  . replaceWith(replStr) - replaces the matching tokens with the
+    provided replStr replacement string; especially useful with
+    transformString()
+  . removeQuotes - removes first and last character from string enclosed
+    in quotes (note - NOT the same as the string strip() method, as only
+    a single character is removed at each end)
+
+- Added copy() method to ParseElement, to make it easier to define
+  different parse actions for the same basic parse expression.  (Note, copy
+  is implicitly called when using setResultsName().)
+
+
+  (The following changes were posted to CVS as Version 1.2.3 -
+  October-December, 2004)
+
+- Added support for Unicode strings in creating grammar definitions.
+  (Big thanks to Gavin Panella!)
+
+- Added constant alphas8bit to include the following 8-bit characters:
+    ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ
+
+- Added srange() function to simplify definition of Word elements, using
+  regexp-like '[A-Za-z0-9]' syntax.  This also simplifies referencing
+  common 8-bit characters.
+
+- Fixed bug in Dict when a single element Dict was embedded within another
+  Dict. (Thanks Andy Yates for catching this one!)
+
+- Added 'formatted' argument to ParseResults.asXML().  If set to False,
+  suppresses insertion of whitespace for pretty-print formatting.  Default
+  equals True for backward compatibility.
+
+- Added setDebugActions() function to ParserElement, to allow user-defined
+  debugging actions.
+
+- Added support for escaped quotes (either in \', \", or doubled quote
+  form) to the predefined expressions for quoted strings. (Thanks, Ero
+  Carrera!)
+
+- Minor performance improvement (~5%) converting "char in string" tests
+  to "char in dict". (Suggested by Gavin Panella, cool idea!)
+
+
+Version 1.2.2 - September 27, 2004
+----------------------------------
+- Modified delimitedList to accept an expression as the delimiter, instead
+  of only accepting strings.
+
+- Modified ParseResults, to convert integer field keys to strings (to
+  avoid confusion with list access).
+
+- Modified Combine, to convert all embedded tokens to strings before
+  combining.
+
+- Fixed bug in MatchFirst in which parse actions would be called for
+  expressions that only partially match. (Thanks, John Hunter!)
+
+- Fixed bug in fourFn.py example that fixes right-associativity of ^
+  operator. (Thanks, Andrea Griffini!)
+
+- Added class FollowedBy(expression), to look ahead in the input string
+  without consuming tokens.
+
+- Added class NoMatch that never matches any input. Can be useful in
+  debugging, and in very specialized grammars.
+
+- Added example pgn.py, for parsing chess game files stored in Portable
+  Game Notation. (Thanks, Alberto Santini!)
+
+
+Version 1.2.1 - August 19, 2004
+-------------------------------
+- Added SkipTo(expression) token type, simplifying grammars that only
+  want to specify delimiting expressions, and want to match any characters
+  between them.
+
+- Added helper method dictOf(key,value), making it easier to work with
+  the Dict class. (Inspired by Pavel Volkovitskiy, thanks!).
+
+- Added optional argument listAllMatches (default=False) to
+  setResultsName().  Setting listAllMatches to True overrides the default
+  modal setting of tokens to results names; instead, the results name
+  acts as an accumulator for all matching tokens within the local
+  repetition group. (Suggested by Amaury Le Leyzour - thanks!)
+
+- Fixed bug in ParseResults, throwing exception when trying to extract
+  slice, or make a copy using [:]. (Thanks, Wilson Fowlie!)
+
+- Fixed bug in transformString() when the input string contains <TAB>'s
+  (Thanks, Rick Walia!).
+
+- Fixed bug in returning tokens from un-Grouped And's, Or's and
+  MatchFirst's, where too many tokens would be included in the results,
+  confounding parse actions and returned results.
+
+- Fixed bug in naming ParseResults returned by And's, Or's, and Match
+  First's.
+
+- Fixed bug in LineEnd() - matching this token now correctly consumes
+  and returns the end of line "\n".
+
+- Added a beautiful example for parsing Mozilla calendar files (Thanks,
+  Petri Savolainen!).
+
+- Added support for dynamically modifying Forward expressions during
+  parsing.
+
+
+Version 1.2 - 20 June 2004
+--------------------------
+- Added definition for htmlComment to help support HTML scanning and
+  parsing.
+
+- Fixed bug in generating XML for Dict classes, in which trailing item was
+  duplicated in the output XML.
+
+- Fixed release bug in which scanExamples.py was omitted from release
+  files.
+
+- Fixed bug in transformString() when parse actions are not defined on the
+  outermost parser element.
+
+- Added example urlExtractor.py, as another example of using scanString
+  and parse actions.
+
+
+Version 1.2beta3 - 4 June 2004
+------------------------------
+- Added White() token type, analogous to Word, to match on whitespace
+  characters.  Use White in parsers with significant whitespace (such as
+  configuration file parsers that use indentation to indicate grouping).
+  Construct White with a string containing the whitespace characters to be
+  matched.  Similar to Word, White also takes optional min, max, and exact
+  parameters.
+
+- As part of supporting whitespace-signficant parsing, added parseWithTabs()
+  method to ParserElement, to override the default behavior in parseString
+  of automatically expanding tabs to spaces.  To retain tabs during
+  parsing, call parseWithTabs() before calling parseString(), parseFile() or
+  scanString(). (Thanks, Jean-Guillaume Paradis for catching this, and for
+  your suggestions on whitespace-significant parsing.)
+
+- Added transformString() method to ParseElement, as a complement to
+  scanString().  To use transformString, define a grammar and attach a parse
+  action to the overall grammar that modifies the returned token list.
+  Invoking transformString() on a target string will then scan for matches,
+  and replace the matched text patterns according to the logic in the parse
+  action.  transformString() returns the resulting transformed string.
+  (Note: transformString() does *not* automatically expand tabs to spaces.)
+  Also added scanExamples.py to the examples directory to show sample uses of
+  scanString() and transformString().
+
+- Removed group() method that was introduced in beta2.  This turns out NOT to
+  be equivalent to nesting within a Group() object, and I'd prefer not to sow
+  more seeds of confusion.
+
+- Fixed behavior of asXML() where tags for groups were incorrectly duplicated.
+  (Thanks, Brad Clements!)
+
+- Changed beta version message to display to stderr instead of stdout, to
+  make asXML() easier to use.  (Thanks again, Brad.)
+
+
+Version 1.2beta2 - 19 May 2004
+------------------------------
+- *** SIMPLIFIED API *** - Parse actions that do not modify the list of tokens
+  no longer need to return a value.  This simplifies those parse actions that
+  use the list of tokens to update a counter or record or display some of the
+  token content; these parse actions can simply end without having to specify
+  'return toks'.
+
+- *** POSSIBLE API INCOMPATIBILITY *** - Fixed CaselessLiteral bug, where the
+  returned token text was not the original string (as stated in the docs),
+  but the original string converted to upper case.  (Thanks, Dang Griffith!)
+  **NOTE: this may break some code that relied on this erroneous behavior.
+  Users should scan their code for uses of CaselessLiteral.**
+
+- *** POSSIBLE CODE INCOMPATIBILITY *** - I have renamed the internal
+  attributes on ParseResults from 'dict' and 'list' to '__tokdict' and
+  '__toklist', to avoid collisions with user-defined data fields named 'dict'
+  and 'list'.  Any client code that accesses these attributes directly will
+  need to be modified.  Hopefully the implementation of methods such as keys(),
+  items(), len(), etc. on ParseResults will make such direct attribute
+  accessess unnecessary.
+
+- Added asXML() method to ParseResults.  This greatly simplifies the process
+  of parsing an input data file and generating XML-structured data.
+
+- Added getName() method to ParseResults.  This method is helpful when
+  a grammar specifies ZeroOrMore or OneOrMore of a MatchFirst or Or
+  expression, and the parsing code needs to know which expression matched.
+  (Thanks, Eric van der Vlist, for this idea!)
+
+- Added items() and values() methods to ParseResults, to better support using
+  ParseResults as a Dictionary.
+
+- Added parseFile() as a convenience function to parse the contents of an
+  entire text file.  Accepts either a file name or a file object.  (Thanks
+  again, Dang!)
+
+- Added group() method to And, Or, and MatchFirst, as a short-cut alternative
+  to enclosing a construct inside a Group object.
+
+- Extended fourFn.py to support exponentiation, and simple built-in functions.
+
+- Added EBNF parser to examples, including a demo where it parses its own
+  EBNF!  (Thanks to Seo Sanghyeon!)
+
+- Added Delphi Form parser to examples, dfmparse.py, plus a couple of
+  sample Delphi forms as tests.  (Well done, Dang!)
+
+- Another performance speedup, 5-10%, inspired by Dang!  Plus about a 20%
+  speedup, by pre-constructing and cacheing exception objects instead of
+  constructing them on the fly.
+
+- Fixed minor bug when specifying oneOf() with 'caseless=True'.
+
+- Cleaned up and added a few more docstrings, to improve the generated docs.
+
+
+Version 1.1.2 - 21 Mar 2004
+---------------------------
+- Fixed minor bug in scanString(), so that start location is at the start of
+  the matched tokens, not at the start of the whitespace before the matched
+  tokens.
+
+- Inclusion of HTML documentation, generated using Epydoc.  Reformatted some
+  doc strings to better generate readable docs. (Beautiful work, Ed Loper,
+  thanks for Epydoc!)
+
+- Minor performance speedup, 5-15%
+
+- And on a process note, I've used the unittest module to define a series of
+  unit tests, to help avoid the embarrassment of the version 1.1 snafu.
+
+
+Version 1.1.1 - 6 Mar 2004
+--------------------------
+- Fixed critical bug introduced in 1.1, which broke MatchFirst(!) token
+  matching.
+  **THANK YOU, SEO SANGHYEON!!!**
+
+- Added "from future import __generators__" to permit running under
+  pre-Python 2.3.
+
+- Added example getNTPservers.py, showing how to use pyparsing to extract
+  a text pattern from the HTML of a web page.
+
+
+Version 1.1 - 3 Mar 2004
+-------------------------
+- ***Changed API*** - While testing out parse actions, I found that the value
+  of loc passed in was not the starting location of the matched tokens, but
+  the location of the next token in the list.  With this version, the location
+  passed to the parse action is now the starting location of the tokens that
+  matched.
+
+  A second part of this change is that the return value of parse actions no
+  longer needs to return a tuple containing both the location and the parsed
+  tokens (which may optionally be modified); parse actions only need to return
+  the list of tokens.  Parse actions that return a tuple are deprecated; they
+  will still work properly for conversion/compatibility, but this behavior will
+  be removed in a future version.
+
+- Added validate() method, to help diagnose infinite recursion in a grammar tree.
+  validate() is not 100% fool-proof, but it can help track down nasty infinite
+  looping due to recursively referencing the same grammar construct without some
+  intervening characters.
+
+- Cleaned up default listing of some parse element types, to more closely match
+  ordinary BNF.  Instead of the form <classname>:[contents-list], some changes
+  are:
+  . And(token1,token2,token3) is "{ token1 token2 token3 }"
+  . Or(token1,token2,token3) is "{ token1 ^ token2 ^ token3 }"
+  . MatchFirst(token1,token2,token3) is "{ token1 | token2 | token3 }"
+  . Optional(token) is "[ token ]"
+  . OneOrMore(token) is "{ token }..."
+  . ZeroOrMore(token) is "[ token ]..."
+
+- Fixed an infinite loop in oneOf if the input string contains a duplicated
+  option. (Thanks Brad Clements)
+
+- Fixed a bug when specifying a results name on an Optional token. (Thanks
+  again, Brad Clements)
+
+- Fixed a bug introduced in 1.0.6 when I converted quotedString to use
+  CharsNotIn; I accidentally permitted quoted strings to span newlines.  I have
+  fixed this in this version to go back to the original behavior, in which
+  quoted strings do *not* span newlines.
+
+- Fixed minor bug in HTTP server log parser. (Thanks Jim Richardson)
+
+
+Version 1.0.6 -  13 Feb 2004
+----------------------------
+- Added CharsNotIn class (Thanks, Lee SangYeong).  This is the opposite of
+  Word, in that it is constructed with a set of characters *not* to be matched.
+  (This enhancement also allowed me to clean up and simplify some of the
+  definitions for quoted strings, cStyleComment, and restOfLine.)
+
+- **MINOR API CHANGE** - Added joinString argument to the __init__ method of
+  Combine (Thanks, Thomas Kalka).  joinString defaults to "", but some
+  applications might choose some other string to use instead, such as a blank
+  or newline.  joinString was inserted as the second argument to __init__,
+  so if you have code that specifies an adjacent value, without using
+  'adjacent=', this code will break.
+
+- Modified LineStart to recognize the start of an empty line.
+
+- Added optional caseless flag to oneOf(), to create a list of CaselessLiteral
+  tokens instead of Literal tokens.
+
+- Added some enhancements to the SQL example:
+  . Oracle-style comments (Thanks to Harald Armin Massa)
+  . simple WHERE clause
+
+- Minor performance speedup - 5-15%
+
+
+Version 1.0.5 -  19 Jan 2004
+----------------------------
+- Added scanString() generator method to ParseElement, to support regex-like
+  pattern-searching
+
+- Added items() list to ParseResults, to return named results as a
+  list of (key,value) pairs
+
+- Fixed memory overflow in asList() for deeply nested ParseResults (Thanks,
+  Sverrir Valgeirsson)
+
+- Minor performance speedup - 10-15%
+
+
+Version 1.0.4 -  8 Jan 2004
+---------------------------
+- Added positional tokens StringStart, StringEnd, LineStart, and LineEnd
+
+- Added commaSeparatedList to pre-defined global token definitions; also added
+  commasep.py to the examples directory, to demonstrate the differences between
+  parsing comma-separated data and simple line-splitting at commas
+
+- Minor API change: delimitedList does not automatically enclose the
+  list elements in a Group, but makes this the responsibility of the caller;
+  also, if invoked using 'combine=True', the list delimiters are also included
+  in the returned text (good for scoped variables, such as a.b.c or a::b::c, or
+  for directory paths such as a/b/c)
+
+- Performance speed-up again, 30-40%
+
+- Added httpServerLogParser.py to examples directory, as this is
+  a common parsing task
+
+
+Version 1.0.3 - 23 Dec 2003
+---------------------------
+- Performance speed-up again, 20-40%
+
+- Added Python distutils installation setup.py, etc. (thanks, Dave Kuhlman)
+
+
+Version 1.0.2 - 18 Dec 2003
+---------------------------
+- **NOTE: Changed API again!!!** (for the last time, I hope)
+
+  + Renamed module from parsing to pyparsing, to better reflect Python
+    linkage.
+
+- Also added dictExample.py to examples directory, to illustrate
+  usage of the Dict class.
+
+
+Version 1.0.1 - 17 Dec 2003
+---------------------------
+- **NOTE:  Changed API!**
+
+  + Renamed 'len' argument on Word.__init__() to 'exact'
+
+- Performance speed-up, 10-30%
+
+
+Version 1.0.0 - 15 Dec 2003
+---------------------------
+- Initial public release
+
+Version 0.1.1 thru 0.1.17 - October-November, 2003
+--------------------------------------------------
+- initial development iterations:
+    - added Dict, Group
+    - added helper methods oneOf, delimitedList
+    - added helpers quotedString (and double and single), restOfLine, cStyleComment
+    - added MatchFirst as an alternative to the slower Or
+    - added UML class diagram
+    - fixed various logic bugs
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644 (file)
index d42b8af..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# Contributor Covenant Code of Conduct\r
-\r
-## Our Pledge\r
-\r
-In the interest of fostering an open and welcoming environment, we as\r
-contributors and maintainers pledge to making participation in our project and\r
-our community a harassment-free experience for everyone, regardless of age, body\r
-size, disability, ethnicity, sex characteristics, gender identity and expression,\r
-level of experience, education, socio-economic status, nationality, personal\r
-appearance, race, religion, or sexual identity and orientation.\r
-\r
-## Our Standards\r
-\r
-Examples of behavior that contributes to creating a positive environment\r
-include:\r
-\r
-* Using welcoming and inclusive language\r
-* Being respectful of differing viewpoints and experiences\r
-* Gracefully accepting constructive criticism\r
-* Focusing on what is best for the community\r
-* Showing empathy towards other community members\r
-\r
-Examples of unacceptable behavior by participants include:\r
-\r
-* The use of sexualized language or imagery and unwelcome sexual attention or\r
-  advances\r
-* Trolling, insulting/derogatory comments, and personal or political attacks\r
-* Public or private harassment\r
-* Publishing others' private information, such as a physical or electronic\r
-  address, without explicit permission\r
-* Other conduct which could reasonably be considered inappropriate in a\r
-  professional setting\r
-\r
-## Our Responsibilities\r
-\r
-Project maintainers are responsible for clarifying the standards of acceptable\r
-behavior and are expected to take appropriate and fair corrective action in\r
-response to any instances of unacceptable behavior.\r
-\r
-Project maintainers have the right and responsibility to remove, edit, or\r
-reject comments, commits, code, wiki edits, issues, and other contributions\r
-that are not aligned to this Code of Conduct, or to ban temporarily or\r
-permanently any contributor for other behaviors that they deem inappropriate,\r
-threatening, offensive, or harmful.\r
-\r
-## Scope\r
-\r
-This Code of Conduct applies both within project spaces and in public spaces\r
-when an individual is representing the project or its community. Examples of\r
-representing a project or community include using an official project e-mail\r
-address, posting via an official social media account, or acting as an appointed\r
-representative at an online or offline event. Representation of a project may be\r
-further defined and clarified by project maintainers.\r
-\r
-## Enforcement\r
-\r
-Instances of abusive, harassing, or otherwise unacceptable behavior may be\r
-reported by contacting the project team at pyparsing@mail.com. All\r
-complaints will be reviewed and investigated and will result in a response that\r
-is deemed necessary and appropriate to the circumstances. The project team is\r
-obligated to maintain confidentiality with regard to the reporter of an incident.\r
-Further details of specific enforcement policies may be posted separately.\r
-\r
-Project maintainers who do not follow or enforce the Code of Conduct in good\r
-faith may face temporary or permanent repercussions as determined by other\r
-members of the project's leadership.\r
-\r
-## Attribution\r
-\r
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\r
-available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\r
-\r
-[homepage]: https://www.contributor-covenant.org\r
-\r
diff --git a/HowToUsePyparsing.html b/HowToUsePyparsing.html
deleted file mode 100644 (file)
index 1bd180b..0000000
+++ /dev/null
@@ -1,1289 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-<head>\r
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
-<meta name="generator" content="Docutils 0.8: http://docutils.sourceforge.net/" />\r
-<title>Using the pyparsing module</title>\r
-<meta name="author" content="Paul McGuire" />\r
-<meta name="date" content="June, 2011" />\r
-<meta name="copyright" content="Copyright © 2003-2011 Paul McGuire." />\r
-<style type="text/css">\r
-\r
-/*\r
-:Author: David Goodger (goodger@python.org)\r
-:Id: $Id: html4css1.css 6387 2010-08-13 12:23:41Z milde $\r
-:Copyright: This stylesheet has been placed in the public domain.\r
-\r
-Default cascading style sheet for the HTML output of Docutils.\r
-\r
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\r
-customize this style sheet.\r
-*/\r
-\r
-/* used to remove borders from tables and images */\r
-.borderless, table.borderless td, table.borderless th {\r
-  border: 0 }\r
-\r
-table.borderless td, table.borderless th {\r
-  /* Override padding for "table.docutils td" with "! important".\r
-     The right padding separates the table cells. */\r
-  padding: 0 0.5em 0 0 ! important }\r
-\r
-.first {\r
-  /* Override more specific margin styles with "! important". */\r
-  margin-top: 0 ! important }\r
-\r
-.last, .with-subtitle {\r
-  margin-bottom: 0 ! important }\r
-\r
-.hidden {\r
-  display: none }\r
-\r
-a.toc-backref {\r
-  text-decoration: none ;\r
-  color: black }\r
-\r
-blockquote.epigraph {\r
-  margin: 2em 5em ; }\r
-\r
-dl.docutils dd {\r
-  margin-bottom: 0.5em }\r
-\r
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {\r
-  overflow: hidden;\r
-}\r
-\r
-/* Uncomment (and remove this text!) to get bold-faced definition list terms\r
-dl.docutils dt {\r
-  font-weight: bold }\r
-*/\r
-\r
-div.abstract {\r
-  margin: 2em 5em }\r
-\r
-div.abstract p.topic-title {\r
-  font-weight: bold ;\r
-  text-align: center }\r
-\r
-div.admonition, div.attention, div.caution, div.danger, div.error,\r
-div.hint, div.important, div.note, div.tip, div.warning {\r
-  margin: 2em ;\r
-  border: medium outset ;\r
-  padding: 1em }\r
-\r
-div.admonition p.admonition-title, div.hint p.admonition-title,\r
-div.important p.admonition-title, div.note p.admonition-title,\r
-div.tip p.admonition-title {\r
-  font-weight: bold ;\r
-  font-family: sans-serif }\r
-\r
-div.attention p.admonition-title, div.caution p.admonition-title,\r
-div.danger p.admonition-title, div.error p.admonition-title,\r
-div.warning p.admonition-title {\r
-  color: red ;\r
-  font-weight: bold ;\r
-  font-family: sans-serif }\r
-\r
-/* Uncomment (and remove this text!) to get reduced vertical space in\r
-   compound paragraphs.\r
-div.compound .compound-first, div.compound .compound-middle {\r
-  margin-bottom: 0.5em }\r
-\r
-div.compound .compound-last, div.compound .compound-middle {\r
-  margin-top: 0.5em }\r
-*/\r
-\r
-div.dedication {\r
-  margin: 2em 5em ;\r
-  text-align: center ;\r
-  font-style: italic }\r
-\r
-div.dedication p.topic-title {\r
-  font-weight: bold ;\r
-  font-style: normal }\r
-\r
-div.figure {\r
-  margin-left: 2em ;\r
-  margin-right: 2em }\r
-\r
-div.footer, div.header {\r
-  clear: both;\r
-  font-size: smaller }\r
-\r
-div.line-block {\r
-  display: block ;\r
-  margin-top: 1em ;\r
-  margin-bottom: 1em }\r
-\r
-div.line-block div.line-block {\r
-  margin-top: 0 ;\r
-  margin-bottom: 0 ;\r
-  margin-left: 1.5em }\r
-\r
-div.sidebar {\r
-  margin: 0 0 0.5em 1em ;\r
-  border: medium outset ;\r
-  padding: 1em ;\r
-  background-color: #ffffee ;\r
-  width: 40% ;\r
-  float: right ;\r
-  clear: right }\r
-\r
-div.sidebar p.rubric {\r
-  font-family: sans-serif ;\r
-  font-size: medium }\r
-\r
-div.system-messages {\r
-  margin: 5em }\r
-\r
-div.system-messages h1 {\r
-  color: red }\r
-\r
-div.system-message {\r
-  border: medium outset ;\r
-  padding: 1em }\r
-\r
-div.system-message p.system-message-title {\r
-  color: red ;\r
-  font-weight: bold }\r
-\r
-div.topic {\r
-  margin: 2em }\r
-\r
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\r
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\r
-  margin-top: 0.4em }\r
-\r
-h1.title {\r
-  text-align: center }\r
-\r
-h2.subtitle {\r
-  text-align: center }\r
-\r
-hr.docutils {\r
-  width: 75% }\r
-\r
-img.align-left, .figure.align-left, object.align-left {\r
-  clear: left ;\r
-  float: left ;\r
-  margin-right: 1em }\r
-\r
-img.align-right, .figure.align-right, object.align-right {\r
-  clear: right ;\r
-  float: right ;\r
-  margin-left: 1em }\r
-\r
-img.align-center, .figure.align-center, object.align-center {\r
-  display: block;\r
-  margin-left: auto;\r
-  margin-right: auto;\r
-}\r
-\r
-.align-left {\r
-  text-align: left }\r
-\r
-.align-center {\r
-  clear: both ;\r
-  text-align: center }\r
-\r
-.align-right {\r
-  text-align: right }\r
-\r
-/* reset inner alignment in figures */\r
-div.align-right {\r
-  text-align: left }\r
-\r
-/* div.align-center * { */\r
-/*   text-align: left } */\r
-\r
-ol.simple, ul.simple {\r
-  margin-bottom: 1em }\r
-\r
-ol.arabic {\r
-  list-style: decimal }\r
-\r
-ol.loweralpha {\r
-  list-style: lower-alpha }\r
-\r
-ol.upperalpha {\r
-  list-style: upper-alpha }\r
-\r
-ol.lowerroman {\r
-  list-style: lower-roman }\r
-\r
-ol.upperroman {\r
-  list-style: upper-roman }\r
-\r
-p.attribution {\r
-  text-align: right ;\r
-  margin-left: 50% }\r
-\r
-p.caption {\r
-  font-style: italic }\r
-\r
-p.credits {\r
-  font-style: italic ;\r
-  font-size: smaller }\r
-\r
-p.label {\r
-  white-space: nowrap }\r
-\r
-p.rubric {\r
-  font-weight: bold ;\r
-  font-size: larger ;\r
-  color: maroon ;\r
-  text-align: center }\r
-\r
-p.sidebar-title {\r
-  font-family: sans-serif ;\r
-  font-weight: bold ;\r
-  font-size: larger }\r
-\r
-p.sidebar-subtitle {\r
-  font-family: sans-serif ;\r
-  font-weight: bold }\r
-\r
-p.topic-title {\r
-  font-weight: bold }\r
-\r
-pre.address {\r
-  margin-bottom: 0 ;\r
-  margin-top: 0 ;\r
-  font: inherit }\r
-\r
-pre.literal-block, pre.doctest-block {\r
-  margin-left: 2em ;\r
-  margin-right: 2em }\r
-\r
-span.classifier {\r
-  font-family: sans-serif ;\r
-  font-style: oblique }\r
-\r
-span.classifier-delimiter {\r
-  font-family: sans-serif ;\r
-  font-weight: bold }\r
-\r
-span.interpreted {\r
-  font-family: sans-serif }\r
-\r
-span.option {\r
-  white-space: nowrap }\r
-\r
-span.pre {\r
-  white-space: pre }\r
-\r
-span.problematic {\r
-  color: red }\r
-\r
-span.section-subtitle {\r
-  /* font-size relative to parent (h1..h6 element) */\r
-  font-size: 80% }\r
-\r
-table.citation {\r
-  border-left: solid 1px gray;\r
-  margin-left: 1px }\r
-\r
-table.docinfo {\r
-  margin: 2em 4em }\r
-\r
-table.docutils {\r
-  margin-top: 0.5em ;\r
-  margin-bottom: 0.5em }\r
-\r
-table.footnote {\r
-  border-left: solid 1px black;\r
-  margin-left: 1px }\r
-\r
-table.docutils td, table.docutils th,\r
-table.docinfo td, table.docinfo th {\r
-  padding-left: 0.5em ;\r
-  padding-right: 0.5em ;\r
-  vertical-align: top }\r
-\r
-table.docutils th.field-name, table.docinfo th.docinfo-name {\r
-  font-weight: bold ;\r
-  text-align: left ;\r
-  white-space: nowrap ;\r
-  padding-left: 0 }\r
-\r
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\r
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\r
-  font-size: 100% }\r
-\r
-ul.auto-toc {\r
-  list-style-type: none }\r
-\r
-</style>\r
-</head>\r
-<body>\r
-<div class="document" id="using-the-pyparsing-module">\r
-<h1 class="title">Using the pyparsing module</h1>\r
-<table class="docinfo" frame="void" rules="none">\r
-<col class="docinfo-name" />\r
-<col class="docinfo-content" />\r
-<tbody valign="top">\r
-<tr><th class="docinfo-name">Author:</th>\r
-<td>Paul McGuire</td></tr>\r
-<tr><th class="docinfo-name">Address:</th>\r
-<td><pre class="address">\r
-<a class="first last reference external" href="mailto:ptmcg&#64;users.sourceforge.net">ptmcg&#64;users.sourceforge.net</a>\r
-</pre>\r
-</td></tr>\r
-<tr><th class="docinfo-name">Revision:</th>\r
-<td>2.0.1</td></tr>\r
-<tr><th class="docinfo-name">Date:</th>\r
-<td>July, 2013</td></tr>\r
-<tr><th class="docinfo-name">Copyright:</th>\r
-<td>Copyright © 2003-2013 Paul McGuire.</td></tr>\r
-</tbody>\r
-</table>\r
-<table class="docutils field-list" frame="void" rules="none">\r
-<col class="field-name" />\r
-<col class="field-body" />\r
-<tbody valign="top">\r
-<tr class="field"><th class="field-name">abstract:</th><td class="field-body">This document provides how-to instructions for the\r
-pyparsing library, an easy-to-use Python module for constructing\r
-and executing basic text parsers.  The pyparsing module is useful\r
-for evaluating user-definable\r
-expressions, processing custom application language commands, or\r
-extracting data from formatted reports.</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<div class="contents topic" id="contents">\r
-<p class="topic-title first">Contents</p>\r
-<ul class="auto-toc simple">\r
-<li><a class="reference internal" href="#steps-to-follow" id="id1">1&nbsp;&nbsp;&nbsp;Steps to follow</a><ul class="auto-toc">\r
-<li><a class="reference internal" href="#hello-world" id="id2">1.1&nbsp;&nbsp;&nbsp;Hello, World!</a></li>\r
-<li><a class="reference internal" href="#usage-notes" id="id3">1.2&nbsp;&nbsp;&nbsp;Usage notes</a></li>\r
-</ul>\r
-</li>\r
-<li><a class="reference internal" href="#classes" id="id4">2&nbsp;&nbsp;&nbsp;Classes</a><ul class="auto-toc">\r
-<li><a class="reference internal" href="#classes-in-the-pyparsing-module" id="id5">2.1&nbsp;&nbsp;&nbsp;Classes in the pyparsing module</a></li>\r
-<li><a class="reference internal" href="#basic-parserelement-subclasses" id="id6">2.2&nbsp;&nbsp;&nbsp;Basic ParserElement subclasses</a></li>\r
-<li><a class="reference internal" href="#expression-subclasses" id="id7">2.3&nbsp;&nbsp;&nbsp;Expression subclasses</a></li>\r
-<li><a class="reference internal" href="#expression-operators" id="id8">2.4&nbsp;&nbsp;&nbsp;Expression operators</a></li>\r
-<li><a class="reference internal" href="#positional-subclasses" id="id9">2.5&nbsp;&nbsp;&nbsp;Positional subclasses</a></li>\r
-<li><a class="reference internal" href="#converter-subclasses" id="id10">2.6&nbsp;&nbsp;&nbsp;Converter subclasses</a></li>\r
-<li><a class="reference internal" href="#special-subclasses" id="id11">2.7&nbsp;&nbsp;&nbsp;Special subclasses</a></li>\r
-<li><a class="reference internal" href="#other-classes" id="id12">2.8&nbsp;&nbsp;&nbsp;Other classes</a></li>\r
-<li><a class="reference internal" href="#exception-classes-and-troubleshooting" id="id13">2.9&nbsp;&nbsp;&nbsp;Exception classes and Troubleshooting</a></li>\r
-</ul>\r
-</li>\r
-<li><a class="reference internal" href="#miscellaneous-attributes-and-methods" id="id14">3&nbsp;&nbsp;&nbsp;Miscellaneous attributes and methods</a><ul class="auto-toc">\r
-<li><a class="reference internal" href="#helper-methods" id="id15">3.1&nbsp;&nbsp;&nbsp;Helper methods</a></li>\r
-<li><a class="reference internal" href="#helper-parse-actions" id="id16">3.2&nbsp;&nbsp;&nbsp;Helper parse actions</a></li>\r
-<li><a class="reference internal" href="#common-string-and-token-constants" id="id17">3.3&nbsp;&nbsp;&nbsp;Common string and token constants</a></li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="steps-to-follow">\r
-<h1><a class="toc-backref" href="#id1">1&nbsp;&nbsp;&nbsp;Steps to follow</a></h1>\r
-<p>To parse an incoming data string, the client code must follow these steps:</p>\r
-<ol class="arabic simple">\r
-<li>First define the tokens and patterns to be matched, and assign\r
-this to a program variable.  Optional results names or parsing\r
-actions can also be defined at this time.</li>\r
-<li>Call <tt class="docutils literal">parseString()</tt> or <tt class="docutils literal">scanString()</tt> on this variable, passing in\r
-the string to\r
-be parsed.  During the matching process, whitespace between\r
-tokens is skipped by default (although this can be changed).\r
-When token matches occur, any defined parse action methods are\r
-called.</li>\r
-<li>Process the parsed results, returned as a list of strings.\r
-Matching results may also be accessed as named attributes of\r
-the returned results, if names are defined in the definition of\r
-the token pattern, using <tt class="docutils literal">setResultsName()</tt>.</li>\r
-</ol>\r
-<div class="section" id="hello-world">\r
-<h2><a class="toc-backref" href="#id2">1.1&nbsp;&nbsp;&nbsp;Hello, World!</a></h2>\r
-<p>The following complete Python program will parse the greeting &quot;Hello, World!&quot;,\r
-or any other greeting of the form &quot;&lt;salutation&gt;, &lt;addressee&gt;!&quot;:</p>\r
-<pre class="literal-block">\r
-from pyparsing import Word, alphas\r
-\r
-greet = Word( alphas ) + &quot;,&quot; + Word( alphas ) + &quot;!&quot;\r
-greeting = greet.parseString( &quot;Hello, World!&quot; )\r
-print greeting\r
-</pre>\r
-<p>The parsed tokens are returned in the following form:</p>\r
-<pre class="literal-block">\r
-['Hello', ',', 'World', '!']\r
-</pre>\r
-</div>\r
-<div class="section" id="usage-notes">\r
-<h2><a class="toc-backref" href="#id3">1.2&nbsp;&nbsp;&nbsp;Usage notes</a></h2>\r
-<ul>\r
-<li><p class="first">The pyparsing module can be used to interpret simple command\r
-strings or algebraic expressions, or can be used to extract data\r
-from text reports with complicated format and structure (&quot;screen\r
-or report scraping&quot;).  However, it is possible that your defined\r
-matching patterns may accept invalid inputs.  Use pyparsing to\r
-extract data from strings assumed to be well-formatted.</p>\r
-</li>\r
-<li><p class="first">To keep up the readability of your code, use <a class="reference internal" href="#operators">operators</a>  such as <tt class="docutils literal">+</tt>, <tt class="docutils literal">|</tt>,\r
-<tt class="docutils literal">^</tt>, and <tt class="docutils literal">~</tt> to combine expressions.  You can also combine\r
-string literals with ParseExpressions - they will be\r
-automatically converted to Literal objects.  For example:</p>\r
-<pre class="literal-block">\r
-integer  = Word( nums )            # simple unsigned integer\r
-variable = Word( alphas, max=1 )   # single letter variable, such as x, z, m, etc.\r
-arithOp  = Word( &quot;+-*/&quot;, max=1 )   # arithmetic operators\r
-equation = variable + &quot;=&quot; + integer + arithOp + integer    # will match &quot;x=2+2&quot;, etc.\r
-</pre>\r
-<p>In the definition of <tt class="docutils literal">equation</tt>, the string <tt class="docutils literal">&quot;=&quot;</tt> will get added as\r
-a <tt class="docutils literal"><span class="pre">Literal(&quot;=&quot;)</span></tt>, but in a more readable way.</p>\r
-</li>\r
-<li><p class="first">The pyparsing module's default behavior is to ignore whitespace.  This is the\r
-case for 99% of all parsers ever written.  This allows you to write simple, clean,\r
-grammars, such as the above <tt class="docutils literal">equation</tt>, without having to clutter it up with\r
-extraneous <tt class="docutils literal">ws</tt> markers.  The <tt class="docutils literal">equation</tt> grammar will successfully parse all of the\r
-following statements:</p>\r
-<pre class="literal-block">\r
-x=2+2\r
-x = 2+2\r
-a = 10   *   4\r
-r= 1234/ 100000\r
-</pre>\r
-<p>Of course, it is quite simple to extend this example to support more elaborate expressions, with\r
-nesting with parentheses, floating point numbers, scientific notation, and named constants\r
-(such as <tt class="docutils literal">e</tt> or <tt class="docutils literal">pi</tt>).  See <tt class="docutils literal">fourFn.py</tt>, included in the examples directory.</p>\r
-</li>\r
-<li><p class="first">To modify pyparsing's default whitespace skipping, you can use one or\r
-more of the following methods:</p>\r
-<ul>\r
-<li><p class="first">use the static method <tt class="docutils literal">ParserElement.setDefaultWhitespaceChars</tt>\r
-to override the normal set of whitespace chars (' tn').  For instance\r
-when defining a grammar in which newlines are significant, you should\r
-call <tt class="docutils literal">ParserElement.setDefaultWhitespaceChars(' \t')</tt> to remove\r
-newline from the set of skippable whitespace characters.  Calling\r
-this method will affect all pyparsing expressions defined afterward.</p>\r
-</li>\r
-<li><p class="first">call <tt class="docutils literal">leaveWhitespace()</tt> on individual expressions, to suppress the\r
-skipping of whitespace before trying to match the expression</p>\r
-</li>\r
-<li><p class="first">use <tt class="docutils literal">Combine</tt> to require that successive expressions must be\r
-adjacent in the input string.  For instance, this expression:</p>\r
-<pre class="literal-block">\r
-real = Word(nums) + '.' + Word(nums)\r
-</pre>\r
-<p>will match &quot;3.14159&quot;, but will also match &quot;3 . 12&quot;.  It will also\r
-return the matched results as ['3', '.', '14159'].  By changing this\r
-expression to:</p>\r
-<pre class="literal-block">\r
-real = Combine( Word(nums) + '.' + Word(nums) )\r
-</pre>\r
-<p>it will not match numbers with embedded spaces, and it will return a\r
-single concatenated string '3.14159' as the parsed token.</p>\r
-</li>\r
-</ul>\r
-</li>\r
-<li><p class="first">Repetition of expressions can be indicated using the '*' operator.  An\r
-expression may be multiplied by an integer value (to indicate an exact\r
-repetition count), or by a tuple containing\r
-two integers, or None and an integer, representing min and max repetitions\r
-(with None representing no min or no max, depending whether it is the first or\r
-second tuple element).  See the following examples, where n is used to\r
-indicate an integer value:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">expr*3</tt> is equivalent to <tt class="docutils literal">expr + expr + expr</tt></li>\r
-<li><tt class="docutils literal"><span class="pre">expr*(2,3)</span></tt> is equivalent to <tt class="docutils literal">expr + expr + Optional(expr)</tt></li>\r
-<li><tt class="docutils literal"><span class="pre">expr*(n,None)</span></tt> or <tt class="docutils literal"><span class="pre">expr*(n,)</span></tt> is equivalent\r
-to <tt class="docutils literal">expr*n + ZeroOrMore(expr)</tt> (read as &quot;at least n instances of expr&quot;)</li>\r
-<li><tt class="docutils literal"><span class="pre">expr*(None,n)</span></tt> is equivalent to <tt class="docutils literal"><span class="pre">expr*(0,n)</span></tt>\r
-(read as &quot;0 to n instances of expr&quot;)</li>\r
-<li><tt class="docutils literal"><span class="pre">expr*(None,None)</span></tt> is equivalent to <tt class="docutils literal">ZeroOrMore(expr)</tt></li>\r
-<li><tt class="docutils literal"><span class="pre">expr*(1,None)</span></tt> is equivalent to <tt class="docutils literal">OneOrMore(expr)</tt></li>\r
-</ul>\r
-<p>Note that <tt class="docutils literal"><span class="pre">expr*(None,n)</span></tt> does not raise an exception if\r
-more than n exprs exist in the input stream; that is,\r
-<tt class="docutils literal"><span class="pre">expr*(None,n)</span></tt> does not enforce a maximum number of expr\r
-occurrences.  If this behavior is desired, then write\r
-<tt class="docutils literal"><span class="pre">expr*(None,n)</span> + ~expr</tt>.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">MatchFirst</tt> expressions are matched left-to-right, and the first\r
-match found will skip all later expressions within, so be sure\r
-to define less-specific patterns after more-specific patterns.\r
-If you are not sure which expressions are most specific, use Or\r
-expressions (defined using the <tt class="docutils literal">^</tt> operator) - they will always\r
-match the longest expression, although they are more\r
-compute-intensive.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">Or</tt> expressions will evaluate all of the specified subexpressions\r
-to determine which is the &quot;best&quot; match, that is, which matches\r
-the longest string in the input data.  In case of a tie, the\r
-left-most expression in the <tt class="docutils literal">Or</tt> list will win.</p>\r
-</li>\r
-<li><p class="first">If parsing the contents of an entire file, pass it to the\r
-<tt class="docutils literal">parseFile</tt> method using:</p>\r
-<pre class="literal-block">\r
-expr.parseFile( sourceFile )\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ParseExceptions</tt> will report the location where an expected token\r
-or expression failed to match.  For example, if we tried to use our\r
-&quot;Hello, World!&quot; parser to parse &quot;Hello World!&quot; (leaving out the separating\r
-comma), we would get an exception, with the message:</p>\r
-<pre class="literal-block">\r
-pyparsing.ParseException: Expected &quot;,&quot; (6), (1,7)\r
-</pre>\r
-<p>In the case of complex\r
-expressions, the reported location may not be exactly where you\r
-would expect.  See more information under <a class="reference internal" href="#parseexception">ParseException</a> .</p>\r
-</li>\r
-<li><p class="first">Use the <tt class="docutils literal">Group</tt> class to enclose logical groups of tokens within a\r
-sublist.  This will help organize your results into more\r
-hierarchical form (the default behavior is to return matching\r
-tokens as a flat list of matching input strings).</p>\r
-</li>\r
-<li><p class="first">Punctuation may be significant for matching, but is rarely of\r
-much interest in the parsed results.  Use the <tt class="docutils literal">suppress()</tt> method\r
-to keep these tokens from cluttering up your returned lists of\r
-tokens.  For example, <tt class="docutils literal">delimitedList()</tt> matches a succession of\r
-one or more expressions, separated by delimiters (commas by\r
-default), but only returns a list of the actual expressions -\r
-the delimiters are used for parsing, but are suppressed from the\r
-returned output.</p>\r
-</li>\r
-<li><p class="first">Parse actions can be used to convert values from strings to\r
-other data types (ints, floats, booleans, etc.).</p>\r
-</li>\r
-<li><p class="first">Results names are recommended for retrieving tokens from complex\r
-expressions.  It is much easier to access a token using its field\r
-name than using a positional index, especially if the expression\r
-contains optional elements.  You can also shortcut\r
-the <tt class="docutils literal">setResultsName</tt> call:</p>\r
-<pre class="literal-block">\r
-stats = &quot;AVE:&quot; + realNum.setResultsName(&quot;average&quot;) + \\r
-        &quot;MIN:&quot; + realNum.setResultsName(&quot;min&quot;) + \\r
-        &quot;MAX:&quot; + realNum.setResultsName(&quot;max&quot;)\r
-</pre>\r
-<p>can now be written as this:</p>\r
-<pre class="literal-block">\r
-stats = &quot;AVE:&quot; + realNum(&quot;average&quot;) + \\r
-        &quot;MIN:&quot; + realNum(&quot;min&quot;) + \\r
-        &quot;MAX:&quot; + realNum(&quot;max&quot;)\r
-</pre>\r
-</li>\r
-<li><p class="first">Be careful when defining parse actions that modify global variables or\r
-data structures (as in <tt class="docutils literal">fourFn.py</tt>), especially for low level tokens\r
-or expressions that may occur within an <tt class="docutils literal">And</tt> expression; an early element\r
-of an <tt class="docutils literal">And</tt> may match, but the overall expression may fail.</p>\r
-</li>\r
-<li><p class="first">Performance of pyparsing may be slow for complex grammars and/or large\r
-input strings.  The <a class="reference external" href="http://psyco.sourceforge.net/">psyco</a> package can be used to improve the speed of the\r
-pyparsing module with no changes to grammar or program logic - observed\r
-improvments have been in the 20-50% range.</p>\r
-</li>\r
-</ul>\r
-</div>\r
-</div>\r
-<div class="section" id="classes">\r
-<h1><a class="toc-backref" href="#id4">2&nbsp;&nbsp;&nbsp;Classes</a></h1>\r
-<div class="section" id="classes-in-the-pyparsing-module">\r
-<h2><a class="toc-backref" href="#id5">2.1&nbsp;&nbsp;&nbsp;Classes in the pyparsing module</a></h2>\r
-<p><tt class="docutils literal">ParserElement</tt> - abstract base class for all pyparsing classes;\r
-methods for code to use are:</p>\r
-<ul>\r
-<li><p class="first"><tt class="docutils literal">parseString( sourceString, parseAll=False )</tt> - only called once, on the overall\r
-matching pattern; returns a <a class="reference internal" href="#parseresults">ParseResults</a> object that makes the\r
-matched tokens available as a list, and optionally as a dictionary,\r
-or as an object with named attributes; if parseAll is set to True, then\r
-parseString will raise a ParseException if the grammar does not process\r
-the complete input string.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">parseFile( sourceFile )</tt> - a convenience function, that accepts an\r
-input file object or filename.  The file contents are passed as a\r
-string to <tt class="docutils literal">parseString()</tt>.  <tt class="docutils literal">parseFile</tt> also supports the <tt class="docutils literal">parseAll</tt> argument.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">scanString( sourceString )</tt> - generator function, used to find and\r
-extract matching text in the given source string; for each matched text,\r
-returns a tuple of:</p>\r
-<ul class="simple">\r
-<li>matched tokens (packaged as a <a class="reference internal" href="#parseresults">ParseResults</a> object)</li>\r
-<li>start location of the matched text in the given source string</li>\r
-<li>end location in the given source string</li>\r
-</ul>\r
-<p><tt class="docutils literal">scanString</tt> allows you to scan through the input source string for\r
-random matches, instead of exhaustively defining the grammar for the entire\r
-source text (as would be required with <tt class="docutils literal">parseString</tt>).</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">transformString( sourceString )</tt> - convenience wrapper function for\r
-<tt class="docutils literal">scanString</tt>, to process the input source string, and replace matching\r
-text with the tokens returned from parse actions defined in the grammar\r
-(see <a class="reference internal" href="#setparseaction">setParseAction</a>).</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">searchString( sourceString )</tt> - another convenience wrapper function for\r
-<tt class="docutils literal">scanString</tt>, returns a list of the matching tokens returned from each\r
-call to <tt class="docutils literal">scanString</tt>.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setName( name )</tt> - associate a short descriptive name for this\r
-element, useful in displaying exceptions and trace information</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setResultsName( string, listAllMatches=False )</tt> - name to be given\r
-to tokens matching\r
-the element; if multiple tokens within\r
-a repetition group (such as <tt class="docutils literal">ZeroOrMore</tt> or <tt class="docutils literal">delimitedList</tt>) the\r
-default is to return only the last matching token - if listAllMatches\r
-is set to True, then a list of all the matching tokens is returned.\r
-(New in 1.5.6 - a results name with a trailing '*' character will be\r
-interpreted as setting listAllMatches to True.)\r
-Note:\r
-<tt class="docutils literal">setResultsName</tt> returns a <em>copy</em> of the element so that a single\r
-basic element can be referenced multiple times and given\r
-different names within a complex grammar.</p>\r
-</li>\r
-</ul>\r
-<ul id="setparseaction">\r
-<li><p class="first"><tt class="docutils literal">setParseAction( *fn )</tt> - specify one or more functions to call after successful\r
-matching of the element; each function is defined as <tt class="docutils literal">fn( s,\r
-loc, toks )</tt>, where:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">s</tt> is the original parse string</li>\r
-<li><tt class="docutils literal">loc</tt> is the location in the string where matching started</li>\r
-<li><tt class="docutils literal">toks</tt> is the list of the matched tokens, packaged as a <a class="reference internal" href="#parseresults">ParseResults</a> object</li>\r
-</ul>\r
-<p>Multiple functions can be attached to a ParserElement by specifying multiple\r
-arguments to setParseAction, or by calling setParseAction multiple times.</p>\r
-<p>Each parse action function can return a modified <tt class="docutils literal">toks</tt> list, to perform conversion, or\r
-string modifications.  For brevity, <tt class="docutils literal">fn</tt> may also be a\r
-lambda - here is an example of using a parse action to convert matched\r
-integer tokens from strings to integers:</p>\r
-<pre class="literal-block">\r
-intNumber = Word(nums).setParseAction( lambda s,l,t: [ int(t[0]) ] )\r
-</pre>\r
-<p>If <tt class="docutils literal">fn</tt> does not modify the <tt class="docutils literal">toks</tt> list, it does not need to return\r
-anything at all.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setBreak( breakFlag=True )</tt> - if breakFlag is True, calls pdb.set_break()\r
-as this expression is about to be parsed</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">copy()</tt> - returns a copy of a ParserElement; can be used to use the same\r
-parse expression in different places in a grammar, with different parse actions\r
-attached to each</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">leaveWhitespace()</tt> - change default behavior of skipping\r
-whitespace before starting matching (mostly used internally to the\r
-pyparsing module, rarely used by client code)</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setWhitespaceChars( chars )</tt> - define the set of chars to be ignored\r
-as whitespace before trying to match a specific ParserElement, in place of the\r
-default set of whitespace (space, tab, newline, and return)</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setDefaultWhitespaceChars( chars )</tt> - class-level method to override\r
-the default set of whitespace chars for all subsequently created ParserElements\r
-(including copies); useful when defining grammars that treat one or more of the\r
-default whitespace characters as significant (such as a line-sensitive grammar, to\r
-omit newline from the list of ignorable whitespace)</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">suppress()</tt> - convenience function to suppress the output of the\r
-given element, instead of wrapping it with a Suppress object.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ignore( expr )</tt> - function to specify parse expression to be\r
-ignored while matching defined patterns; can be called\r
-repeatedly to specify multiple expressions; useful to specify\r
-patterns of comment syntax, for example</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">setDebug( dbgFlag=True )</tt> - function to enable/disable tracing output\r
-when trying to match this element</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">validate()</tt> - function to verify that the defined grammar does not\r
-contain infinitely recursive constructs</p>\r
-</li>\r
-</ul>\r
-<ul class="simple" id="parsewithtabs">\r
-<li><tt class="docutils literal">parseWithTabs()</tt> - function to override default behavior of converting\r
-tabs to spaces before parsing the input string; rarely used, except when\r
-specifying whitespace-significant grammars using the <a class="reference internal" href="#white">White</a> class.</li>\r
-<li><tt class="docutils literal">enablePackrat()</tt> - a class-level static method to enable a memoizing\r
-performance enhancement, known as &quot;packrat parsing&quot;.  packrat parsing is\r
-disabled by default, since it may conflict with some user programs that use\r
-parse actions.  To activate the packrat feature, your\r
-program must call the class method ParserElement.enablePackrat().  If\r
-your program uses psyco to &quot;compile as you go&quot;, you must call\r
-enablePackrat before calling psyco.full().  If you do not do this,\r
-Python will crash.  For best results, call enablePackrat() immediately\r
-after importing pyparsing.</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="basic-parserelement-subclasses">\r
-<h2><a class="toc-backref" href="#id6">2.2&nbsp;&nbsp;&nbsp;Basic ParserElement subclasses</a></h2>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">Literal</tt> - construct with a string to be matched exactly</li>\r
-<li><tt class="docutils literal">CaselessLiteral</tt> - construct with a string to be matched, but\r
-without case checking; results are always returned as the\r
-defining literal, NOT as they are found in the input string</li>\r
-<li><tt class="docutils literal">Keyword</tt> - similar to Literal, but must be immediately followed by\r
-whitespace, punctuation, or other non-keyword characters; prevents\r
-accidental matching of a non-keyword that happens to begin with a\r
-defined keyword</li>\r
-<li><tt class="docutils literal">CaselessKeyword</tt> - similar to Keyword, but with caseless matching\r
-behavior</li>\r
-</ul>\r
-<ul id="word">\r
-<li><p class="first"><tt class="docutils literal">Word</tt> - one or more contiguous characters; construct with a\r
-string containing the set of allowed initial characters, and an\r
-optional second string of allowed body characters; for instance,\r
-a common Word construct is to match a code identifier - in C, a\r
-valid identifier must start with an alphabetic character or an\r
-underscore ('_'), followed by a body that can also include numeric\r
-digits.  That is, <tt class="docutils literal">a</tt>, <tt class="docutils literal">i</tt>, <tt class="docutils literal">MAX_LENGTH</tt>, <tt class="docutils literal">_a1</tt>, <tt class="docutils literal">b_109_</tt>, and\r
-<tt class="docutils literal">plan9FromOuterSpace</tt>\r
-are all valid identifiers; <tt class="docutils literal">9b7z</tt>, <tt class="docutils literal">$a</tt>, <tt class="docutils literal">.section</tt>, and <tt class="docutils literal">0debug</tt>\r
-are not.  To\r
-define an identifier using a Word, use either of the following:</p>\r
-<pre class="literal-block">\r
-- Word( alphas+&quot;_&quot;, alphanums+&quot;_&quot; )\r
-- Word( srange(&quot;[a-zA-Z_]&quot;), srange(&quot;[a-zA-Z0-9_]&quot;) )\r
-</pre>\r
-<p>If only one\r
-string given, it specifies that the same character set defined\r
-for the initial character is used for the word body; for instance, to\r
-define an identifier that can only be composed of capital letters and\r
-underscores, use:</p>\r
-<pre class="literal-block">\r
-- Word( &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ_&quot; )\r
-- Word( srange(&quot;[A-Z_]&quot;) )\r
-</pre>\r
-<p>A Word may\r
-also be constructed with any of the following optional parameters:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">min</tt> - indicating a minimum length of matching characters</li>\r
-<li><tt class="docutils literal">max</tt> - indicating a maximum length of matching characters</li>\r
-<li><tt class="docutils literal">exact</tt> - indicating an exact length of matching characters</li>\r
-</ul>\r
-<p>If exact is specified, it will override any values for min or max.</p>\r
-<p>New in 1.5.6 - Sometimes you want to define a word using all\r
-characters in a range except for one or two of them; you can do this\r
-with the new <tt class="docutils literal">excludeChars</tt> argument. This is helpful if you want to define\r
-a word with all printables except for a single delimiter character, such\r
-as '.'. Previously, you would have to create a custom string to pass to <tt class="docutils literal">Word</tt>.\r
-With this change, you can just create <tt class="docutils literal">Word(printables, <span class="pre">excludeChars='.')</span></tt>.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">CharsNotIn</tt> - similar to <a class="reference internal" href="#word">Word</a>, but matches characters not\r
-in the given constructor string (accepts only one string for both\r
-initial and body characters); also supports min, max, and exact\r
-optional parameters.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">Regex</tt> - a powerful construct, that accepts a regular expression\r
-to be matched at the current parse position; accepts an optional\r
-flags parameter, corresponding to the flags parameter in the re.compile\r
-method; if the expression includes named sub-fields, they will be\r
-represented in the returned <a class="reference internal" href="#parseresults">ParseResults</a></p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">QuotedString</tt> - supports the definition of custom quoted string\r
-formats, in addition to pyparsing's built-in dblQuotedString and\r
-sglQuotedString.  QuotedString allows you to specify the following\r
-parameters:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">quoteChar</tt> - string of one or more characters defining the quote delimiting string</li>\r
-<li><tt class="docutils literal">escChar</tt> - character to escape quotes, typically backslash (default=None)</li>\r
-<li><tt class="docutils literal">escQuote</tt> - special quote sequence to escape an embedded quote string (such as SQL's &quot;&quot; to escape an embedded &quot;) (default=None)</li>\r
-<li><tt class="docutils literal">multiline</tt> - boolean indicating whether quotes can span multiple lines (default=<tt class="docutils literal">False</tt>)</li>\r
-<li><tt class="docutils literal">unquoteResults</tt> - boolean indicating whether the matched text should be unquoted (default=<tt class="docutils literal">True</tt>)</li>\r
-<li><tt class="docutils literal">endQuoteChar</tt> - string of one or more characters defining the end of the quote delimited string (default=None =&gt; same as quoteChar)</li>\r
-</ul>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">SkipTo</tt> - skips ahead in the input string, accepting any\r
-characters up to the specified pattern; may be constructed with\r
-the following optional parameters:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">include</tt> - if set to true, also consumes the match expression\r
-(default is <tt class="docutils literal">False</tt>)</li>\r
-<li><tt class="docutils literal">ignore</tt> - allows the user to specify patterns to not be matched,\r
-to prevent false matches</li>\r
-<li><tt class="docutils literal">failOn</tt> - if a literal string or expression is given for this argument, it defines an expression that\r
-should cause the <tt class="docutils literal">SkipTo</tt> expression to fail, and not skip over that expression</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<ul class="simple" id="white">\r
-<li><tt class="docutils literal">White</tt> - also similar to <a class="reference internal" href="#word">Word</a>, but matches whitespace\r
-characters.  Not usually needed, as whitespace is implicitly\r
-ignored by pyparsing.  However, some grammars are whitespace-sensitive,\r
-such as those that use leading tabs or spaces to indicating grouping\r
-or hierarchy.  (If matching on tab characters, be sure to call\r
-<a class="reference internal" href="#parsewithtabs">parseWithTabs</a> on the top-level parse element.)</li>\r
-<li><tt class="docutils literal">Empty</tt> - a null expression, requiring no characters - will always\r
-match; useful for debugging and for specialized grammars</li>\r
-<li><tt class="docutils literal">NoMatch</tt> - opposite of Empty, will never match; useful for debugging\r
-and for specialized grammars</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="expression-subclasses">\r
-<h2><a class="toc-backref" href="#id7">2.3&nbsp;&nbsp;&nbsp;Expression subclasses</a></h2>\r
-<ul>\r
-<li><p class="first"><tt class="docutils literal">And</tt> - construct with a list of ParserElements, all of which must\r
-match for And to match; can also be created using the '+'\r
-operator; multiple expressions can be Anded together using the '*'\r
-operator as in:</p>\r
-<pre class="literal-block">\r
-ipAddress = Word(nums) + ('.'+Word(nums))*3\r
-</pre>\r
-<p>A tuple can be used as the multiplier, indicating a min/max:</p>\r
-<pre class="literal-block">\r
-usPhoneNumber = Word(nums) + ('-'+Word(nums))*(1,2)\r
-</pre>\r
-<p>A special form of <tt class="docutils literal">And</tt> is created if the '-' operator is used\r
-instead of the '+' operator.  In the ipAddress example above, if\r
-no trailing '.' and Word(nums) are found after matching the initial\r
-Word(nums), then pyparsing will back up in the grammar and try other\r
-alternatives to ipAddress.  However, if ipAddress is defined as:</p>\r
-<pre class="literal-block">\r
-strictIpAddress = Word(nums) - ('.'+Word(nums))*3\r
-</pre>\r
-<p>then no backing up is done.  If the first Word(nums) of strictIpAddress\r
-is matched, then any mismatch after that will raise a ParseSyntaxException,\r
-which will halt the parsing process immediately.  By careful use of the\r
-'-' operator, grammars can provide meaningful error messages close to\r
-the location where the incoming text does not match the specified\r
-grammar.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">Or</tt> - construct with a list of ParserElements, any of which must\r
-match for Or to match; if more than one expression matches, the\r
-expression that makes the longest match will be used; can also\r
-be created using the '^' operator</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">MatchFirst</tt> - construct with a list of ParserElements, any of\r
-which must match for MatchFirst to match; matching is done\r
-left-to-right, taking the first expression that matches; can\r
-also be created using the '|' operator</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">Each</tt> - similar to And, in that all of the provided expressions\r
-must match; however, Each permits matching to be done in any order;\r
-can also be created using the '&amp;' operator</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">Optional</tt> - construct with a ParserElement, but this element is\r
-not required to match; can be constructed with an optional <tt class="docutils literal">default</tt> argument,\r
-containing a default string or object to be supplied if the given optional\r
-parse element is not found in the input string; parse action will only\r
-be called if a match is found, or if a default is specified</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ZeroOrMore</tt> - similar to Optional, but can be repeated</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">OneOrMore</tt> - similar to ZeroOrMore, but at least one match must\r
-be present</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">FollowedBy</tt> - a lookahead expression, requires matching of the given\r
-expressions, but does not advance the parsing position within the input string</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">NotAny</tt> - a negative lookahead expression, prevents matching of named\r
-expressions, does not advance the parsing position within the input string;\r
-can also be created using the unary '~' operator</p>\r
-</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="expression-operators">\r
-<span id="operators"></span><h2><a class="toc-backref" href="#id8">2.4&nbsp;&nbsp;&nbsp;Expression operators</a></h2>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">~</tt> - creates NotAny using the expression after the operator</li>\r
-<li><tt class="docutils literal">+</tt> - creates And using the expressions before and after the operator</li>\r
-<li><tt class="docutils literal">|</tt> - creates MatchFirst (first left-to-right match) using the expressions before and after the operator</li>\r
-<li><tt class="docutils literal">^</tt> - creates Or (longest match) using the expressions before and after the operator</li>\r
-<li><tt class="docutils literal">&amp;</tt> - creates Each using the expressions before and after the operator</li>\r
-<li><tt class="docutils literal">*</tt> - creates And by multiplying the expression by the integer operand; if\r
-expression is multiplied by a 2-tuple, creates an And of (min,max)\r
-expressions (similar to &quot;{min,max}&quot; form in regular expressions); if\r
-min is None, intepret as (0,max); if max is None, interpret as\r
-expr*min + ZeroOrMore(expr)</li>\r
-<li><tt class="docutils literal">-</tt> - like <tt class="docutils literal">+</tt> but with no backup and retry of alternatives</li>\r
-<li><tt class="docutils literal">*</tt> - repetition of expression</li>\r
-<li><tt class="docutils literal">==</tt> - matching expression to string; returns True if the string matches the given expression</li>\r
-<li><tt class="docutils literal">&lt;&lt;=</tt> - inserts the expression following the operator as the body of the\r
-Forward expression before the operator (formerly &lt;&lt;, which is now deprecated)</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="positional-subclasses">\r
-<h2><a class="toc-backref" href="#id9">2.5&nbsp;&nbsp;&nbsp;Positional subclasses</a></h2>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">StringStart</tt> - matches beginning of the text</li>\r
-<li><tt class="docutils literal">StringEnd</tt> - matches the end of the text</li>\r
-<li><tt class="docutils literal">LineStart</tt> - matches beginning of a line (lines delimited by <tt class="docutils literal">\n</tt> characters)</li>\r
-<li><tt class="docutils literal">LineEnd</tt> - matches the end of a line</li>\r
-<li><tt class="docutils literal">WordStart</tt> - matches a leading word boundary</li>\r
-<li><tt class="docutils literal">WordEnd</tt> - matches a trailing word boundary</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="converter-subclasses">\r
-<h2><a class="toc-backref" href="#id10">2.6&nbsp;&nbsp;&nbsp;Converter subclasses</a></h2>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">Upcase</tt> - converts matched tokens to uppercase (deprecated -\r
-use <tt class="docutils literal">upcaseTokens</tt> parse action instead)</li>\r
-<li><tt class="docutils literal">Combine</tt> - joins all matched tokens into a single string, using\r
-specified joinString (default <tt class="docutils literal"><span class="pre">joinString=&quot;&quot;</span></tt>); expects\r
-all matching tokens to be adjacent, with no intervening\r
-whitespace (can be overridden by specifying <tt class="docutils literal">adjacent=False</tt> in constructor)</li>\r
-<li><tt class="docutils literal">Suppress</tt> - clears matched tokens; useful to keep returned\r
-results from being cluttered with required but uninteresting\r
-tokens (such as list delimiters)</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="special-subclasses">\r
-<h2><a class="toc-backref" href="#id11">2.7&nbsp;&nbsp;&nbsp;Special subclasses</a></h2>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">Group</tt> - causes the matched tokens to be enclosed in a list;\r
-useful in repeated elements like <tt class="docutils literal">ZeroOrMore</tt> and <tt class="docutils literal">OneOrMore</tt> to\r
-break up matched tokens into groups for each repeated pattern</li>\r
-<li><tt class="docutils literal">Dict</tt> - like <tt class="docutils literal">Group</tt>, but also constructs a dictionary, using the\r
-[0]'th elements of all enclosed token lists as the keys, and\r
-each token list as the value</li>\r
-<li><tt class="docutils literal">SkipTo</tt> - catch-all matching expression that accepts all characters\r
-up until the given pattern is found to match; useful for specifying\r
-incomplete grammars</li>\r
-<li><tt class="docutils literal">Forward</tt> - placeholder token used to define recursive token\r
-patterns; when defining the actual expression later in the\r
-program, insert it into the <tt class="docutils literal">Forward</tt> object using the <tt class="docutils literal">&lt;&lt;=</tt>\r
-operator (see <tt class="docutils literal">fourFn.py</tt> for an example).</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="other-classes">\r
-<h2><a class="toc-backref" href="#id12">2.8&nbsp;&nbsp;&nbsp;Other classes</a></h2>\r
-<ul id="parseresults">\r
-<li><p class="first"><tt class="docutils literal">ParseResults</tt> - class used to contain and manage the lists of tokens\r
-created from parsing the input using the user-defined parse\r
-expression.  ParseResults can be accessed in a number of ways:</p>\r
-<ul class="simple">\r
-<li>as a list<ul>\r
-<li>total list of elements can be found using len()</li>\r
-<li>individual elements can be found using [0], [1], [-1], etc.</li>\r
-<li>elements can be deleted using <tt class="docutils literal">del</tt></li>\r
-<li>the -1th element can be extracted and removed in a single operation\r
-using <tt class="docutils literal">pop()</tt>, or any element can be extracted and removed\r
-using <tt class="docutils literal">pop(n)</tt></li>\r
-</ul>\r
-</li>\r
-<li>as a dictionary<ul>\r
-<li>if <tt class="docutils literal">setResultsName()</tt> is used to name elements within the\r
-overall parse expression, then these fields can be referenced\r
-as dictionary elements or as attributes</li>\r
-<li>the Dict class generates dictionary entries using the data of the\r
-input text - in addition to ParseResults listed as <tt class="docutils literal">[ [ a1, b1, c1, <span class="pre">...],</span> [ a2, b2, c2, <span class="pre">...]</span>&nbsp; ]</tt>\r
-it also acts as a dictionary with entries defined as <tt class="docutils literal">{ a1 : [ b1, c1, ... ] }, { a2 : [ b2, c2, ... ] }</tt>;\r
-this is especially useful when processing tabular data where the first column contains a key\r
-value for that line of data</li>\r
-<li>list elements that are deleted using <tt class="docutils literal">del</tt> will still be accessible by their\r
-dictionary keys</li>\r
-<li>supports <tt class="docutils literal">get()</tt>, <tt class="docutils literal">items()</tt> and <tt class="docutils literal">keys()</tt> methods, similar to a dictionary</li>\r
-<li>a keyed item can be extracted and removed using <tt class="docutils literal">pop(key)</tt>.  Here\r
-key must be non-numeric (such as a string), in order to use dict\r
-extraction instead of list extraction.</li>\r
-<li>new named elements can be added (in a parse action, for instance), using the same\r
-syntax as adding an item to a dict (<tt class="docutils literal"><span class="pre">parseResults[&quot;X&quot;]=&quot;new</span> item&quot;</tt>); named elements can be removed using <tt class="docutils literal">del <span class="pre">parseResults[&quot;X&quot;]</span></tt></li>\r
-</ul>\r
-</li>\r
-<li>as a nested list<ul>\r
-<li>results returned from the Group class are encapsulated within their\r
-own list structure, so that the tokens can be handled as a hierarchical\r
-tree</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<p>ParseResults can also be converted to an ordinary list of strings\r
-by calling <tt class="docutils literal">asList()</tt>.  Note that this will strip the results of any\r
-field names that have been defined for any embedded parse elements.\r
-(The <tt class="docutils literal">pprint</tt> module is especially good at printing out the nested contents\r
-given by <tt class="docutils literal">asList()</tt>.)</p>\r
-<p>Finally, ParseResults can be converted to an XML string by calling <tt class="docutils literal">asXML()</tt>. Where\r
-possible, results will be tagged using the results names defined for the respective\r
-ParseExpressions.  <tt class="docutils literal">asXML()</tt> takes two optional arguments:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">doctagname</tt> - for ParseResults that do not have a defined name, this argument\r
-will wrap the resulting XML in a set of opening and closing tags <tt class="docutils literal">&lt;doctagname&gt;</tt>\r
-and <tt class="docutils literal">&lt;/doctagname&gt;</tt>.</li>\r
-<li><tt class="docutils literal">namedItemsOnly</tt> (default=<tt class="docutils literal">False</tt>) - flag to indicate if the generated XML should\r
-skip items that do not have defined names.  If a nested group item is named, then all\r
-embedded items will be included, whether they have names or not.</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="exception-classes-and-troubleshooting">\r
-<h2><a class="toc-backref" href="#id13">2.9&nbsp;&nbsp;&nbsp;Exception classes and Troubleshooting</a></h2>\r
-<ul id="parseexception">\r
-<li><p class="first"><tt class="docutils literal">ParseException</tt> - exception returned when a grammar parse fails;\r
-ParseExceptions have attributes loc, msg, line, lineno, and column; to view the\r
-text line and location where the reported ParseException occurs, use:</p>\r
-<pre class="literal-block">\r
-except ParseException, err:\r
-    print err.line\r
-    print &quot; &quot;*(err.column-1) + &quot;^&quot;\r
-    print err\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">RecursiveGrammarException</tt> - exception returned by <tt class="docutils literal">validate()</tt> if\r
-the grammar contains a recursive infinite loop, such as:</p>\r
-<pre class="literal-block">\r
-badGrammar = Forward()\r
-goodToken = Literal(&quot;A&quot;)\r
-badGrammar &lt;&lt;= Optional(goodToken) + badGrammar\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ParseFatalException</tt> - exception that parse actions can raise to stop parsing\r
-immediately.  Should be used when a semantic error is found in the input text, such\r
-as a mismatched XML tag.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ParseSyntaxException</tt> - subclass of <tt class="docutils literal">ParseFatalException</tt> raised when a\r
-syntax error is found, based on the use of the '-' operator when defining\r
-a sequence of expressions in an <tt class="docutils literal">And</tt> expression.</p>\r
-</li>\r
-</ul>\r
-<p>You can also get some insights into the parsing logic using diagnostic parse actions,\r
-and setDebug(), or test the matching of expression fragments by testing them using\r
-scanString().</p>\r
-</div>\r
-</div>\r
-<div class="section" id="miscellaneous-attributes-and-methods">\r
-<h1><a class="toc-backref" href="#id14">3&nbsp;&nbsp;&nbsp;Miscellaneous attributes and methods</a></h1>\r
-<div class="section" id="helper-methods">\r
-<h2><a class="toc-backref" href="#id15">3.1&nbsp;&nbsp;&nbsp;Helper methods</a></h2>\r
-<ul>\r
-<li><p class="first"><tt class="docutils literal">delimitedList( expr, <span class="pre">delim=',')</span></tt> - convenience function for\r
-matching one or more occurrences of expr, separated by delim.\r
-By default, the delimiters are suppressed, so the returned results contain\r
-only the separate list elements.  Can optionally specify <tt class="docutils literal">combine=True</tt>,\r
-indicating that the expressions and delimiters should be returned as one\r
-combined value (useful for scoped variables, such as &quot;a.b.c&quot;, or\r
-&quot;a::b::c&quot;, or paths such as &quot;a/b/c&quot;).</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">countedArray( expr )</tt> - convenience function for a pattern where an list of\r
-instances of the given expression are preceded by an integer giving the count of\r
-elements in the list.  Returns an expression that parses the leading integer,\r
-reads exactly that many expressions, and returns the array of expressions in the\r
-parse results - the leading integer is suppressed from the results (although it\r
-is easily reconstructed by using len on the returned array).</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">oneOf( string, caseless=False )</tt> - convenience function for quickly declaring an\r
-alternative set of <tt class="docutils literal">Literal</tt> tokens, by splitting the given string on\r
-whitespace boundaries.  The tokens are sorted so that longer\r
-matches are attempted first; this ensures that a short token does\r
-not mask a longer one that starts with the same characters. If <tt class="docutils literal">caseless=True</tt>,\r
-will create an alternative set of CaselessLiteral tokens.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">dictOf( key, value )</tt> - convenience function for quickly declaring a\r
-dictionary pattern of <tt class="docutils literal">Dict( ZeroOrMore( Group( key + value ) ) )</tt>.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">makeHTMLTags( tagName )</tt> and <tt class="docutils literal">makeXMLTags( tagName )</tt> - convenience\r
-functions to create definitions of opening and closing tag expressions.  Returns\r
-a pair of expressions, for the corresponding &lt;tag&gt; and &lt;/tag&gt; strings.  Includes\r
-support for attributes in the opening tag, such as &lt;tag attr1=&quot;abc&quot;&gt; - attributes\r
-are returned as keyed tokens in the returned ParseResults.  <tt class="docutils literal">makeHTMLTags</tt> is less\r
-restrictive than <tt class="docutils literal">makeXMLTags</tt>, especially with respect to case sensitivity.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">infixNotation(baseOperand, operatorList)</tt> - (formerly named <tt class="docutils literal">operatorPrecedence</tt>) convenience function to define a\r
-grammar for parsing infix notation\r
-expressions with a hierarchical precedence of operators. To use the <tt class="docutils literal">infixNotation</tt>\r
-helper:</p>\r
-<ol class="arabic simple">\r
-<li>Define the base &quot;atom&quot; operand term of the grammar.\r
-For this simple grammar, the smallest operand is either\r
-and integer or a variable.  This will be the first argument\r
-to the <tt class="docutils literal">infixNotation</tt> method.</li>\r
-<li>Define a list of tuples for each level of operator\r
-precendence.  Each tuple is of the form\r
-<tt class="docutils literal">(opExpr, numTerms, rightLeftAssoc, parseAction)</tt>, where:<ul>\r
-<li><tt class="docutils literal">opExpr</tt> is the pyparsing expression for the operator;\r
-may also be a string, which will be converted to a Literal; if\r
-None, indicates an empty operator, such as the implied\r
-multiplication operation between 'm' and 'x' in &quot;y = mx + b&quot;.\r
-If <tt class="docutils literal">numTerms</tt> parameter is 3, this must be a 2-tuple containing the 2 delimiting operators.</li>\r
-<li><tt class="docutils literal">numTerms</tt> is the number of terms for this operator (must\r
-be 1,2, or 3)</li>\r
-<li><tt class="docutils literal">rightLeftAssoc</tt> is the indicator whether the operator is\r
-right or left associative, using the pyparsing-defined\r
-constants <tt class="docutils literal">opAssoc.RIGHT</tt> and <tt class="docutils literal">opAssoc.LEFT</tt>.</li>\r
-<li><tt class="docutils literal">parseAction</tt> is the parse action to be associated with\r
-expressions matching this operator expression (the\r
-parse action tuple member may be omitted)</li>\r
-</ul>\r
-</li>\r
-<li>Call <tt class="docutils literal">infixNotation</tt> passing the operand expression and\r
-the operator precedence list, and save the returned value\r
-as the generated pyparsing expression.  You can then use\r
-this expression to parse input strings, or incorporate it\r
-into a larger, more complex grammar.</li>\r
-</ol>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">matchPreviousLiteral</tt> and <tt class="docutils literal">matchPreviousExpr</tt> - function to define and\r
-expression that matches the same content\r
-as was parsed in a previous parse expression.  For instance:</p>\r
-<pre class="literal-block">\r
-first = Word(nums)\r
-matchExpr = first + &quot;:&quot; + matchPreviousLiteral(first)\r
-</pre>\r
-<p>will match &quot;1:1&quot;, but not &quot;1:2&quot;.  Since this matches at the literal\r
-level, this will also match the leading &quot;1:1&quot; in &quot;1:10&quot;.</p>\r
-<p>In contrast:</p>\r
-<pre class="literal-block">\r
-first = Word(nums)\r
-matchExpr = first + &quot;:&quot; + matchPreviousExpr(first)\r
-</pre>\r
-<p>will <em>not</em> match the leading &quot;1:1&quot; in &quot;1:10&quot;; the expressions are\r
-evaluated first, and then compared, so &quot;1&quot; is compared with &quot;10&quot;.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">nestedExpr(opener, closer, content=None, ignoreExpr=quotedString)</tt> - method for defining nested\r
-lists enclosed in opening and closing delimiters.</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">opener</tt> - opening character for a nested list (default=&quot;(&quot;); can also be a pyparsing expression</li>\r
-<li><tt class="docutils literal">closer</tt> - closing character for a nested list (default=&quot;)&quot;); can also be a pyparsing expression</li>\r
-<li><tt class="docutils literal">content</tt> - expression for items within the nested lists (default=None)</li>\r
-<li><tt class="docutils literal">ignoreExpr</tt> - expression for ignoring opening and closing delimiters (default=quotedString)</li>\r
-</ul>\r
-<p>If an expression is not provided for the content argument, the nested\r
-expression will capture all whitespace-delimited content between delimiters\r
-as a list of separate values.</p>\r
-<p>Use the <tt class="docutils literal">ignoreExpr</tt> argument to define expressions that may contain\r
-opening or closing characters that should not be treated as opening\r
-or closing characters for nesting, such as quotedString or a comment\r
-expression.  Specify multiple expressions using an Or or MatchFirst.\r
-The default is quotedString, but if no expressions are to be ignored,\r
-then pass None for this argument.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">indentedBlock( statementExpr, indentationStackVar, indent=True)</tt> -\r
-function to define an indented block of statements, similar to\r
-indentation-based blocking in Python source code:</p>\r
-<ul class="simple">\r
-<li><tt class="docutils literal">statementExpr</tt> - the expression defining a statement that\r
-will be found in the indented block; a valid indentedBlock\r
-must contain at least 1 matching statementExpr</li>\r
-<li><tt class="docutils literal">indentationStackVar</tt> - a Python list variable; this variable\r
-should be common to all <tt class="docutils literal">indentedBlock</tt> expressions defined\r
-within the same grammar, and should be reinitialized to [1]\r
-each time the grammar is to be used</li>\r
-<li><tt class="docutils literal">indent</tt> - a boolean flag indicating whether the expressions\r
-within the block must be indented from the current parse\r
-location; if using indentedBlock to define the left-most\r
-statements (all starting in column 1), set indent to False</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<ul id="originaltextfor">\r
-<li><p class="first"><tt class="docutils literal">originalTextFor( expr )</tt> - helper function to preserve the originally parsed text, regardless of any\r
-token processing or conversion done by the contained expression.  For instance, the following expression:</p>\r
-<pre class="literal-block">\r
-fullName = Word(alphas) + Word(alphas)\r
-</pre>\r
-<p>will return the parse of &quot;John Smith&quot; as ['John', 'Smith'].  In some applications, the actual name as it\r
-was given in the input string is what is desired.  To do this, use <tt class="docutils literal">originalTextFor</tt>:</p>\r
-<pre class="literal-block">\r
-fullName = originalTextFor(Word(alphas) + Word(alphas))\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">ungroup( expr )</tt> - function to &quot;ungroup&quot; returned tokens; useful\r
-to undo the default behavior of And to always group the returned tokens, even\r
-if there is only one in the list. (New in 1.5.6)</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">lineno( loc, string )</tt> - function to give the line number of the\r
-location within the string; the first line is line 1, newlines\r
-start new rows</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">col( loc, string )</tt> - function to give the column number of the\r
-location within the string; the first column is column 1,\r
-newlines reset the column number to 1</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">line( loc, string )</tt> - function to retrieve the line of text\r
-representing <tt class="docutils literal">lineno( loc, string )</tt>; useful when printing out diagnostic\r
-messages for exceptions</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">srange( rangeSpec )</tt> - function to define a string of characters,\r
-given a string of the form used by regexp string ranges, such as <tt class="docutils literal"><span class="pre">&quot;[0-9]&quot;</span></tt> for\r
-all numeric digits, <tt class="docutils literal"><span class="pre">&quot;[A-Z_]&quot;</span></tt> for uppercase characters plus underscore, and\r
-so on (note that rangeSpec does not include support for generic regular\r
-expressions, just string range specs)</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">getTokensEndLoc()</tt> - function to call from within a parse action to get\r
-the ending location for the matched tokens</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">traceParseAction(fn)</tt> - decorator function to debug parse actions. Lists\r
-each call, called arguments, and return value or exception</p>\r
-</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="helper-parse-actions">\r
-<h2><a class="toc-backref" href="#id16">3.2&nbsp;&nbsp;&nbsp;Helper parse actions</a></h2>\r
-<ul>\r
-<li><p class="first"><tt class="docutils literal">removeQuotes</tt> - removes the first and last characters of a quoted string;\r
-useful to remove the delimiting quotes from quoted strings</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">replaceWith(replString)</tt> - returns a parse action that simply returns the\r
-replString; useful when using transformString, or converting HTML entities, as in:</p>\r
-<pre class="literal-block">\r
-nbsp = Literal(&quot;&amp;nbsp;&quot;).setParseAction( replaceWith(&quot;&lt;BLANK&gt;&quot;) )\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">keepOriginalText</tt>- (deprecated, use <a class="reference internal" href="#originaltextfor">originalTextFor</a> instead) restores any internal whitespace or suppressed\r
-text within the tokens for a matched parse\r
-expression.  This is especially useful when defining expressions\r
-for scanString or transformString applications.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">withAttribute( *args, **kwargs )</tt> - helper to create a validating parse action to be used with start tags created\r
-with <tt class="docutils literal">makeXMLTags</tt> or <tt class="docutils literal">makeHTMLTags</tt>. Use <tt class="docutils literal">withAttribute</tt> to qualify a starting tag\r
-with a required attribute value, to avoid false matches on common tags such as\r
-<tt class="docutils literal">&lt;TD&gt;</tt> or <tt class="docutils literal">&lt;DIV&gt;</tt>.</p>\r
-<p><tt class="docutils literal">withAttribute</tt> can be called with:</p>\r
-<ul class="simple">\r
-<li>keyword arguments, as in <tt class="docutils literal"><span class="pre">(class=&quot;Customer&quot;,align=&quot;right&quot;)</span></tt>, or</li>\r
-<li>a list of name-value tuples, as in <tt class="docutils literal">( (&quot;ns1:class&quot;, <span class="pre">&quot;Customer&quot;),</span> <span class="pre">(&quot;ns2:align&quot;,&quot;right&quot;)</span> )</tt></li>\r
-</ul>\r
-<p>An attribute can be specified to have the special value\r
-<tt class="docutils literal">withAttribute.ANY_VALUE</tt>, which will match any value - use this to\r
-ensure that an attribute is present but any attribute value is\r
-acceptable.</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">downcaseTokens</tt> - converts all matched tokens to lowercase</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">upcaseTokens</tt> - converts all matched tokens to uppercase</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">matchOnlyAtCol( columnNumber )</tt> - a parse action that verifies that\r
-an expression was matched at a particular column, raising a\r
-ParseException if matching at a different column number; useful when parsing\r
-tabular data</p>\r
-</li>\r
-</ul>\r
-</div>\r
-<div class="section" id="common-string-and-token-constants">\r
-<h2><a class="toc-backref" href="#id17">3.3&nbsp;&nbsp;&nbsp;Common string and token constants</a></h2>\r
-<ul>\r
-<li><p class="first"><tt class="docutils literal">alphas</tt> - same as <tt class="docutils literal">string.letters</tt></p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">nums</tt> - same as <tt class="docutils literal">string.digits</tt></p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">alphanums</tt> - a string containing <tt class="docutils literal">alphas + nums</tt></p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">alphas8bit</tt> - a string containing alphabetic 8-bit characters:</p>\r
-<pre class="literal-block">\r
-ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ\r
-</pre>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">printables</tt> - same as <tt class="docutils literal">string.printable</tt>, minus the space (<tt class="docutils literal">' '</tt>) character</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">empty</tt> - a global <tt class="docutils literal">Empty()</tt>; will always match</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">sglQuotedString</tt> - a string of characters enclosed in 's; may\r
-include whitespace, but not newlines</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">dblQuotedString</tt> - a string of characters enclosed in &quot;s; may\r
-include whitespace, but not newlines</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">quotedString</tt> - <tt class="docutils literal">sglQuotedString | dblQuotedString</tt></p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">cStyleComment</tt> - a comment block delimited by <tt class="docutils literal"><span class="pre">'/*'</span></tt> and <tt class="docutils literal"><span class="pre">'*/'</span></tt> sequences; can span\r
-multiple lines, but does not support nesting of comments</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">htmlComment</tt> - a comment block delimited by <tt class="docutils literal"><span class="pre">'&lt;!--'</span></tt> and <tt class="docutils literal"><span class="pre">'--&gt;'</span></tt> sequences; can span\r
-multiple lines, but does not support nesting of comments</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">commaSeparatedList</tt> - similar to <tt class="docutils literal">delimitedList</tt>, except that the\r
-list expressions can be any text value, or a quoted string; quoted strings can\r
-safely include commas without incorrectly breaking the string into two tokens</p>\r
-</li>\r
-<li><p class="first"><tt class="docutils literal">restOfLine</tt> - all remaining printable characters up to but not including the next\r
-newline</p>\r
-</li>\r
-</ul>\r
-</div>\r
-</div>\r
-</div>\r
-</body>\r
-</html>\r
diff --git a/LICENSE b/LICENSE
index bbc959e0d6e25010439601967fa56f155ac6ebcc..1bf98523e33170372cf0702f03e38dadec3c5094 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,18 +1,18 @@
-Permission is hereby granted, free of charge, to any person obtaining\r
-a copy of this software and associated documentation files (the\r
-"Software"), to deal in the Software without restriction, including\r
-without limitation the rights to use, copy, modify, merge, publish,\r
-distribute, sublicense, and/or sell copies of the Software, and to\r
-permit persons to whom the Software is furnished to do so, subject to\r
-the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be\r
-included in all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
index 955d980692a9593ca5ac462f4874f9271a695f2b..3c0e43798fee4c10deffa6dd76d8185d99850e64 100644 (file)
@@ -1,7 +1,8 @@
 include pyparsing.py
 include HowToUsePyparsing.html pyparsingClassDiagram.*
 include README.md CODE_OF_CONDUCT.md CHANGES LICENSE
-include examples/*.py examples/Setup.ini examples/*.dfm examples/*.ics examples/*.html\r
-include htmldoc/*.*\r
-include docs/*.*\r
-include robots.txt\r
+include examples/*.py examples/Setup.ini examples/*.dfm examples/*.ics examples/*.html
+recursive-include docs *
+prune docs/_build/*
+recursive-include test *
+include simple_unit_tests.py unitTests.py
index aa8fd58d815f4735b38aa18118605aeea20d6e74..22a57cfca54862adc42d1f7f05b4268e3b6558ed 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 1.1
 Name: pyparsing
-Version: 2.3.0
+Version: 2.3.1
 Summary: Python parsing module
 Home-page: https://github.com/pyparsing/pyparsing/
 Author: Paul McGuire
@@ -24,4 +24,3 @@ Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
-Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
diff --git a/README.md b/README.md
deleted file mode 100644 (file)
index f7676cd..0000000
--- a/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-PyParsing -- A Python Parsing Module\r
-====================================\r
-[![Build Status](https://travis-ci.org/pyparsing/pyparsing.svg?branch=master)](https://travis-ci.org/pyparsing/pyparsing)\r
-\r
-Introduction\r
-============\r
-\r
-The pyparsing module is an alternative approach to creating and executing \r
-simple grammars, vs. the traditional lex/yacc approach, or the use of \r
-regular expressions.  The pyparsing module provides a library of classes \r
-that client code uses to construct the grammar directly in Python code.\r
-\r
-Here is a program to parse "Hello, World!" (or any greeting of the form \r
-"salutation, addressee!"):\r
-\r
-```python\r
-from pyparsing import Word, alphas\r
-greet = Word( alphas ) + "," + Word( alphas ) + "!"\r
-hello = "Hello, World!"\r
-print hello, "->", greet.parseString( hello )\r
-```\r
-\r
-The program outputs the following:\r
-\r
-    Hello, World! -> ['Hello', ',', 'World', '!']\r
-\r
-The Python representation of the grammar is quite readable, owing to the \r
-self-explanatory class names, and the use of '+', '|' and '^' operator \r
-definitions.\r
-\r
-The parsed results returned from parseString() can be accessed as a \r
-nested list, a dictionary, or an object with named attributes.\r
-\r
-The pyparsing module handles some of the problems that are typically \r
-vexing when writing text parsers:\r
-- extra or missing whitespace (the above program will also handle \r
-  "Hello,World!", "Hello  ,  World  !", etc.)\r
-- quoted strings\r
-- embedded comments\r
-\r
-The examples directory includes a simple SQL parser, simple CORBA IDL \r
-parser, a config file parser, a chemical formula parser, and a four-\r
-function algebraic notation parser, among many others.\r
-\r
-\r
-License\r
-=======\r
-\r
-    MIT License. See header of pyparsing.py\r
-\r
-History\r
-=======\r
-\r
-    See CHANGES file.\r
diff --git a/README.rst b/README.rst
new file mode 100644 (file)
index 0000000..0d702d7
--- /dev/null
@@ -0,0 +1,56 @@
+PyParsing – A Python Parsing Module
+===================================
+
+|Build Status|
+
+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.
+
+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() 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.
+
+License
+=======
+
+    MIT License. See header of pyparsing.py
+
+History
+=======
+
+    See CHANGES file.
+
+.. |Build Status| image:: https://travis-ci.org/pyparsing/pyparsing.svg?branch=master
+   :target: https://travis-ci.org/pyparsing/pyparsing
diff --git a/docs/CODE_OF_CONDUCT.rst b/docs/CODE_OF_CONDUCT.rst
new file mode 100644 (file)
index 0000000..96e0ba2
--- /dev/null
@@ -0,0 +1 @@
+.. include:: ../CODE_OF_CONDUCT.rst
diff --git a/docs/HowToUsePyparsing.rst b/docs/HowToUsePyparsing.rst
new file mode 100644 (file)
index 0000000..62dc677
--- /dev/null
@@ -0,0 +1,975 @@
+==========================\r
+Using the pyparsing module\r
+==========================\r
+\r
+:author: Paul McGuire\r
+:address: ptmcg@users.sourceforge.net\r
+\r
+:revision: 2.0.1a\r
+:date: July, 2013 (minor update August, 2018)\r
+\r
+:copyright: Copyright |copy| 2003-2013 Paul McGuire.\r
+\r
+.. |copy| unicode:: 0xA9\r
+\r
+:abstract: This document provides how-to instructions for the\r
+    pyparsing library, an easy-to-use Python module for constructing\r
+    and executing basic text parsers.  The pyparsing module is useful\r
+    for evaluating user-definable\r
+    expressions, processing custom application language commands, or\r
+    extracting data from formatted reports.\r
+\r
+.. sectnum::    :depth: 4\r
+\r
+.. contents::   :depth: 4\r
+\r
+Note: While this content is still valid, there are more detailed\r
+descriptions and examples at the online doc server at\r
+https://pythonhosted.org/pyparsing/pyparsing-module.html\r
+\r
+Steps to follow\r
+===============\r
+\r
+To parse an incoming data string, the client code must follow these steps:\r
+\r
+1. First define the tokens and patterns to be matched, and assign\r
+   this to a program variable.  Optional results names or parsing\r
+   actions can also be defined at this time.\r
+\r
+2. Call ``parseString()`` or ``scanString()`` on this variable, passing in\r
+   the string to\r
+   be parsed.  During the matching process, whitespace between\r
+   tokens is skipped by default (although this can be changed).\r
+   When token matches occur, any defined parse action methods are\r
+   called.\r
+\r
+3. Process the parsed results, returned as a list of strings.\r
+   Matching results may also be accessed as named attributes of\r
+   the returned results, if names are defined in the definition of\r
+   the token pattern, using ``setResultsName()``.\r
+\r
+\r
+Hello, World!\r
+-------------\r
+\r
+The following complete Python program will parse the greeting "Hello, World!",\r
+or any other greeting of the form "<salutation>, <addressee>!"::\r
+\r
+    from pyparsing import Word, alphas\r
+\r
+    greet = Word( alphas ) + "," + Word( alphas ) + "!"\r
+    greeting = greet.parseString( "Hello, World!" )\r
+    print greeting\r
+\r
+The parsed tokens are returned in the following form::\r
+\r
+    ['Hello', ',', 'World', '!']\r
+\r
+\r
+Usage notes\r
+-----------\r
+\r
+- The pyparsing module can be used to interpret simple command\r
+  strings or algebraic expressions, or can be used to extract data\r
+  from text reports with complicated format and structure ("screen\r
+  or report scraping").  However, it is possible that your defined\r
+  matching patterns may accept invalid inputs.  Use pyparsing to\r
+  extract data from strings assumed to be well-formatted.\r
+\r
+- To keep up the readability of your code, use operators_  such as ``+``, ``|``,\r
+  ``^``, and ``~`` to combine expressions.  You can also combine\r
+  string literals with ParseExpressions - they will be\r
+  automatically converted to Literal objects.  For example::\r
+\r
+    integer  = Word( nums )            # simple unsigned integer\r
+    variable = Word( alphas, max=1 )   # single letter variable, such as x, z, m, etc.\r
+    arithOp  = Word( "+-*/", max=1 )   # arithmetic operators\r
+    equation = variable + "=" + integer + arithOp + integer    # will match "x=2+2", etc.\r
+\r
+  In the definition of ``equation``, the string ``"="`` will get added as\r
+  a ``Literal("=")``, but in a more readable way.\r
+\r
+- The pyparsing module's default behavior is to ignore whitespace.  This is the\r
+  case for 99% of all parsers ever written.  This allows you to write simple, clean,\r
+  grammars, such as the above ``equation``, without having to clutter it up with\r
+  extraneous ``ws`` markers.  The ``equation`` grammar will successfully parse all of the\r
+  following statements::\r
+\r
+    x=2+2\r
+    x = 2+2\r
+    a = 10   *   4\r
+    r= 1234/ 100000\r
+\r
+  Of course, it is quite simple to extend this example to support more elaborate expressions, with\r
+  nesting with parentheses, floating point numbers, scientific notation, and named constants\r
+  (such as ``e`` or ``pi``).  See ``fourFn.py``, included in the examples directory.\r
+\r
+- To modify pyparsing's default whitespace skipping, you can use one or\r
+  more of the following methods:\r
+\r
+  - use the static method ``ParserElement.setDefaultWhitespaceChars``\r
+    to override the normal set of whitespace chars (' \t\n').  For instance\r
+    when defining a grammar in which newlines are significant, you should\r
+    call ``ParserElement.setDefaultWhitespaceChars(' \t')`` to remove\r
+    newline from the set of skippable whitespace characters.  Calling\r
+    this method will affect all pyparsing expressions defined afterward.\r
+\r
+  - call ``leaveWhitespace()`` on individual expressions, to suppress the\r
+    skipping of whitespace before trying to match the expression\r
+\r
+  - use ``Combine`` to require that successive expressions must be\r
+    adjacent in the input string.  For instance, this expression::\r
+\r
+      real = Word(nums) + '.' + Word(nums)\r
+\r
+    will match "3.14159", but will also match "3 . 12".  It will also\r
+    return the matched results as ['3', '.', '14159'].  By changing this\r
+    expression to::\r
+\r
+      real = Combine( Word(nums) + '.' + Word(nums) )\r
+\r
+    it will not match numbers with embedded spaces, and it will return a\r
+    single concatenated string '3.14159' as the parsed token.\r
+\r
+- Repetition of expressions can be indicated using the '*' operator.  An\r
+  expression may be multiplied by an integer value (to indicate an exact\r
+  repetition count), or by a tuple containing\r
+  two integers, or None and an integer, representing min and max repetitions\r
+  (with None representing no min or no max, depending whether it is the first or\r
+  second tuple element).  See the following examples, where n is used to\r
+  indicate an integer value:\r
+\r
+  - ``expr*3`` is equivalent to ``expr + expr + expr``\r
+\r
+  - ``expr*(2,3)`` is equivalent to ``expr + expr + Optional(expr)``\r
+\r
+  - ``expr*(n,None)`` or ``expr*(n,)`` is equivalent\r
+    to ``expr*n + ZeroOrMore(expr)`` (read as "at least n instances of expr")\r
+\r
+  - ``expr*(None,n)`` is equivalent to ``expr*(0,n)``\r
+    (read as "0 to n instances of expr")\r
+\r
+  - ``expr*(None,None)`` is equivalent to ``ZeroOrMore(expr)``\r
+\r
+  - ``expr*(1,None)`` is equivalent to ``OneOrMore(expr)``\r
+\r
+  Note that ``expr*(None,n)`` does not raise an exception if\r
+  more than n exprs exist in the input stream; that is,\r
+  ``expr*(None,n)`` does not enforce a maximum number of expr\r
+  occurrences.  If this behavior is desired, then write\r
+  ``expr*(None,n) + ~expr``.\r
+\r
+- ``MatchFirst`` expressions are matched left-to-right, and the first\r
+  match found will skip all later expressions within, so be sure\r
+  to define less-specific patterns after more-specific patterns.\r
+  If you are not sure which expressions are most specific, use Or\r
+  expressions (defined using the ``^`` operator) - they will always\r
+  match the longest expression, although they are more\r
+  compute-intensive.\r
+\r
+- ``Or`` expressions will evaluate all of the specified subexpressions\r
+  to determine which is the "best" match, that is, which matches\r
+  the longest string in the input data.  In case of a tie, the\r
+  left-most expression in the ``Or`` list will win.\r
+\r
+- If parsing the contents of an entire file, pass it to the\r
+  ``parseFile`` method using::\r
+\r
+    expr.parseFile( sourceFile )\r
+\r
+- ``ParseExceptions`` will report the location where an expected token\r
+  or expression failed to match.  For example, if we tried to use our\r
+  "Hello, World!" parser to parse "Hello World!" (leaving out the separating\r
+  comma), we would get an exception, with the message::\r
+\r
+    pyparsing.ParseException: Expected "," (6), (1,7)\r
+\r
+  In the case of complex\r
+  expressions, the reported location may not be exactly where you\r
+  would expect.  See more information under ParseException_ .\r
+\r
+- Use the ``Group`` class to enclose logical groups of tokens within a\r
+  sublist.  This will help organize your results into more\r
+  hierarchical form (the default behavior is to return matching\r
+  tokens as a flat list of matching input strings).\r
+\r
+- Punctuation may be significant for matching, but is rarely of\r
+  much interest in the parsed results.  Use the ``suppress()`` method\r
+  to keep these tokens from cluttering up your returned lists of\r
+  tokens.  For example, ``delimitedList()`` matches a succession of\r
+  one or more expressions, separated by delimiters (commas by\r
+  default), but only returns a list of the actual expressions -\r
+  the delimiters are used for parsing, but are suppressed from the\r
+  returned output.\r
+\r
+- Parse actions can be used to convert values from strings to\r
+  other data types (ints, floats, booleans, etc.).\r
+\r
+- Results names are recommended for retrieving tokens from complex\r
+  expressions.  It is much easier to access a token using its field\r
+  name than using a positional index, especially if the expression\r
+  contains optional elements.  You can also shortcut\r
+  the ``setResultsName`` call::\r
+\r
+    stats = "AVE:" + realNum.setResultsName("average") + \\r
+            "MIN:" + realNum.setResultsName("min") + \\r
+            "MAX:" + realNum.setResultsName("max")\r
+\r
+  can now be written as this::\r
+\r
+    stats = "AVE:" + realNum("average") + \\r
+            "MIN:" + realNum("min") + \\r
+            "MAX:" + realNum("max")\r
+\r
+- Be careful when defining parse actions that modify global variables or\r
+  data structures (as in ``fourFn.py``), especially for low level tokens\r
+  or expressions that may occur within an ``And`` expression; an early element\r
+  of an ``And`` may match, but the overall expression may fail.\r
+\r
+\r
+Classes\r
+=======\r
+\r
+Classes in the pyparsing module\r
+-------------------------------\r
+\r
+``ParserElement`` - abstract base class for all pyparsing classes;\r
+methods for code to use are:\r
+\r
+- ``parseString( sourceString, parseAll=False )`` - only called once, on the overall\r
+  matching pattern; returns a ParseResults_ object that makes the\r
+  matched tokens available as a list, and optionally as a dictionary,\r
+  or as an object with named attributes; if parseAll is set to True, then\r
+  parseString will raise a ParseException if the grammar does not process\r
+  the complete input string.\r
+\r
+- ``parseFile( sourceFile )`` - a convenience function, that accepts an\r
+  input file object or filename.  The file contents are passed as a\r
+  string to ``parseString()``.  ``parseFile`` also supports the ``parseAll`` argument.\r
+\r
+- ``scanString( sourceString )`` - generator function, used to find and\r
+  extract matching text in the given source string; for each matched text,\r
+  returns a tuple of:\r
+\r
+  - matched tokens (packaged as a ParseResults_ object)\r
+\r
+  - start location of the matched text in the given source string\r
+\r
+  - end location in the given source string\r
+\r
+  ``scanString`` allows you to scan through the input source string for\r
+  random matches, instead of exhaustively defining the grammar for the entire\r
+  source text (as would be required with ``parseString``).\r
+\r
+- ``transformString( sourceString )`` - convenience wrapper function for\r
+  ``scanString``, to process the input source string, and replace matching\r
+  text with the tokens returned from parse actions defined in the grammar\r
+  (see setParseAction_).\r
+\r
+- ``searchString( sourceString )`` - another convenience wrapper function for\r
+  ``scanString``, returns a list of the matching tokens returned from each\r
+  call to ``scanString``.\r
+\r
+- ``setName( name )`` - associate a short descriptive name for this\r
+  element, useful in displaying exceptions and trace information\r
+\r
+- ``setResultsName( string, listAllMatches=False )`` - name to be given\r
+  to tokens matching\r
+  the element; if multiple tokens within\r
+  a repetition group (such as ``ZeroOrMore`` or ``delimitedList``) the\r
+  default is to return only the last matching token - if listAllMatches\r
+  is set to True, then a list of all the matching tokens is returned.\r
+  (New in 1.5.6 - a results name with a trailing '*' character will be\r
+  interpreted as setting listAllMatches to True.)\r
+  Note:\r
+  ``setResultsName`` returns a *copy* of the element so that a single\r
+  basic element can be referenced multiple times and given\r
+  different names within a complex grammar.\r
+\r
+.. _setParseAction:\r
+\r
+- ``setParseAction( *fn )`` - specify one or more functions to call after successful\r
+  matching of the element; each function is defined as ``fn( s,\r
+  loc, toks )``, where:\r
+\r
+  - ``s`` is the original parse string\r
+\r
+  - ``loc`` is the location in the string where matching started\r
+\r
+  - ``toks`` is the list of the matched tokens, packaged as a ParseResults_ object\r
+\r
+  Multiple functions can be attached to a ParserElement by specifying multiple\r
+  arguments to setParseAction, or by calling setParseAction multiple times.\r
+\r
+  Each parse action function can return a modified ``toks`` list, to perform conversion, or\r
+  string modifications.  For brevity, ``fn`` may also be a\r
+  lambda - here is an example of using a parse action to convert matched\r
+  integer tokens from strings to integers::\r
+\r
+    intNumber = Word(nums).setParseAction( lambda s,l,t: [ int(t[0]) ] )\r
+\r
+  If ``fn`` does not modify the ``toks`` list, it does not need to return\r
+  anything at all.\r
+\r
+- ``setBreak( breakFlag=True )`` - if breakFlag is True, calls pdb.set_break()\r
+  as this expression is about to be parsed\r
+\r
+- ``copy()`` - returns a copy of a ParserElement; can be used to use the same\r
+  parse expression in different places in a grammar, with different parse actions\r
+  attached to each\r
+\r
+- ``leaveWhitespace()`` - change default behavior of skipping\r
+  whitespace before starting matching (mostly used internally to the\r
+  pyparsing module, rarely used by client code)\r
+\r
+- ``setWhitespaceChars( chars )`` - define the set of chars to be ignored\r
+  as whitespace before trying to match a specific ParserElement, in place of the\r
+  default set of whitespace (space, tab, newline, and return)\r
+\r
+- ``setDefaultWhitespaceChars( chars )`` - class-level method to override\r
+  the default set of whitespace chars for all subsequently created ParserElements\r
+  (including copies); useful when defining grammars that treat one or more of the\r
+  default whitespace characters as significant (such as a line-sensitive grammar, to\r
+  omit newline from the list of ignorable whitespace)\r
+\r
+- ``suppress()`` - convenience function to suppress the output of the\r
+  given element, instead of wrapping it with a Suppress object.\r
+\r
+- ``ignore( expr )`` - function to specify parse expression to be\r
+  ignored while matching defined patterns; can be called\r
+  repeatedly to specify multiple expressions; useful to specify\r
+  patterns of comment syntax, for example\r
+\r
+- ``setDebug( dbgFlag=True )`` - function to enable/disable tracing output\r
+  when trying to match this element\r
+\r
+- ``validate()`` - function to verify that the defined grammar does not\r
+  contain infinitely recursive constructs\r
+\r
+.. _parseWithTabs:\r
+\r
+- ``parseWithTabs()`` - function to override default behavior of converting\r
+  tabs to spaces before parsing the input string; rarely used, except when\r
+  specifying whitespace-significant grammars using the White_ class.\r
+\r
+- ``enablePackrat()`` - a class-level static method to enable a memoizing\r
+  performance enhancement, known as "packrat parsing".  packrat parsing is\r
+  disabled by default, since it may conflict with some user programs that use\r
+  parse actions.  To activate the packrat feature, your\r
+  program must call the class method ParserElement.enablePackrat(). For best\r
+  results, call enablePackrat() immediately after importing pyparsing.\r
+\r
+\r
+Basic ParserElement subclasses\r
+------------------------------\r
+\r
+- ``Literal`` - construct with a string to be matched exactly\r
+\r
+- ``CaselessLiteral`` - construct with a string to be matched, but\r
+  without case checking; results are always returned as the\r
+  defining literal, NOT as they are found in the input string\r
+\r
+- ``Keyword`` - similar to Literal, but must be immediately followed by\r
+  whitespace, punctuation, or other non-keyword characters; prevents\r
+  accidental matching of a non-keyword that happens to begin with a\r
+  defined keyword\r
+\r
+- ``CaselessKeyword`` - similar to Keyword, but with caseless matching\r
+  behavior\r
+\r
+.. _Word:\r
+\r
+- ``Word`` - one or more contiguous characters; construct with a\r
+  string containing the set of allowed initial characters, and an\r
+  optional second string of allowed body characters; for instance,\r
+  a common Word construct is to match a code identifier - in C, a\r
+  valid identifier must start with an alphabetic character or an\r
+  underscore ('_'), followed by a body that can also include numeric\r
+  digits.  That is, ``a``, ``i``, ``MAX_LENGTH``, ``_a1``, ``b_109_``, and\r
+  ``plan9FromOuterSpace``\r
+  are all valid identifiers; ``9b7z``, ``$a``, ``.section``, and ``0debug``\r
+  are not.  To\r
+  define an identifier using a Word, use either of the following::\r
+\r
+  - Word( alphas+"_", alphanums+"_" )\r
+  - Word( srange("[a-zA-Z_]"), srange("[a-zA-Z0-9_]") )\r
+\r
+  If only one\r
+  string given, it specifies that the same character set defined\r
+  for the initial character is used for the word body; for instance, to\r
+  define an identifier that can only be composed of capital letters and\r
+  underscores, use::\r
+\r
+  - Word( "ABCDEFGHIJKLMNOPQRSTUVWXYZ_" )\r
+  - Word( srange("[A-Z_]") )\r
+\r
+  A Word may\r
+  also be constructed with any of the following optional parameters:\r
+\r
+  - ``min`` - indicating a minimum length of matching characters\r
+\r
+  - ``max`` - indicating a maximum length of matching characters\r
+\r
+  - ``exact`` - indicating an exact length of matching characters\r
+\r
+  If ``exact`` is specified, it will override any values for ``min`` or ``max``.\r
+\r
+  New in 1.5.6 - Sometimes you want to define a word using all\r
+  characters in a range except for one or two of them; you can do this\r
+  with the new ``excludeChars`` argument. This is helpful if you want to define\r
+  a word with all printables except for a single delimiter character, such\r
+  as '.'. Previously, you would have to create a custom string to pass to Word.\r
+  With this change, you can just create ``Word(printables, excludeChars='.')``.\r
+\r
+- ``CharsNotIn`` - similar to Word_, but matches characters not\r
+  in the given constructor string (accepts only one string for both\r
+  initial and body characters); also supports ``min``, ``max``, and ``exact``\r
+  optional parameters.\r
+\r
+- ``Regex`` - a powerful construct, that accepts a regular expression\r
+  to be matched at the current parse position; accepts an optional\r
+  ``flags`` parameter, corresponding to the flags parameter in the re.compile\r
+  method; if the expression includes named sub-fields, they will be\r
+  represented in the returned ParseResults_\r
+\r
+- ``QuotedString`` - supports the definition of custom quoted string\r
+  formats, in addition to pyparsing's built-in ``dblQuotedString`` and\r
+  ``sglQuotedString``.  ``QuotedString`` allows you to specify the following\r
+  parameters:\r
+\r
+  - ``quoteChar`` - string of one or more characters defining the quote delimiting string\r
+\r
+  - ``escChar`` - character to escape quotes, typically backslash (default=None)\r
+\r
+  - ``escQuote`` - special quote sequence to escape an embedded quote string (such as SQL's "" to escape an embedded ") (default=None)\r
+\r
+  - ``multiline`` - boolean indicating whether quotes can span multiple lines (default=False)\r
+\r
+  - ``unquoteResults`` - boolean indicating whether the matched text should be unquoted (default=True)\r
+\r
+  - ``endQuoteChar`` - string of one or more characters defining the end of the quote delimited string (default=None => same as quoteChar)\r
+\r
+- ``SkipTo`` - skips ahead in the input string, accepting any\r
+  characters up to the specified pattern; may be constructed with\r
+  the following optional parameters:\r
+\r
+  - ``include`` - if set to true, also consumes the match expression\r
+    (default is false)\r
+\r
+  - ``ignore`` - allows the user to specify patterns to not be matched,\r
+    to prevent false matches\r
+\r
+  - ``failOn`` - if a literal string or expression is given for this argument, it defines an expression that\r
+    should cause the ``SkipTo`` expression to fail, and not skip over that expression\r
+\r
+.. _White:\r
+\r
+- ``White`` - also similar to Word_, but matches whitespace\r
+  characters.  Not usually needed, as whitespace is implicitly\r
+  ignored by pyparsing.  However, some grammars are whitespace-sensitive,\r
+  such as those that use leading tabs or spaces to indicating grouping\r
+  or hierarchy.  (If matching on tab characters, be sure to call\r
+  parseWithTabs_ on the top-level parse element.)\r
+\r
+- ``Empty`` - a null expression, requiring no characters - will always\r
+  match; useful for debugging and for specialized grammars\r
+\r
+- ``NoMatch`` - opposite of Empty, will never match; useful for debugging\r
+  and for specialized grammars\r
+\r
+\r
+Expression subclasses\r
+---------------------\r
+\r
+- ``And`` - construct with a list of ParserElements, all of which must\r
+  match for And to match; can also be created using the '+'\r
+  operator; multiple expressions can be Anded together using the '*'\r
+  operator as in::\r
+\r
+    ipAddress = Word(nums) + ('.'+Word(nums))*3\r
+\r
+  A tuple can be used as the multiplier, indicating a min/max::\r
+\r
+    usPhoneNumber = Word(nums) + ('-'+Word(nums))*(1,2)\r
+\r
+  A special form of ``And`` is created if the '-' operator is used\r
+  instead of the '+' operator.  In the ipAddress example above, if\r
+  no trailing '.' and Word(nums) are found after matching the initial\r
+  Word(nums), then pyparsing will back up in the grammar and try other\r
+  alternatives to ipAddress.  However, if ipAddress is defined as::\r
+\r
+    strictIpAddress = Word(nums) - ('.'+Word(nums))*3\r
+\r
+  then no backing up is done.  If the first Word(nums) of strictIpAddress\r
+  is matched, then any mismatch after that will raise a ParseSyntaxException,\r
+  which will halt the parsing process immediately.  By careful use of the\r
+  '-' operator, grammars can provide meaningful error messages close to\r
+  the location where the incoming text does not match the specified\r
+  grammar.\r
+\r
+- ``Or`` - construct with a list of ParserElements, any of which must\r
+  match for Or to match; if more than one expression matches, the\r
+  expression that makes the longest match will be used; can also\r
+  be created using the '^' operator\r
+\r
+- ``MatchFirst`` - construct with a list of ParserElements, any of\r
+  which must match for MatchFirst to match; matching is done\r
+  left-to-right, taking the first expression that matches; can\r
+  also be created using the '|' operator\r
+\r
+- ``Each`` - similar to And, in that all of the provided expressions\r
+  must match; however, Each permits matching to be done in any order;\r
+  can also be created using the '&' operator\r
+\r
+- ``Optional`` - construct with a ParserElement, but this element is\r
+  not required to match; can be constructed with an optional ``default`` argument,\r
+  containing a default string or object to be supplied if the given optional\r
+  parse element is not found in the input string; parse action will only\r
+  be called if a match is found, or if a default is specified\r
+\r
+- ``ZeroOrMore`` - similar to Optional, but can be repeated\r
+\r
+- ``OneOrMore`` - similar to ZeroOrMore, but at least one match must\r
+  be present\r
+\r
+- ``FollowedBy`` - a lookahead expression, requires matching of the given\r
+  expressions, but does not advance the parsing position within the input string\r
+\r
+- ``NotAny`` - a negative lookahead expression, prevents matching of named\r
+  expressions, does not advance the parsing position within the input string;\r
+  can also be created using the unary '~' operator\r
+\r
+\r
+.. _operators:\r
+\r
+Expression operators\r
+--------------------\r
+\r
+- ``~`` - creates NotAny using the expression after the operator\r
+\r
+- ``+`` - creates And using the expressions before and after the operator\r
+\r
+- ``|`` - creates MatchFirst (first left-to-right match) using the expressions before and after the operator\r
+\r
+- ``^`` - creates Or (longest match) using the expressions before and after the operator\r
+\r
+- ``&`` - creates Each using the expressions before and after the operator\r
+\r
+- ``*`` - creates And by multiplying the expression by the integer operand; if\r
+  expression is multiplied by a 2-tuple, creates an And of (min,max)\r
+  expressions (similar to "{min,max}" form in regular expressions); if\r
+  min is None, intepret as (0,max); if max is None, interpret as\r
+  expr*min + ZeroOrMore(expr)\r
+\r
+- ``-`` - like ``+`` but with no backup and retry of alternatives\r
+\r
+- ``*`` - repetition of expression\r
+\r
+- ``==`` - matching expression to string; returns True if the string matches the given expression\r
+\r
+- ``<<=`` - inserts the expression following the operator as the body of the\r
+  Forward expression before the operator\r
+\r
+\r
+\r
+Positional subclasses\r
+---------------------\r
+\r
+- ``StringStart`` - matches beginning of the text\r
+\r
+- ``StringEnd`` - matches the end of the text\r
+\r
+- ``LineStart`` - matches beginning of a line (lines delimited by ``\n`` characters)\r
+\r
+- ``LineEnd`` - matches the end of a line\r
+\r
+- ``WordStart`` - matches a leading word boundary\r
+\r
+- ``WordEnd`` - matches a trailing word boundary\r
+\r
+\r
+\r
+Converter subclasses\r
+--------------------\r
+\r
+- ``Combine`` - joins all matched tokens into a single string, using\r
+  specified joinString (default ``joinString=""``); expects\r
+  all matching tokens to be adjacent, with no intervening\r
+  whitespace (can be overridden by specifying ``adjacent=False`` in constructor)\r
+\r
+- ``Suppress`` - clears matched tokens; useful to keep returned\r
+  results from being cluttered with required but uninteresting\r
+  tokens (such as list delimiters)\r
+\r
+\r
+Special subclasses\r
+------------------\r
+\r
+- ``Group`` - causes the matched tokens to be enclosed in a list;\r
+  useful in repeated elements like ``ZeroOrMore`` and ``OneOrMore`` to\r
+  break up matched tokens into groups for each repeated pattern\r
+\r
+- ``Dict`` - like ``Group``, but also constructs a dictionary, using the\r
+  [0]'th elements of all enclosed token lists as the keys, and\r
+  each token list as the value\r
+\r
+- ``SkipTo`` - catch-all matching expression that accepts all characters\r
+  up until the given pattern is found to match; useful for specifying\r
+  incomplete grammars\r
+\r
+- ``Forward`` - placeholder token used to define recursive token\r
+  patterns; when defining the actual expression later in the\r
+  program, insert it into the ``Forward`` object using the ``<<``\r
+  operator (see ``fourFn.py`` for an example).\r
+\r
+\r
+Other classes\r
+-------------\r
+.. _ParseResults:\r
+\r
+- ``ParseResults`` - class used to contain and manage the lists of tokens\r
+  created from parsing the input using the user-defined parse\r
+  expression.  ParseResults can be accessed in a number of ways:\r
+\r
+  - as a list\r
+\r
+    - total list of elements can be found using len()\r
+\r
+    - individual elements can be found using [0], [1], [-1], etc.\r
+\r
+    - elements can be deleted using ``del``\r
+\r
+    - the -1th element can be extracted and removed in a single operation\r
+      using ``pop()``, or any element can be extracted and removed\r
+      using ``pop(n)``\r
+\r
+  - as a dictionary\r
+\r
+    - if ``setResultsName()`` is used to name elements within the\r
+      overall parse expression, then these fields can be referenced\r
+      as dictionary elements or as attributes\r
+\r
+    - the Dict class generates dictionary entries using the data of the\r
+      input text - in addition to ParseResults listed as ``[ [ a1, b1, c1, ...], [ a2, b2, c2, ...]  ]``\r
+      it also acts as a dictionary with entries defined as ``{ a1 : [ b1, c1, ... ] }, { a2 : [ b2, c2, ... ] }``;\r
+      this is especially useful when processing tabular data where the first column contains a key\r
+      value for that line of data\r
+\r
+    - list elements that are deleted using ``del`` will still be accessible by their\r
+      dictionary keys\r
+\r
+    - supports ``get()``, ``items()`` and ``keys()`` methods, similar to a dictionary\r
+\r
+    - a keyed item can be extracted and removed using ``pop(key)``.  Here\r
+      key must be non-numeric (such as a string), in order to use dict\r
+      extraction instead of list extraction.\r
+\r
+    - new named elements can be added (in a parse action, for instance), using the same\r
+      syntax as adding an item to a dict (``parseResults["X"]="new item"``); named elements can be removed using ``del parseResults["X"]``\r
+\r
+  - as a nested list\r
+\r
+    - results returned from the Group class are encapsulated within their\r
+      own list structure, so that the tokens can be handled as a hierarchical\r
+      tree\r
+\r
+  ParseResults can also be converted to an ordinary list of strings\r
+  by calling ``asList()``.  Note that this will strip the results of any\r
+  field names that have been defined for any embedded parse elements.\r
+  (The ``pprint`` module is especially good at printing out the nested contents\r
+  given by ``asList()``.)\r
+\r
+  Finally, ParseResults can be viewed by calling ``dump()``. ``dump()` will first show\r
+  the ``asList()`` output, followed by an indented structure listing parsed tokens that\r
+  have been assigned results names.\r
+\r
+\r
+Exception classes and Troubleshooting\r
+-------------------------------------\r
+\r
+.. _ParseException:\r
+\r
+- ``ParseException`` - exception returned when a grammar parse fails;\r
+  ParseExceptions have attributes loc, msg, line, lineno, and column; to view the\r
+  text line and location where the reported ParseException occurs, use::\r
+\r
+    except ParseException, err:\r
+        print err.line\r
+        print " "*(err.column-1) + "^"\r
+        print err\r
+\r
+- ``RecursiveGrammarException`` - exception returned by ``validate()`` if\r
+  the grammar contains a recursive infinite loop, such as::\r
+\r
+    badGrammar = Forward()\r
+    goodToken = Literal("A")\r
+    badGrammar <<= Optional(goodToken) + badGrammar\r
+\r
+- ``ParseFatalException`` - exception that parse actions can raise to stop parsing\r
+  immediately.  Should be used when a semantic error is found in the input text, such\r
+  as a mismatched XML tag.\r
+\r
+- ``ParseSyntaxException`` - subclass of ``ParseFatalException`` raised when a\r
+  syntax error is found, based on the use of the '-' operator when defining\r
+  a sequence of expressions in an ``And`` expression.\r
+\r
+You can also get some insights into the parsing logic using diagnostic parse actions,\r
+and setDebug(), or test the matching of expression fragments by testing them using\r
+scanString().\r
+\r
+\r
+Miscellaneous attributes and methods\r
+====================================\r
+\r
+Helper methods\r
+--------------\r
+\r
+- ``delimitedList( expr, delim=',')`` - convenience function for\r
+  matching one or more occurrences of expr, separated by delim.\r
+  By default, the delimiters are suppressed, so the returned results contain\r
+  only the separate list elements.  Can optionally specify ``combine=True``,\r
+  indicating that the expressions and delimiters should be returned as one\r
+  combined value (useful for scoped variables, such as ``"a.b.c"``, or\r
+  ``"a::b::c"``, or paths such as ``"a/b/c"``).\r
+\r
+- ``countedArray( expr )`` - convenience function for a pattern where an list of\r
+  instances of the given expression are preceded by an integer giving the count of\r
+  elements in the list.  Returns an expression that parses the leading integer,\r
+  reads exactly that many expressions, and returns the array of expressions in the\r
+  parse results - the leading integer is suppressed from the results (although it\r
+  is easily reconstructed by using len on the returned array).\r
+\r
+- ``oneOf( string, caseless=False )`` - convenience function for quickly declaring an\r
+  alternative set of ``Literal`` tokens, by splitting the given string on\r
+  whitespace boundaries.  The tokens are sorted so that longer\r
+  matches are attempted first; this ensures that a short token does\r
+  not mask a longer one that starts with the same characters. If ``caseless=True``,\r
+  will create an alternative set of CaselessLiteral tokens.\r
+\r
+- ``dictOf( key, value )`` - convenience function for quickly declaring a\r
+  dictionary pattern of ``Dict( ZeroOrMore( Group( key + value ) ) )``.\r
+\r
+- ``makeHTMLTags( tagName )`` and ``makeXMLTags( tagName )`` - convenience\r
+  functions to create definitions of opening and closing tag expressions.  Returns\r
+  a pair of expressions, for the corresponding <tag> and </tag> strings.  Includes\r
+  support for attributes in the opening tag, such as <tag attr1="abc"> - attributes\r
+  are returned as keyed tokens in the returned ParseResults.  ``makeHTMLTags`` is less\r
+  restrictive than ``makeXMLTags``, especially with respect to case sensitivity.\r
+\r
+- ``infixNotation(baseOperand, operatorList)`` - (formerly named ``operatorPrecedence``) convenience function to define a\r
+  grammar for parsing infix notation\r
+  expressions with a hierarchical precedence of operators. To use the ``infixNotation``\r
+  helper:\r
+\r
+  1.  Define the base "atom" operand term of the grammar.\r
+      For this simple grammar, the smallest operand is either\r
+      and integer or a variable.  This will be the first argument\r
+      to the ``infixNotation`` method.\r
+\r
+  2.  Define a list of tuples for each level of operator\r
+      precendence.  Each tuple is of the form\r
+      ``(opExpr, numTerms, rightLeftAssoc, parseAction)``, where:\r
+\r
+      - ``opExpr`` - the pyparsing expression for the operator;\r
+        may also be a string, which will be converted to a Literal; if\r
+        None, indicates an empty operator, such as the implied\r
+        multiplication operation between 'm' and 'x' in "y = mx + b".\r
+\r
+      - ``numTerms`` - the number of terms for this operator (must\r
+        be 1, 2, or 3)\r
+\r
+      - ``rightLeftAssoc`` is the indicator whether the operator is\r
+        right or left associative, using the pyparsing-defined\r
+        constants ``opAssoc.RIGHT`` and ``opAssoc.LEFT``.\r
+\r
+      - ``parseAction`` is the parse action to be associated with\r
+        expressions matching this operator expression (the\r
+        ``parseAction`` tuple member may be omitted)\r
+\r
+  3.  Call ``infixNotation`` passing the operand expression and\r
+      the operator precedence list, and save the returned value\r
+      as the generated pyparsing expression.  You can then use\r
+      this expression to parse input strings, or incorporate it\r
+      into a larger, more complex grammar.\r
+\r
+- ``matchPreviousLiteral`` and ``matchPreviousExpr`` - function to define and\r
+  expression that matches the same content\r
+  as was parsed in a previous parse expression.  For instance::\r
+\r
+        first = Word(nums)\r
+        matchExpr = first + ":" + matchPreviousLiteral(first)\r
+\r
+  will match "1:1", but not "1:2".  Since this matches at the literal\r
+  level, this will also match the leading "1:1" in "1:10".\r
+\r
+  In contrast::\r
+\r
+        first = Word(nums)\r
+        matchExpr = first + ":" + matchPreviousExpr(first)\r
+\r
+  will *not* match the leading "1:1" in "1:10"; the expressions are\r
+  evaluated first, and then compared, so "1" is compared with "10".\r
+\r
+- ``nestedExpr(opener, closer, content=None, ignoreExpr=quotedString)`` - method for defining nested\r
+  lists enclosed in opening and closing delimiters.\r
+\r
+  - ``opener`` - opening character for a nested list (default="("); can also be a pyparsing expression\r
+\r
+  - ``closer`` - closing character for a nested list (default=")"); can also be a pyparsing expression\r
+\r
+  - ``content`` - expression for items within the nested lists (default=None)\r
+\r
+  - ``ignoreExpr`` - expression for ignoring opening and closing delimiters (default=quotedString)\r
+\r
+  If an expression is not provided for the content argument, the nested\r
+  expression will capture all whitespace-delimited content between delimiters\r
+  as a list of separate values.\r
+\r
+  Use the ignoreExpr argument to define expressions that may contain\r
+  opening or closing characters that should not be treated as opening\r
+  or closing characters for nesting, such as quotedString or a comment\r
+  expression.  Specify multiple expressions using an Or or MatchFirst.\r
+  The default is quotedString, but if no expressions are to be ignored,\r
+  then pass None for this argument.\r
+\r
+\r
+- ``indentedBlock( statementExpr, indentationStackVar, indent=True)`` -\r
+  function to define an indented block of statements, similar to\r
+  indentation-based blocking in Python source code:\r
+\r
+  - ``statementExpr`` - the expression defining a statement that\r
+    will be found in the indented block; a valid ``indentedBlock``\r
+    must contain at least 1 matching ``statementExpr``\r
+\r
+  - ``indentationStackVar`` - a Python list variable; this variable\r
+    should be common to all ``indentedBlock`` expressions defined\r
+    within the same grammar, and should be reinitialized to [1]\r
+    each time the grammar is to be used\r
+\r
+  - ``indent`` - a boolean flag indicating whether the expressions\r
+    within the block must be indented from the current parse\r
+    location; if using ``indentedBlock`` to define the left-most\r
+    statements (all starting in column 1), set ``indent`` to False\r
+\r
+.. _originalTextFor:\r
+\r
+- ``originalTextFor( expr )`` - helper function to preserve the originally parsed text, regardless of any\r
+  token processing or conversion done by the contained expression.  For instance, the following expression::\r
+\r
+        fullName = Word(alphas) + Word(alphas)\r
+\r
+  will return the parse of "John Smith" as ['John', 'Smith'].  In some applications, the actual name as it\r
+  was given in the input string is what is desired.  To do this, use ``originalTextFor``::\r
+\r
+        fullName = originalTextFor(Word(alphas) + Word(alphas))\r
+\r
+- ``ungroup( expr )`` - function to "ungroup" returned tokens; useful\r
+  to undo the default behavior of And to always group the returned tokens, even\r
+  if there is only one in the list. (New in 1.5.6)\r
+\r
+- ``lineno( loc, string )`` - function to give the line number of the\r
+  location within the string; the first line is line 1, newlines\r
+  start new rows\r
+\r
+- ``col( loc, string )`` - function to give the column number of the\r
+  location within the string; the first column is column 1,\r
+  newlines reset the column number to 1\r
+\r
+- ``line( loc, string )`` - function to retrieve the line of text\r
+  representing ``lineno( loc, string )``; useful when printing out diagnostic\r
+  messages for exceptions\r
+\r
+- ``srange( rangeSpec )`` - function to define a string of characters,\r
+  given a string of the form used by regexp string ranges, such as ``"[0-9]"`` for\r
+  all numeric digits, ``"[A-Z_]"`` for uppercase characters plus underscore, and\r
+  so on (note that rangeSpec does not include support for generic regular\r
+  expressions, just string range specs)\r
+\r
+- ``getTokensEndLoc()`` - function to call from within a parse action to get\r
+  the ending location for the matched tokens\r
+\r
+- ``traceParseAction(fn)`` - decorator function to debug parse actions. Lists\r
+  each call, called arguments, and return value or exception\r
+\r
+\r
+\r
+Helper parse actions\r
+--------------------\r
+\r
+- ``removeQuotes`` - removes the first and last characters of a quoted string;\r
+  useful to remove the delimiting quotes from quoted strings\r
+\r
+- ``replaceWith(replString)`` - returns a parse action that simply returns the\r
+  replString; useful when using transformString, or converting HTML entities, as in::\r
+\r
+      nbsp = Literal("&nbsp;").setParseAction( replaceWith("<BLANK>") )\r
+\r
+- ``keepOriginalText``- (deprecated, use originalTextFor_ instead) restores any internal whitespace or suppressed\r
+  text within the tokens for a matched parse\r
+  expression.  This is especially useful when defining expressions\r
+  for scanString or transformString applications.\r
+\r
+- ``withAttribute( *args, **kwargs )`` - helper to create a validating parse action to be used with start tags created\r
+  with ``makeXMLTags`` or ``makeHTMLTags``. Use ``withAttribute`` to qualify a starting tag\r
+  with a required attribute value, to avoid false matches on common tags such as\r
+  ``<TD>`` or ``<DIV>``.\r
+\r
+  ``withAttribute`` can be called with:\r
+\r
+  - keyword arguments, as in ``(class="Customer",align="right")``, or\r
+\r
+  - a list of name-value tuples, as in ``( ("ns1:class", "Customer"), ("ns2:align","right") )``\r
+\r
+  An attribute can be specified to have the special value\r
+  ``withAttribute.ANY_VALUE``, which will match any value - use this to\r
+  ensure that an attribute is present but any attribute value is\r
+  acceptable.\r
+\r
+- ``downcaseTokens`` - converts all matched tokens to lowercase\r
+\r
+- ``upcaseTokens`` - converts all matched tokens to uppercase\r
+\r
+- ``matchOnlyAtCol( columnNumber )`` - a parse action that verifies that\r
+  an expression was matched at a particular column, raising a\r
+  ParseException if matching at a different column number; useful when parsing\r
+  tabular data\r
+\r
+\r
+\r
+Common string and token constants\r
+---------------------------------\r
+\r
+- ``alphas`` - same as ``string.letters``\r
+\r
+- ``nums`` - same as ``string.digits``\r
+\r
+- ``alphanums`` - a string containing ``alphas + nums``\r
+\r
+- ``alphas8bit`` - a string containing alphabetic 8-bit characters::\r
+\r
+    ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ\r
+\r
+- ``printables`` - same as ``string.printable``, minus the space (``' '``) character\r
+\r
+- ``empty`` - a global ``Empty()``; will always match\r
+\r
+- ``sglQuotedString`` - a string of characters enclosed in 's; may\r
+  include whitespace, but not newlines\r
+\r
+- ``dblQuotedString`` - a string of characters enclosed in "s; may\r
+  include whitespace, but not newlines\r
+\r
+- ``quotedString`` - ``sglQuotedString | dblQuotedString``\r
+\r
+- ``cStyleComment`` - a comment block delimited by ``'/*'`` and ``'*/'`` sequences; can span\r
+  multiple lines, but does not support nesting of comments\r
+\r
+- ``htmlComment`` - a comment block delimited by ``'<!--'`` and ``'-->'`` sequences; can span\r
+  multiple lines, but does not support nesting of comments\r
+\r
+- ``commaSeparatedList`` - similar to ``delimitedList``, except that the\r
+  list expressions can be any text value, or a quoted string; quoted strings can\r
+  safely include commas without incorrectly breaking the string into two tokens\r
+\r
+- ``restOfLine`` - all remaining printable characters up to but not including the next\r
+  newline\r
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644 (file)
index 0000000..d039bc2
--- /dev/null
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+SPHINXPROJ    = PyParsing
+SOURCEDIR     = .
+BUILDDIR      = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+       @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+       @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/_static/pyparsingClassDiagram.jpg b/docs/_static/pyparsingClassDiagram.jpg
new file mode 100644 (file)
index 0000000..ef10424
Binary files /dev/null and b/docs/_static/pyparsingClassDiagram.jpg differ
diff --git a/docs/_static/pyparsingClassDiagram.png b/docs/_static/pyparsingClassDiagram.png
new file mode 100644 (file)
index 0000000..f59baaf
Binary files /dev/null and b/docs/_static/pyparsingClassDiagram.png differ
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644 (file)
index 0000000..eaa817f
--- /dev/null
@@ -0,0 +1,181 @@
+# -*- coding: utf-8 -*-
+#
+# Configuration file for the Sphinx documentation builder.
+#
+# This file does only contain a selection of the most common options. For a
+# full list see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+import os
+import sys
+sys.path.insert(0, os.path.abspath('..'))
+
+from pyparsing import __version__ as pyparsing_version
+
+# -- Project information -----------------------------------------------------
+
+project = 'PyParsing'
+copyright = '2018, Paul T. McGuire'
+author = 'Paul T. McGuire'
+
+# The short X.Y version
+version = pyparsing_version
+# The full version, including alpha/beta/rc tags
+release = pyparsing_version
+
+
+# -- General configuration ---------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.autodoc',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path .
+exclude_patterns = []
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+# The default sidebars (for documents that don't match any pattern) are
+# defined by theme itself.  Builtin themes are using these templates by
+# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
+# 'searchbox.html']``.
+#
+# html_sidebars = {}
+
+
+# -- Options for HTMLHelp output ---------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'PyParsingdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'PyParsing.tex', 'PyParsing Documentation',
+     'Paul T. McGuire', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'pyparsing', 'PyParsing Documentation',
+     [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'PyParsing', 'PyParsing Documentation',
+     author, 'PyParsing', 'One line description of project.',
+     'Miscellaneous'),
+]
+
+
+# -- Options for Epub output -------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = project
+epub_author = author
+epub_publisher = author
+epub_copyright = copyright
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#
+# epub_identifier = ''
+
+# A unique identification for the text.
+#
+# epub_uid = ''
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ['search.html']
+
+
+# -- Extension configuration -------------------------------------------------
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644 (file)
index 0000000..f39b282
--- /dev/null
@@ -0,0 +1,24 @@
+.. PyParsing documentation master file, created by
+   sphinx-quickstart on Mon Nov 19 15:06:52 2018.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to PyParsing's documentation!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Release v\ |version|
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   HowToUsePyparsing
+   modules
+   CODE_OF_CONDUCT
+
+
+Indices and tables
+~~~~~~~~~~~~~~~~~~
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/modules.rst b/docs/modules.rst
new file mode 100644 (file)
index 0000000..6163a45
--- /dev/null
@@ -0,0 +1,7 @@
+pyparsing
+=========
+
+.. toctree::
+   :maxdepth: 4
+
+   pyparsing
diff --git a/docs/pyparsing.rst b/docs/pyparsing.rst
new file mode 100644 (file)
index 0000000..6d9d44c
--- /dev/null
@@ -0,0 +1,7 @@
+pyparsing module
+================
+
+.. automodule:: pyparsing
+    :members:
+    :undoc-members:
+    :show-inheritance:
index 303d44dda72cbf363b7a56aaabf0da9d07bb8155..adecdc8b4be2c384f2bed7622030797f67b5d9c3 100644 (file)
@@ -27,7 +27,7 @@ Unicode example to parse "Hello, World!" in Greek.
 <p>\r
 \r
 <li><a href="chemicalFormulas.py">chemicalFormulas.py</a><br>\r
-Simple example to demonstrate the use of ParseResults returned from parseString().  \r
+Simple example to demonstrate the use of ParseResults returned from parseString().\r
 Parses a chemical formula (such as "H2O" or "C6H5OH"), and walks the returned list of tokens to calculate the molecular weight.\r
 </li>\r
 <p>\r
@@ -124,7 +124,7 @@ Parser for CORBA IDL files.
 </li>\r
 <p>\r
 \r
-<li><a href="mozillaCalendarParser.py">mozillaCalendarParser.py</a> \r
+<li><a href="mozillaCalendarParser.py">mozillaCalendarParser.py</a>\r
 <i>~ submission by Petri Savolainen</i><br>\r
 Parser for Mozilla calendar (*.ics) files.\r
 </li>\r
@@ -167,19 +167,19 @@ example configuration file.
 <p>\r
 \r
 <li><a href="romanNumerals.py">romanNumerals.py</a><br>\r
-A Roman numeral generator and parser example, showing the power of parse actions \r
+A Roman numeral generator and parser example, showing the power of parse actions\r
 to compile Roman numerals into their integer values.\r
 </li>\r
 <p>\r
 \r
 <li><a href="removeLineBreaks.py">removeLineBreaks.py</a><br>\r
 A string transformer that converts text files with hard line-breaks into one with line breaks\r
-only between paragraphs.  Useful when converting downloads from \r
-<a href="http://www.gutenberg.org">Project Gutenberg</a> to import to word processing apps \r
+only between paragraphs.  Useful when converting downloads from\r
+<a href="https://www.gutenberg.org/">Project Gutenberg</a> to import to word processing apps\r
 that can reformat paragraphs once hard line-breaks are removed, or for loading into your Palm Pilot for portable perusal.\r
 <p>\r
-See <a href="Successful Methods of Public Speaking.txt">Successful Methods of Public Speaking.txt</a> and \r
-<a href="Successful Methods of Public Speaking(2).txt">Successful Methods of Public Speaking(2).txt</a> for a sample \r
+See <a href="Successful Methods of Public Speaking.txt">Successful Methods of Public Speaking.txt</a> and\r
+<a href="Successful Methods of Public Speaking(2).txt">Successful Methods of Public Speaking(2).txt</a> for a sample\r
 before and after (text file courtesy of Project Gutenberg).\r
 </li>\r
 <p>\r
@@ -190,13 +190,13 @@ An example program showing the utility of the listAllMatches option when specify
 <p>\r
 \r
 <li><a href="linenoExample.py">linenoExample.py</a><br>\r
-An example program showing how to use the string location to extract line and column numbers, or the \r
+An example program showing how to use the string location to extract line and column numbers, or the\r
 source line of text.\r
 </li>\r
 <p>\r
 \r
 <li><a href="parseListString.py">parseListString.py</a><br>\r
-An example program showing a progression of steps, how to parse a string representation of a Python \r
+An example program showing a progression of steps, how to parse a string representation of a Python\r
 list back into a true list.\r
 </li>\r
 <p>\r
@@ -208,7 +208,7 @@ returning a Python value of the original type.
 <p>\r
 \r
 <li><a href="indentedGrammarExample.py">indentedGrammarExample.py</a><br>\r
-An example program showing how to parse a grammar using indentation for grouping, \r
+An example program showing how to parse a grammar using indentation for grouping,\r
 such as is done in Python.\r
 </li>\r
 <p>\r
@@ -220,7 +220,7 @@ An example program showing how to use the new operatorPrecedence helper method t
 <p>\r
 \r
 <li><a href="simpleBool.py">simpleBool.py</a><br>\r
-An example program showing how to use the new operatorPrecedence helper method to define a \r
+An example program showing how to use the new operatorPrecedence helper method to define a\r
 boolean expression parser, with parse actions associated with each operator to "compile" the expression\r
 into a data structure that will evaluate the expression's boolean value.\r
 </li>\r
@@ -290,7 +290,7 @@ domain objects instead of just strings.
 \r
 <li><a href="datetimeParseActions.py">datetimeParseActions.py</a><br>\r
 <b>New in version 1.5.7</b><br>\r
-Parse actions example showing a parse action returning a datetime object instead of \r
+Parse actions example showing a parse action returning a datetime object instead of\r
 string tokens, and doing validation of the tokens, raising a ParseException if the\r
 given YYYY/MM/DD string does not represent a valid date.\r
 </li>\r
@@ -298,7 +298,7 @@ given YYYY/MM/DD string does not represent a valid date.
 \r
 <li><a href="position.py">position.py</a><br>\r
 <b>New in version 1.5.7</b><br>\r
-Demonstration of a couple of different ways to capture the location a particular \r
+Demonstration of a couple of different ways to capture the location a particular\r
 expression was found within the overall input string.\r
 </li>\r
 <p>\r
index ec75d6cb292df0c3f5cd007e16b8f9187572defb..41e8b4ff2d4805e0bfda65c595704f09aee3ea86 100644 (file)
@@ -4,11 +4,11 @@ Based on:  SimpleCalc.py example (author Paul McGuire) in pyparsing-1.3.3
 Author:    Mike Ellis\r
 Copyright: Ellis & Grant, Inc. 2005\r
 License:   You may freely use, modify, and distribute this software.\r
-Warranty:  THIS SOFTWARE HAS NO WARRANTY WHATSOEVER. USE AT YOUR OWN RISK. \r
+Warranty:  THIS SOFTWARE HAS NO WARRANTY WHATSOEVER. USE AT YOUR OWN RISK.\r
 Notes: Parses infix linear algebra (LA) notation for vectors, matrices, and scalars.\r
-       Output is C code function calls.  The parser can be run as an interactive \r
-       interpreter or included as module to use for in-place substitution into C files \r
-       containing LA equations.  \r
+       Output is C code function calls.  The parser can be run as an interactive\r
+       interpreter or included as module to use for in-place substitution into C files\r
+       containing LA equations.\r
 \r
        Supported operations are:\r
        OPERATION:              INPUT                    OUTPUT\r
@@ -34,34 +34,33 @@ Notes: Parses infix linear algebra (LA) notation for vectors, matrices, and scal
        Matrix determinant:     "a = M3_b^Det"           "a=mDeterminant(b)"\r
 \r
        The parser requires the expression to be an equation.  Each non-scalar variable\r
-       must be prefixed with a type tag, 'M3_' for 3x3 matrices and 'V3_' for 3-vectors. \r
-       For proper compilation of the C code, the variables need to be declared without \r
+       must be prefixed with a type tag, 'M3_' for 3x3 matrices and 'V3_' for 3-vectors.\r
+       For proper compilation of the C code, the variables need to be declared without\r
        the prefix as float[3] for vectors and float[3][3] for matrices. The operations do\r
        not modify any variables on the right-hand side of the equation.\r
 \r
-       Equations may include nested expressions within parentheses. The allowed binary \r
+       Equations may include nested expressions within parentheses. The allowed binary\r
        operators are '+-*/^' for scalars, and '+-*^@' for vectors and matrices with the\r
        meanings defined in the table above.\r
 \r
        Specifying an improper combination of operands, e.g. adding a vector to a matrix,\r
        is detected by the parser and results in a Python TypeError Exception. The usual cause\r
-       of this is omitting one or more tag prefixes. The parser knows nothing about a \r
-       a variable's C declaration and relies entirely on the type tags. Errors in C \r
+       of this is omitting one or more tag prefixes. The parser knows nothing about a\r
+       a variable's C declaration and relies entirely on the type tags. Errors in C\r
        declarations are not caught until compile time.\r
 \r
-Usage: To process LA equations embedded in source files, import this module and \r
+Usage: To process LA equations embedded in source files, import this module and\r
        pass input and output file objects to the fprocess() function.  You can\r
        can also invoke the parser from the command line, e.g. 'python LAparser.py',\r
        to run a small test suite and enter an interactive loop where you can enter\r
        LA equations and see the resulting C code.\r
-       \r
+\r
 """\r
 \r
-import re,os,sys\r
+import re,sys\r
 from pyparsing import Word, alphas, ParseException, Literal, CaselessLiteral \\r
-, Combine, Optional, nums, Or, Forward, OneOrMore, ZeroOrMore, \\r
-  FollowedBy, StringStart, StringEnd, alphanums\r
-import math\r
+, Combine, Optional, nums, Forward, ZeroOrMore, \\r
+  StringEnd, alphanums\r
 \r
 # Debugging flag can be set to either "debug_flag=True" or "debug_flag=False"\r
 debug_flag=False\r
@@ -87,7 +86,7 @@ def _assignVar( str, loc, toks ):
 point = Literal('.')\r
 e = CaselessLiteral('E')\r
 plusorminus = Literal('+') | Literal('-')\r
-number = Word(nums) \r
+number = Word(nums)\r
 integer = Combine( Optional(plusorminus) + number )\r
 floatnumber = Combine( integer +\r
                        Optional( point + Optional(number) ) +\r
@@ -103,7 +102,7 @@ ident = Forward()
 ## a ParseException.\r
 ident = Combine(Word(alphas + '-',alphanums + '_') + \\r
                 ZeroOrMore(lbracket + (Word(alphas + '-',alphanums + '_')|integer) + rbracket) \\r
-                ) \r
+                )\r
 \r
 plus  = Literal( "+" )\r
 minus = Literal( "-" )\r
@@ -118,14 +117,14 @@ expop = Literal( "^" )
 assignop = Literal( "=" )\r
 \r
 expr = Forward()\r
-atom = ( ( e | floatnumber | integer | ident  ).setParseAction(_pushFirst) | \r
+atom = ( ( e | floatnumber | integer | ident  ).setParseAction(_pushFirst) |\r
          ( lpar + expr.suppress() + rpar )\r
        )\r
 factor = Forward()\r
 factor << atom + ZeroOrMore( ( expop + factor ).setParseAction( _pushFirst ) )\r
-        \r
+\r
 term = factor + ZeroOrMore( ( multop + factor ).setParseAction( _pushFirst ) )\r
-expr << term + ZeroOrMore( ( addop + term ).setParseAction( _pushFirst ) ) \r
+expr << term + ZeroOrMore( ( addop + term ).setParseAction( _pushFirst ) )\r
 equation = (ident + assignop).setParseAction(_assignVar) + expr + StringEnd()\r
 \r
 # End of grammar definition\r
@@ -143,12 +142,12 @@ class UnaryUnsupportedError(Exception): pass
 \r
 def _isvec(ident):\r
    if ident[0] == '-' and ident[1:vplen+1] == vprefix:\r
-      raise UnaryUnsupportedError \r
+      raise UnaryUnsupportedError\r
    else: return ident[0:vplen] == vprefix\r
 \r
-def _ismat(ident): \r
+def _ismat(ident):\r
    if ident[0] == '-' and ident[1:mplen+1] == mprefix:\r
-      raise UnaryUnsupportedError \r
+      raise UnaryUnsupportedError\r
    else: return ident[0:mplen] == mprefix\r
 \r
 def _isscalar(ident): return not (_isvec(ident) or _ismat(ident))\r
@@ -163,41 +162,41 @@ def _isscalar(ident): return not (_isvec(ident) or _ismat(ident))
 ## nested function calls, e.g. "V3_a + V3_b*5"  yields "V3_vAdd(a,vScale(b,5)".  Note that prefixes are\r
 ## stripped from operands and function names within the argument list to the outer function and\r
 ## the appropriate prefix is placed on the outer function for removal later as the stack evaluation\r
-## recurses toward the final assignment statement.  \r
+## recurses toward the final assignment statement.\r
 \r
-def _addfunc(a,b): \r
+def _addfunc(a,b):\r
    if _isscalar(a) and _isscalar(b): return "(%s+%s)"%(a,b)\r
-   if _isvec(a) and _isvec(b): return "%svAdd(%s,%s)"%(vprefix,a[vplen:],b[vplen:]) \r
-   if _ismat(a) and _ismat(b): return "%smAdd(%s,%s)"%(mprefix,a[mplen:],b[mplen:]) \r
+   if _isvec(a) and _isvec(b): return "%svAdd(%s,%s)"%(vprefix,a[vplen:],b[vplen:])\r
+   if _ismat(a) and _ismat(b): return "%smAdd(%s,%s)"%(mprefix,a[mplen:],b[mplen:])\r
    else: raise TypeError\r
 \r
-def _subfunc(a,b):  \r
+def _subfunc(a,b):\r
    if _isscalar(a) and _isscalar(b): return "(%s-%s)"%(a,b)\r
-   if _isvec(a) and _isvec(b): return "%svSubtract(%s,%s)"%(vprefix,a[vplen:],b[vplen:]) \r
-   if _ismat(a) and _ismat(b): return "%smSubtract(%s,%s)"%(mprefix,a[mplen:],b[mplen:]) \r
+   if _isvec(a) and _isvec(b): return "%svSubtract(%s,%s)"%(vprefix,a[vplen:],b[vplen:])\r
+   if _ismat(a) and _ismat(b): return "%smSubtract(%s,%s)"%(mprefix,a[mplen:],b[mplen:])\r
    else: raise TypeError\r
 \r
-def _mulfunc(a,b):  \r
+def _mulfunc(a,b):\r
    if _isscalar(a) and _isscalar(b): return "%s*%s"%(a,b)\r
-   if _isvec(a) and _isvec(b):    return "vDot(%s,%s)"%(a[vplen:],b[vplen:]) \r
-   if _ismat(a) and _ismat(b):    return "%smMultiply(%s,%s)"%(mprefix,a[mplen:],b[mplen:]) \r
-   if _ismat(a) and _isvec(b):    return "%smvMultiply(%s,%s)"%(vprefix,a[mplen:],b[vplen:]) \r
-   if _ismat(a) and _isscalar(b): return "%smScale(%s,%s)"%(mprefix,a[mplen:],b) \r
-   if _isvec(a) and _isscalar(b): return "%svScale(%s,%s)"%(vprefix,a[mplen:],b) \r
+   if _isvec(a) and _isvec(b):    return "vDot(%s,%s)"%(a[vplen:],b[vplen:])\r
+   if _ismat(a) and _ismat(b):    return "%smMultiply(%s,%s)"%(mprefix,a[mplen:],b[mplen:])\r
+   if _ismat(a) and _isvec(b):    return "%smvMultiply(%s,%s)"%(vprefix,a[mplen:],b[vplen:])\r
+   if _ismat(a) and _isscalar(b): return "%smScale(%s,%s)"%(mprefix,a[mplen:],b)\r
+   if _isvec(a) and _isscalar(b): return "%svScale(%s,%s)"%(vprefix,a[mplen:],b)\r
    else: raise TypeError\r
 \r
 def _outermulfunc(a,b):\r
    ## The '@' operator is used for the vector outer product.\r
-   if _isvec(a) and _isvec(b): \r
+   if _isvec(a) and _isvec(b):\r
      return "%svOuterProduct(%s,%s)"%(mprefix,a[vplen:],b[vplen:])\r
    else: raise TypeError\r
 \r
 def _divfunc(a,b):\r
-   ## The '/' operator is used only for scalar division  \r
+   ## The '/' operator is used only for scalar division\r
    if _isscalar(a) and _isscalar(b): return "%s/%s"%(a,b)\r
    else: raise TypeError\r
 \r
-def _expfunc(a,b):  \r
+def _expfunc(a,b):\r
   ## The '^' operator is used for exponentiation on scalars and\r
   ## as a marker for unary operations on vectors and matrices.\r
   if _isscalar(a) and _isscalar(b): return "pow(%s,%s)"%(str(a),str(b))\r
@@ -208,17 +207,17 @@ def _expfunc(a,b):
   if _isvec(a) and b=='Mag2':       return "vMagnitude2(%s)"%(a[vplen:])\r
   else: raise TypeError\r
 \r
-def _assignfunc(a,b): \r
+def _assignfunc(a,b):\r
    ## The '=' operator is used for assignment\r
    if _isscalar(a) and _isscalar(b): return "%s=%s"%(a,b)\r
-   if _isvec(a) and _isvec(b): return "vCopy(%s,%s)"%(a[vplen:],b[vplen:]) \r
-   if _ismat(a) and _ismat(b): return "mCopy(%s,%s)"%(a[mplen:],b[mplen:]) \r
+   if _isvec(a) and _isvec(b): return "vCopy(%s,%s)"%(a[vplen:],b[vplen:])\r
+   if _ismat(a) and _ismat(b): return "mCopy(%s,%s)"%(a[mplen:],b[mplen:])\r
    else: raise TypeError\r
 \r
 ## End of BIO func definitions\r
 ##----------------------------------------------------------------------------\r
 \r
-# Map  operator symbols to corresponding BIO funcs \r
+# Map  operator symbols to corresponding BIO funcs\r
 opn = { "+" : ( _addfunc ),\r
         "-" : ( _subfunc ),\r
         "*" : ( _mulfunc ),\r
@@ -237,25 +236,25 @@ def _evaluateStack( s ):
     result = opn[op]( op1, op2 )\r
     if debug_flag: print(result)\r
     return result\r
-  else: \r
+  else:\r
     return op\r
 \r
 ##----------------------------------------------------------------------------\r
 # The parse function that invokes all of the above.\r
 def parse(input_string):\r
     """\r
-    Accepts an input string containing an LA equation, e.g., \r
+    Accepts an input string containing an LA equation, e.g.,\r
     "M3_mymatrix = M3_anothermatrix^-1" returns C code function\r
     calls that implement the expression.\r
     """\r
-    \r
+\r
     global  exprStack\r
     global targetvar\r
 \r
     # Start with a blank exprStack and a blank targetvar\r
     exprStack = []\r
     targetvar=None\r
-  \r
+\r
     if input_string != '':\r
       # try parsing the input string\r
       try:\r
@@ -266,14 +265,14 @@ def parse(input_string):
         print(" "*(err.column-1) + "^", file=sys.stderr)\r
         print(err, file=sys.stderr)\r
         raise\r
-      \r
+\r
       # show result of parsing the input string\r
-      if debug_flag: \r
+      if debug_flag:\r
         print(input_string, "->", L)\r
         print("exprStack=", exprStack)\r
-  \r
+\r
       # Evaluate the stack of parsed operands, emitting C code.\r
-      try: \r
+      try:\r
         result=_evaluateStack(exprStack)\r
       except TypeError:\r
         print("Unsupported operation on right side of '%s'.\nCheck for missing or incorrect tags on non-scalar operands."%input_string, file=sys.stderr)\r
@@ -281,8 +280,8 @@ def parse(input_string):
       except UnaryUnsupportedError:\r
         print("Unary negation is not supported for vectors and matrices: '%s'"%input_string, file=sys.stderr)\r
         raise\r
-  \r
-      # Create final assignment and print it. \r
+\r
+      # Create final assignment and print it.\r
       if debug_flag: print("var=",targetvar)\r
       if targetvar != None:\r
           try:\r
@@ -311,22 +310,22 @@ def fprocess(infilep,outfilep):
 \r
    Other text in the file is unaltered.\r
 \r
-   The arguments are file objects (NOT file names) opened for reading and \r
+   The arguments are file objects (NOT file names) opened for reading and\r
    writing, respectively.\r
    """\r
    pattern = r'\[\[\s*(.*?)\s*\]\]'\r
    eqn = re.compile(pattern,re.DOTALL)\r
    s = infilep.read()\r
-   def parser(mo): \r
+   def parser(mo):\r
       ccode = parse(mo.group(1))\r
       return "/* %s */\n%s;\nLAParserBufferReset();\n"%(mo.group(1),ccode)\r
 \r
    content = eqn.sub(parser,s)\r
    outfilep.write(content)\r
\r
+\r
 ##-----------------------------------------------------------------------------------\r
 def test():\r
-   """ \r
+   """\r
    Tests the parsing of various supported expressions. Raises\r
    an AssertError if the output is not what is expected. Prints the\r
    input, expected output, and actual output for all tests.\r
@@ -357,9 +356,9 @@ def test():
      ("Vector magnitude","a = V3_b^Mag","a=sqrt(vMagnitude2(b))"),\r
      ("Complicated expression", "myscalar = (M3_amatrix * V3_bvector)^Mag + 5*(-xyz[i] + 2.03^2)","myscalar=(sqrt(vMagnitude2(mvMultiply(amatrix,bvector)))+5*(-xyz[i]+pow(2.03,2)))"),\r
      ("Complicated Multiline", "myscalar = \n(M3_amatrix * V3_bvector)^Mag +\n 5*(xyz + 2.03^2)","myscalar=(sqrt(vMagnitude2(mvMultiply(amatrix,bvector)))+5*(xyz+pow(2.03,2)))")\r
-      \r
+\r
      ]\r
-   \r
+\r
    for t in testcases:\r
       name,input,expected = t\r
       print(name)\r
@@ -369,13 +368,13 @@ def test():
       print("   %s received"%result)\r
       print("")\r
       assert expected == result\r
-    \r
+\r
    ##TODO: Write testcases with invalid expressions and test that the expected\r
    ## exceptions are raised.\r
 \r
    print("Tests completed!")\r
 ##----------------------------------------------------------------------------\r
-## The following is executed only when this module is executed as \r
+## The following is executed only when this module is executed as\r
 ## command line script.  It runs a small test suite (see above)\r
 ## and then enters an interactive loop where you\r
 ## can enter expressions and see the resulting C code as output.\r
@@ -386,7 +385,7 @@ if __name__ == '__main__':
 \r
   # input_string\r
   input_string=''\r
-  \r
+\r
   # Display instructions on how to use the program interactively\r
   interactiveusage = """\r
   Entering interactive mode:\r
@@ -396,7 +395,7 @@ if __name__ == '__main__':
   """\r
   print(interactiveusage)\r
   input_string = input("> ")\r
-  \r
+\r
   while input_string != 'quit':\r
     if input_string == "debug on":\r
        debug_flag = True\r
@@ -405,13 +404,11 @@ if __name__ == '__main__':
     else:\r
       try:\r
         print(parse(input_string))\r
-      except:\r
-        pass \r
+      except Exception:\r
+        pass\r
 \r
     # obtain new input string\r
     input_string = input("> ")\r
-  \r
+\r
   # if user types 'quit' then say goodbye\r
   print("Good bye!")\r
-\r
-\r
index 4574b1c7b440093268c023d958453fdc59daaf49..a08016cec0e75bd5f5444e71147d874500117de3 100644 (file)
@@ -21,7 +21,7 @@ RemString1=Set up has finished remove ESS device driver and cleaned your system.
 RemString2=ESS devices is removed completely.No need to reboot. If you want to reinstall, run the setup again with driver package.\r
 stshowmsg1=Setup will clean the installed files and update registry.\r
 stshowmsg2=Setup is updating system's registry ....\r
-stshowmsg3=Setup is starting \r
+stshowmsg3=Setup is starting\r
 \r
 sysdriver=es56cvmp.sys\r
 mdmzn=mdmm3com.inf\r
@@ -34,7 +34,7 @@ audiocat=allem3.cat
 audioinf=M3i\r
 sysaudio=es198xdl.sys\r
 audiovxd=es198x.vxd\r
\r
+\r
 [Languages]\r
 Default=0x0009\r
 count=30\r
index 0bf62e44f7d2fcdc469093c82f084700aa0a56c9..15a18170daabde88f6950ff31979cf3f9aaf6b01 100644 (file)
@@ -1,31 +1,31 @@
 # SimpleCalc.py\r
 #\r
-# Demonstration of the parsing module, \r
+# Demonstration of the parsing module,\r
 # Sample usage\r
 #\r
-#     $ python SimpleCalc.py \r
+#     $ python SimpleCalc.py\r
 #     Type in the string to be parse or 'quit' to exit the program\r
-#     > g=67.89 + 7/5 \r
+#     > g=67.89 + 7/5\r
 #     69.29\r
 #     > g\r
 #     69.29\r
-#     > h=(6*g+8.8)-g \r
+#     > h=(6*g+8.8)-g\r
 #     355.25\r
-#     > h + 1 \r
+#     > h + 1\r
 #     356.25\r
-#     > 87.89 + 7/5 \r
+#     > 87.89 + 7/5\r
 #     89.29\r
 #     > ans+10\r
 #     99.29\r
 #     > quit\r
 #     Good bye!\r
 #\r
-# \r
+#\r
 \r
 \r
 \r
 # Uncomment the line below for readline support on interactive terminal\r
-# import readline  \r
+# import readline\r
 from pyparsing import ParseException, Word, alphas, alphanums\r
 import math\r
 \r
@@ -64,11 +64,11 @@ pattern = assignment | arithExpr
 if __name__ == '__main__':\r
   # input_string\r
   input_string=''\r
-  \r
+\r
   # Display instructions on how to quit the program\r
   print("Type in the string to be parsed or 'quit' to exit the program")\r
   input_string = input("> ")\r
-  \r
+\r
   while input_string.strip().lower() != 'quit':\r
     if input_string.strip().lower() == 'debug':\r
         debug_flag=True\r
@@ -77,19 +77,19 @@ if __name__ == '__main__':
 \r
     # Reset to an empty exprStack\r
     del exprStack[:]\r
-  \r
+\r
     if input_string != '':\r
       # try parsing the input string\r
       try:\r
         L=pattern.parseString(input_string, parseAll=True)\r
       except ParseException as err:\r
         L=['Parse Failure', input_string, (str(err), err.line, err.column)]\r
-      \r
+\r
       # show result of parsing the input string\r
       if debug_flag: print(input_string, "->", L)\r
       if len(L)==0 or L[0] != 'Parse Failure':\r
         if debug_flag: print("exprStack=", exprStack)\r
-  \r
+\r
         # calculate result , store a copy in ans , display the result to user\r
         try:\r
           result=evaluateStack(exprStack)\r
@@ -98,7 +98,7 @@ if __name__ == '__main__':
         else:\r
           variables['ans']=result\r
           print(result)\r
-      \r
+\r
           # Assign result to a variable if required\r
           if L.varname:\r
             variables[L.varname] = result\r
@@ -109,11 +109,9 @@ if __name__ == '__main__':
         print(err_line)\r
         print(" "*(err_col-1) + "^")\r
         print(err_str)\r
-  \r
+\r
     # obtain new input string\r
     input_string = input("> ")\r
-  \r
+\r
   # if user type 'quit' then say goodbye\r
   print("Good bye!")\r
-\r
-\r
index 7a5273488690c7d31165ecbf182162440708cb46..f036e5e878808e565c0bc034300145e9f7698dc7 100644 (file)
@@ -75,7 +75,7 @@ object Form1: TForm1
     Connection.Params.Strings = (\r
       'BlobSize=-1'\r
       'CommitRetain=False'\r
-      \r
+\r
         'Database=C:\Program Files\Common Files\Borland Shared\Data\emplo' +\r
         'yee.gdb'\r
       'DriverName=Interbase'\r
index 139e47c3c2e65ec328932b916f4c8149bba77dd7..18f57fdca851d8b7ec707a545d4ed918148ce45c 100644 (file)
@@ -3,7 +3,7 @@
 #\r
 # A pyparsing parser to process the output of the Perl\r
 #   "Test Anything Protocol"\r
-#   (http://search.cpan.org/~petdance/TAP-1.00/TAP.pm)\r
+#   (https://metacpan.org/pod/release/PETDANCE/TAP-1.00/TAP.pm)\r
 #\r
 # TAP output lines are preceded or followed by a test number range:\r
 #   1..n\r
@@ -43,8 +43,8 @@ description = Regex("[^#\n]+")
 description.setParseAction(lambda t:t[0].lstrip('- '))\r
 \r
 TODO,SKIP = map(CaselessLiteral,'TODO SKIP'.split())\r
-directive = Group(Suppress('#') + (TODO + restOfLine | \r
-    FollowedBy(SKIP) + \r
+directive = Group(Suppress('#') + (TODO + restOfLine |\r
+    FollowedBy(SKIP) +\r
         restOfLine.copy().setParseAction(lambda t:['SKIP',t[0]]) ))\r
 \r
 commentLine = Suppress("#") + empty + restOfLine\r
@@ -52,11 +52,11 @@ commentLine = Suppress("#") + empty + restOfLine
 testLine = Group(\r
     Optional(OneOrMore(commentLine + NL))("comments") +\r
     testStatus("passed") +\r
-    Optional(integer)("testNumber") + \r
-    Optional(description)("description") + \r
+    Optional(integer)("testNumber") +\r
+    Optional(description)("description") +\r
     Optional(directive)("directive")\r
     )\r
-bailLine = Group(Literal("Bail out!")("BAIL") + \r
+bailLine = Group(Literal("Bail out!")("BAIL") +\r
                     empty + Optional(restOfLine)("reason"))\r
 \r
 tapOutputParser = Optional(Group(plan)("plan") + NL) & \\r
@@ -89,7 +89,7 @@ class TAPSummary(object):
             expected = list(range(1, int(results.plan.ubound)+1))\r
         else:\r
             expected = list(range(1,len(results.tests)+1))\r
-        \r
+\r
         for i,res in enumerate(results.tests):\r
             # test for bail out\r
             if res.BAIL:\r
@@ -99,7 +99,7 @@ class TAPSummary(object):
                 self.skippedTests += [ TAPTest.bailedTest(ii) for ii in expected[i:] ]\r
                 self.bailReason = res.reason\r
                 break\r
-            \r
+\r
             #~ print res.dump()\r
             testnum = i+1\r
             if res.testNumber != "":\r
@@ -109,16 +109,16 @@ class TAPSummary(object):
             res["testNumber"] = testnum\r
 \r
             test = TAPTest(res)\r
-            if test.passed: \r
+            if test.passed:\r
                 self.passedTests.append(test)\r
             else:\r
                 self.failedTests.append(test)\r
             if test.skipped: self.skippedTests.append(test)\r
             if test.todo: self.todoTests.append(test)\r
             if test.todo and test.passed: self.bonusTests.append(test)\r
-            \r
+\r
         self.passedSuite = not self.bail and (set(self.failedTests)-set(self.todoTests) == set())\r
-    \r
+\r
     def summary(self, showPassed=False, showAll=False):\r
         testListStr = lambda tl : "[" + ",".join(str(t.num) for t in tl) + "]"\r
         summaryText = []\r
index cdc618e81405857dbf9c01a4044d15db756f8655..8dee391818c3ee52b6b6c71cd88ae0f46757103e 100644 (file)
@@ -10,10 +10,10 @@ import string
 \r
 def aOrAn( item ):\r
     if item.desc[0] in "aeiou":\r
-        return "an " + item.desc \r
+        return "an " + item.desc\r
     else:\r
         return "a " + item.desc\r
-    \r
+\r
 def enumerateItems(l):\r
     if len(l) == 0: return "nothing"\r
     out = []\r
@@ -31,33 +31,33 @@ def enumerateDoors(l):
         out.append("and")\r
     out.append(l[-1])\r
     return " ".join(out)\r
-    \r
+\r
 class Room(object):\r
     def __init__(self, desc):\r
         self.desc = desc\r
         self.inv = []\r
         self.gameOver = False\r
         self.doors = [None,None,None,None]\r
-    \r
+\r
     def __getattr__(self,attr):\r
         return \\r
-            { \r
+            {\r
             "n":self.doors[0],\r
             "s":self.doors[1],\r
             "e":self.doors[2],\r
             "w":self.doors[3],\r
             }[attr]\r
-                \r
+\r
     def enter(self,player):\r
         if self.gameOver:\r
             player.gameOver = True\r
-        \r
+\r
     def addItem(self, it):\r
         self.inv.append(it)\r
-    \r
+\r
     def removeItem(self,it):\r
         self.inv.remove(it)\r
-        \r
+\r
     def describe(self):\r
         print(self.desc)\r
         visibleItems = [ it for it in self.inv if it.isVisible ]\r
@@ -66,15 +66,15 @@ class Room(object):
                 is_form = "are"\r
             else:\r
                 is_form = "is"\r
-            print("There {} {} here.".format(is_form, enumerateItems(visibleItems)))\r
+            print("There {0} {1} here.".format(is_form, enumerateItems(visibleItems)))\r
         else:\r
             print("You see %s." % (enumerateItems(visibleItems)))\r
-            \r
+\r
 \r
 class Exit(Room):\r
     def __init__(self):\r
         super(Exit,self).__init__("")\r
-    \r
+\r
     def enter(self,player):\r
         player.gameOver = True\r
 \r
@@ -94,10 +94,10 @@ class Item(object):
         self.usableConditionTest = None\r
         self.cantTakeMessage = "You can't take that!"\r
         Item.items[desc] = self\r
-        \r
+\r
     def __str__(self):\r
         return self.desc\r
-        \r
+\r
     def breakItem(self):\r
         if not self.isBroken:\r
             print("<Crash!>")\r
@@ -109,7 +109,7 @@ class Item(object):
             return self.usableConditionTest( player, target )\r
         else:\r
             return False\r
-        \r
+\r
     def useItem(self, player, target):\r
         if self.useAction:\r
             self.useAction(player, self, target)\r
@@ -126,7 +126,7 @@ class OpenableItem(Item):
                 self.contents = contents\r
         else:\r
             self.contents = []\r
-    \r
+\r
     def openItem(self, player):\r
         if not self.isOpened:\r
             self.isOpened = not self.isOpened\r
@@ -135,7 +135,7 @@ class OpenableItem(Item):
                     player.room.addItem( item )\r
                 self.contents = []\r
             self.desc = "open " + self.desc\r
-    \r
+\r
     def closeItem(self, player):\r
         if self.isOpened:\r
             self.isOpened = not self.isOpened\r
@@ -152,10 +152,10 @@ class Command(object):
     @staticmethod\r
     def helpDescription():\r
         return ""\r
-        \r
+\r
     def _doCommand(self, player):\r
         pass\r
-    \r
+\r
     def __call__(self, player ):\r
         print(self.verbProg.capitalize()+"...")\r
         self._doCommand(player)\r
@@ -168,12 +168,12 @@ class MoveCommand(Command):
 \r
     @staticmethod\r
     def helpDescription():\r
-        return """MOVE or GO - go NORTH, SOUTH, EAST, or WEST \r
+        return """MOVE or GO - go NORTH, SOUTH, EAST, or WEST\r
           (can abbreviate as 'GO N' and 'GO W', or even just 'E' and 'S')"""\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
-        nextRoom = rm.doors[ \r
+        nextRoom = rm.doors[\r
             {\r
             "N":0,\r
             "S":1,\r
@@ -195,7 +195,7 @@ class TakeCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "TAKE or PICKUP or PICK UP - pick up an object (but some are deadly)"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         subj = Item.items[self.subject]\r
@@ -217,7 +217,7 @@ class DropCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "DROP or LEAVE - drop an object (but fragile items may break)"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         subj = Item.items[self.subject]\r
@@ -234,7 +234,7 @@ class InventoryCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "INVENTORY or INV or I - lists what items you have"\r
-        \r
+\r
     def _doCommand(self, player):\r
         print("You have %s." % enumerateItems( player.inv ))\r
 \r
@@ -245,7 +245,7 @@ class LookCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "LOOK or L - describes the current room and any objects in it"\r
-        \r
+\r
     def _doCommand(self, player):\r
         player.room.describe()\r
 \r
@@ -256,7 +256,7 @@ class DoorsCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "DOORS - display what doors are visible from this room"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         numDoors = sum([1 for r in rm.doors if r is not None])\r
@@ -267,7 +267,7 @@ class DoorsCommand(Command):
                 reply = "There is a door to the "\r
             else:\r
                 reply = "There are doors to the "\r
-            doorNames = [ {0:"north", 1:"south", 2:"east", 3:"west"}[i] \r
+            doorNames = [ {0:"north", 1:"south", 2:"east", 3:"west"}[i]\r
                           for i,d in enumerate(rm.doors) if d is not None ]\r
             #~ print doorNames\r
             reply += enumerateDoors( doorNames )\r
@@ -286,7 +286,7 @@ class UseCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "USE or U - use an object, optionally IN or ON another object"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         availItems = rm.inv + player.inv\r
@@ -306,7 +306,7 @@ class OpenCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "OPEN or O - open an object"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         availItems = rm.inv+player.inv\r
@@ -329,7 +329,7 @@ class CloseCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "CLOSE or CL - close an object"\r
-        \r
+\r
     def _doCommand(self, player):\r
         rm = player.room\r
         availItems = rm.inv+player.inv\r
@@ -351,7 +351,7 @@ class QuitCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "QUIT or Q - ends the game"\r
-        \r
+\r
     def _doCommand(self, player):\r
         print("Ok....")\r
         player.gameOver = True\r
@@ -363,7 +363,7 @@ class HelpCommand(Command):
     @staticmethod\r
     def helpDescription():\r
         return "HELP or H or ? - displays this help message"\r
-        \r
+\r
     def _doCommand(self, player):\r
         print("Enter any of the following commands (not case sensitive):")\r
         for cmd in [\r
@@ -388,28 +388,28 @@ class AppParseException(ParseException):
 class Parser(object):\r
     def __init__(self):\r
         self.bnf = self.makeBNF()\r
-        \r
+\r
     def makeBNF(self):\r
-        invVerb = oneOf("INV INVENTORY I", caseless=True) \r
-        dropVerb = oneOf("DROP LEAVE", caseless=True) \r
+        invVerb = oneOf("INV INVENTORY I", caseless=True)\r
+        dropVerb = oneOf("DROP LEAVE", caseless=True)\r
         takeVerb = oneOf("TAKE PICKUP", caseless=True) | \\r
             (CaselessLiteral("PICK") + CaselessLiteral("UP") )\r
         moveVerb = oneOf("MOVE GO", caseless=True) | empty\r
-        useVerb = oneOf("USE U", caseless=True) \r
+        useVerb = oneOf("USE U", caseless=True)\r
         openVerb = oneOf("OPEN O", caseless=True)\r
         closeVerb = oneOf("CLOSE CL", caseless=True)\r
-        quitVerb = oneOf("QUIT Q", caseless=True) \r
-        lookVerb = oneOf("LOOK L", caseless=True) \r
+        quitVerb = oneOf("QUIT Q", caseless=True)\r
+        lookVerb = oneOf("LOOK L", caseless=True)\r
         doorsVerb = CaselessLiteral("DOORS")\r
         helpVerb = oneOf("H HELP ?",caseless=True)\r
-        \r
+\r
         itemRef = OneOrMore(Word(alphas)).setParseAction( self.validateItemName )\r
         nDir = oneOf("N NORTH",caseless=True).setParseAction(replaceWith("N"))\r
         sDir = oneOf("S SOUTH",caseless=True).setParseAction(replaceWith("S"))\r
         eDir = oneOf("E EAST",caseless=True).setParseAction(replaceWith("E"))\r
         wDir = oneOf("W WEST",caseless=True).setParseAction(replaceWith("W"))\r
         moveDirection = nDir | sDir | eDir | wDir\r
-        \r
+\r
         invCommand = invVerb\r
         dropCommand = dropVerb + itemRef("item")\r
         takeCommand = takeVerb + itemRef("item")\r
@@ -423,7 +423,7 @@ class Parser(object):
         lookCommand = lookVerb\r
         doorsCommand = doorsVerb\r
         helpCommand = helpVerb\r
-        \r
+\r
         # attach command classes to expressions\r
         invCommand.setParseAction(InventoryCommand)\r
         dropCommand.setParseAction(DropCommand)\r
@@ -438,18 +438,18 @@ class Parser(object):
         helpCommand.setParseAction(HelpCommand)\r
 \r
         # define parser using all command expressions\r
-        return ( invCommand | \r
+        return ( invCommand |\r
                   useCommand |\r
-                  openCommand | \r
-                  closeCommand | \r
-                  dropCommand | \r
-                  takeCommand | \r
-                  moveCommand | \r
-                  lookCommand | \r
-                  doorsCommand | \r
+                  openCommand |\r
+                  closeCommand |\r
+                  dropCommand |\r
+                  takeCommand |\r
+                  moveCommand |\r
+                  lookCommand |\r
+                  doorsCommand |\r
                   helpCommand |\r
                   quitCommand )("command") + LineEnd()\r
-    \r
+\r
     def validateItemName(self,s,l,t):\r
         iname = " ".join(t)\r
         if iname not in Item.items:\r
@@ -468,13 +468,13 @@ class Parser(object):
                                    "Excuse me?",\r
                                    "???",\r
                                    "What?" ] ))\r
-    \r
+\r
 class Player(object):\r
     def __init__(self, name):\r
         self.name = name\r
         self.gameOver = False\r
         self.inv = []\r
-    \r
+\r
     def moveTo(self, rm):\r
         self.room = rm\r
         rm.enter(self)\r
@@ -484,33 +484,33 @@ class Player(object):
             print("Game over!")\r
         else:\r
             rm.describe()\r
-    \r
+\r
     def take(self,it):\r
         if it.isDeadly:\r
             print("Aaaagh!...., the %s killed me!" % it)\r
             self.gameOver = True\r
         else:\r
             self.inv.append(it)\r
-    \r
+\r
     def drop(self,it):\r
         self.inv.remove(it)\r
         if it.isFragile:\r
             it.breakItem()\r
-        \r
+\r
 \r
 def createRooms( rm ):\r
     """\r
     create rooms, using multiline string showing map layout\r
     string contains symbols for the following:\r
-     A-Z, a-z indicate rooms, and rooms will be stored in a dictionary by \r
+     A-Z, a-z indicate rooms, and rooms will be stored in a dictionary by\r
                reference letter\r
      -, | symbols indicate connection between rooms\r
      <, >, ^, . symbols indicate one-way connection between rooms\r
     """\r
     # start with empty dictionary of rooms\r
     ret = {}\r
-    \r
-    # look for room symbols, and initialize dictionary \r
+\r
+    # look for room symbols, and initialize dictionary\r
     # - exit room is always marked 'Z'\r
     for c in rm:\r
         if c in string.ascii_letters:\r
@@ -529,9 +529,9 @@ def createRooms( rm ):
                 s = None\r
                 e = None\r
                 w = None\r
-                \r
+\r
                 # look in neighboring cells for connection symbols (must take\r
-                # care to guard that neighboring cells exist before testing \r
+                # care to guard that neighboring cells exist before testing\r
                 # contents)\r
                 if col > 0 and line[col-1] in "<-":\r
                     other = line[col-2]\r
index 76c681c7d4701b42318b6e42e4053b8ffc86b231..e25ff7f87709433ec2bd830d7f6e4fef62d23f9a 100644 (file)
@@ -10,7 +10,7 @@ Submitted by Luca DallOlio, September, 2010
 '''\r
 from pyparsing import Word, ZeroOrMore, printables, Suppress, OneOrMore, Group, \\r
     LineEnd, Optional, White, originalTextFor, hexnums, nums, Combine, Literal, Keyword, \\r
-    cStyleComment, Regex, Forward, MatchFirst, And, srange, oneOf, alphas, alphanums, \\r
+    cStyleComment, Regex, Forward, MatchFirst, And, oneOf, alphas, alphanums, \\r
     delimitedList\r
 \r
 # http://www.antlr.org/grammar/ANTLR/ANTLRv3.g\r
@@ -23,14 +23,14 @@ INT = Word(nums)
 ESC = Literal('\\') + (oneOf(list(r'nrtbf\">'+"'")) | ('u' + Word(hexnums, exact=4)) | Word(printables, exact=1))\r
 LITERAL_CHAR = ESC | ~(Literal("'") | Literal('\\')) + Word(printables, exact=1)\r
 CHAR_LITERAL = Suppress("'") + LITERAL_CHAR + Suppress("'")\r
-STRING_LITERAL = Suppress("'") + Combine(OneOrMore(LITERAL_CHAR)) + Suppress("'") \r
+STRING_LITERAL = Suppress("'") + Combine(OneOrMore(LITERAL_CHAR)) + Suppress("'")\r
 DOUBLE_QUOTE_STRING_LITERAL = '"' + ZeroOrMore(LITERAL_CHAR) + '"'\r
 DOUBLE_ANGLE_STRING_LITERAL = '<<' + ZeroOrMore(Word(printables, exact=1)) + '>>'\r
 TOKEN_REF = Word(alphas.upper(), alphanums+'_')\r
 RULE_REF = Word(alphas.lower(), alphanums+'_')\r
 ACTION_ESC = (Suppress("\\") + Suppress("'")) | Suppress('\\"') | Suppress('\\') + (~(Literal("'") | Literal('"')) + Word(printables, exact=1))\r
 ACTION_CHAR_LITERAL = Suppress("'") + (ACTION_ESC | ~(Literal('\\') | Literal("'")) + Word(printables, exact=1)) + Suppress("'")\r
-ACTION_STRING_LITERAL = Suppress('"') + ZeroOrMore(ACTION_ESC | ~(Literal('\\') | Literal('"')) + Word(printables, exact=1)) + Suppress('"') \r
+ACTION_STRING_LITERAL = Suppress('"') + ZeroOrMore(ACTION_ESC | ~(Literal('\\') | Literal('"')) + Word(printables, exact=1)) + Suppress('"')\r
 SRC = Suppress('src') + ACTION_STRING_LITERAL("file") + INT("line")\r
 id = TOKEN_REF | RULE_REF\r
 SL_COMMENT = Suppress('//') + Suppress('$ANTLR') + SRC | ZeroOrMore(~EOL + Word(printables)) + EOL\r
@@ -91,7 +91,7 @@ rewrite = Optional(Literal('TODO REWRITE RULES TODO'))
 block << Suppress('(') + Optional(Optional(optionsSpec("opts")) + Suppress(':')) + Group(alternative('a1') + rewrite + Group(ZeroOrMore(Suppress('|') + alternative('a2') + rewrite))("alternatives"))("block") + Suppress(')')\r
 altList = alternative('a1') + rewrite + Group(ZeroOrMore(Suppress('|') + alternative('a2') + rewrite))("alternatives")\r
 exceptionHandler = Suppress('catch') + ARG_ACTION + ACTION\r
-finallyClause = Suppress('finally') + ACTION \r
+finallyClause = Suppress('finally') + ACTION\r
 exceptionGroup = (OneOrMore(exceptionHandler) + Optional(finallyClause)) | finallyClause\r
 \r
 ruleHeading = Optional(ML_COMMENT)("ruleComment") + Optional(modifier)("modifier") + id("ruleName") + Optional("!") + Optional(ARG_ACTION("arg")) + Optional(Suppress('returns') + ARG_ACTION("rt")) + Optional(throwsSpec) + Optional(optionsSpec) + Optional(ruleScopeSpec) + ZeroOrMore(ruleAction)\r
@@ -125,7 +125,7 @@ def __antlrAlternativeConverter(pyparsingRules, antlrAlternative):
             regex = r'['+str(element.atom.c1[0])+'-'+str(element.atom.c2[0]+']')\r
             rule = Regex(regex)("anonymous_regex")\r
         elif hasattr(element, 'block') and element.block != '':\r
-            rule = __antlrAlternativesConverter(pyparsingRules, element.block)        \r
+            rule = __antlrAlternativesConverter(pyparsingRules, element.block)\r
         else:\r
             ruleRef = element.atom\r
             assert ruleRef in pyparsingRules\r
@@ -145,7 +145,7 @@ def __antlrAlternativeConverter(pyparsingRules, antlrAlternative):
         rule = Group(And(elementList))("anonymous_and")\r
     else:\r
         rule = elementList[0]\r
-    assert rule != None        \r
+    assert rule != None\r
     return rule\r
 \r
 def __antlrRuleConverter(pyparsingRules, antlrRule):\r
@@ -169,11 +169,11 @@ def antlrConverter(antlrGrammarTree):
     for antlrRuleName, antlrRule in list(antlrRules.items()):\r
         pyparsingRule = __antlrRuleConverter(pyparsingRules, antlrRule)\r
         assert pyparsingRule != None\r
-        pyparsingRules[antlrRuleName] << pyparsingRule \r
+        pyparsingRules[antlrRuleName] << pyparsingRule\r
     return pyparsingRules\r
 \r
 if __name__ == "__main__":\r
-    \r
+\r
     text = """grammar SimpleCalc;\r
 \r
 options {\r
@@ -209,7 +209,7 @@ NUMBER    : (DIGIT)+ ;
 fragment DIGIT    : '0'..'9' ;\r
 \r
 """\r
-    \r
+\r
     grammar().validate()\r
     antlrGrammarTree = grammar().parseString(text)\r
     print(antlrGrammarTree.asXML("antlrGrammarTree"))\r
index 1fccc34455ae652aeba8b322bf23e7f0230e6075..1df28f923d54fd923f5c53141d7a214fb8e62de8 100644 (file)
@@ -1,87 +1,87 @@
-'''\r
-Created on 4 sept. 2010\r
-\r
-@author: luca\r
-\r
-Submitted by Luca DallOlio, September, 2010\r
-'''\r
-import unittest\r
-import antlr_grammar\r
-\r
-class Test(unittest.TestCase):\r
-\r
-\r
-    def testOptionsSpec(self):\r
-        text = """options {\r
-                            language = Python;\r
-                        }"""\r
-        antlr_grammar.optionsSpec.parseString(text) #@UndefinedVariable\r
-\r
-    def testTokensSpec(self):\r
-        text = """tokens {\r
-                            PLUS     = '+' ;\r
-                            MINUS    = '-' ;\r
-                            MULT    = '*' ;\r
-                            DIV    = '/' ;\r
-                        }"""\r
-        antlr_grammar.tokensSpec.parseString(text) #@UndefinedVariable\r
-\r
-    def testBlock(self):\r
-        text = """( PLUS | MINUS )"""\r
-        antlr_grammar.block.parseString(text) #@UndefinedVariable\r
-\r
-    def testRule(self):\r
-        text = """expr    : term ( ( PLUS | MINUS )  term )* ;"""\r
-        antlr_grammar.rule.parseString(text) #@UndefinedVariable\r
-\r
-    def testLexerRule(self):\r
-        text = """fragment DIGIT    : '0'..'9' ;"""\r
-        antlr_grammar.rule.parseString(text) #@UndefinedVariable\r
-\r
-    def testLexerRule2(self):\r
-        text = """WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+     { $channel = HIDDEN; } ;"""\r
-        #antlr_grammar.rule.parseString(text) #@UndefinedVariable\r
-\r
-    def testGrammar(self):\r
-        text = """grammar SimpleCalc;\r
-\r
-options {\r
-    language = Python;\r
-}\r
-\r
-tokens {\r
-    PLUS     = '+' ;\r
-    MINUS    = '-' ;\r
-    MULT    = '*' ;\r
-    DIV    = '/' ;\r
-}\r
-\r
-/*------------------------------------------------------------------\r
- * PARSER RULES\r
- *------------------------------------------------------------------*/\r
-\r
-expr    : term ( ( PLUS | MINUS )  term )* ;\r
-\r
-term    : factor ( ( MULT | DIV ) factor )* ;\r
-\r
-factor    : NUMBER ;\r
-\r
-\r
-/*------------------------------------------------------------------\r
- * LEXER RULES\r
- *------------------------------------------------------------------*/\r
-\r
-NUMBER    : (DIGIT)+ ;\r
-\r
-/* WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+     { $channel = HIDDEN; } ; */\r
-\r
-fragment DIGIT    : '0'..'9' ;"""\r
-        antlrGrammarTree = antlr_grammar.grammarDef.parseString(text) #@UndefinedVariable\r
-        pyparsingRules = antlr_grammar.antlrConverter(antlrGrammarTree)\r
-        pyparsingRule = pyparsingRules["expr"]\r
-        pyparsingTree = pyparsingRule.parseString("2 - 5 * 42 + 7 / 25")\r
-        self.assertNotEqual(None, pyparsingTree)\r
-\r
-if __name__ == "__main__":\r
-    #import sys;sys.argv = ['', 'Test.testOptionsSpec']\r
-    unittest.main()
\ No newline at end of file
+'''
+Created on 4 sept. 2010
+
+@author: luca
+
+Submitted by Luca DallOlio, September, 2010
+'''
+import unittest
+from . import antlr_grammar
+
+class Test(unittest.TestCase):
+
+
+    def testOptionsSpec(self):
+        text = """options {
+                            language = Python;
+                        }"""
+        antlr_grammar.optionsSpec.parseString(text) #@UndefinedVariable
+
+    def testTokensSpec(self):
+        text = """tokens {
+                            PLUS     = '+' ;
+                            MINUS    = '-' ;
+                            MULT    = '*' ;
+                            DIV    = '/' ;
+                        }"""
+        antlr_grammar.tokensSpec.parseString(text) #@UndefinedVariable
+
+    def testBlock(self):
+        text = """( PLUS | MINUS )"""
+        antlr_grammar.block.parseString(text) #@UndefinedVariable
+
+    def testRule(self):
+        text = """expr    : term ( ( PLUS | MINUS )  term )* ;"""
+        antlr_grammar.rule.parseString(text) #@UndefinedVariable
+
+    def testLexerRule(self):
+        text = """fragment DIGIT    : '0'..'9' ;"""
+        antlr_grammar.rule.parseString(text) #@UndefinedVariable
+
+    def testLexerRule2(self):
+        text = """WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+     { $channel = HIDDEN; } ;"""
+        #antlr_grammar.rule.parseString(text) #@UndefinedVariable
+
+    def testGrammar(self):
+        text = """grammar SimpleCalc;
+
+options {
+    language = Python;
+}
+
+tokens {
+    PLUS     = '+' ;
+    MINUS    = '-' ;
+    MULT    = '*' ;
+    DIV    = '/' ;
+}
+
+/*------------------------------------------------------------------
+ * PARSER RULES
+ *------------------------------------------------------------------*/
+
+expr    : term ( ( PLUS | MINUS )  term )* ;
+
+term    : factor ( ( MULT | DIV ) factor )* ;
+
+factor    : NUMBER ;
+
+
+/*------------------------------------------------------------------
+ * LEXER RULES
+ *------------------------------------------------------------------*/
+
+NUMBER    : (DIGIT)+ ;
+
+/* WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+     { $channel = HIDDEN; } ; */
+
+fragment DIGIT    : '0'..'9' ;"""
+        antlrGrammarTree = antlr_grammar.grammarDef.parseString(text) #@UndefinedVariable
+        pyparsingRules = antlr_grammar.antlrConverter(antlrGrammarTree)
+        pyparsingRule = pyparsingRules["expr"]
+        pyparsingTree = pyparsingRule.parseString("2 - 5 * 42 + 7 / 25")
+        self.assertNotEqual(None, pyparsingTree)
+
+if __name__ == "__main__":
+    #import sys;sys.argv = ['', 'Test.testOptionsSpec']
+    unittest.main()
index 7bca41a106e1fee915255bf6087d4b75d0bfa54d..cd35a9a74f574f0a5d480b58f3de461690018d90 100644 (file)
@@ -13,8 +13,8 @@ LBRACK,RBRACK,LBRACE,RBRACE = map(Suppress,"[]{}")
 ident = Word(alphas,alphanums+"_") | QuotedString("{",endQuoteChar="}")\r
 arg = "$" + ident\r
 \r
-# define an API call with a specific number of arguments - using '-' \r
-# will ensure that after matching procname, an incorrect number of args will \r
+# define an API call with a specific number of arguments - using '-'\r
+# will ensure that after matching procname, an incorrect number of args will\r
 # raise a ParseSyntaxException, which will interrupt the scanString\r
 def apiProc(name, numargs):\r
     return LBRACK + Keyword(name)("procname") - arg*numargs + RBRACK\r
@@ -55,4 +55,3 @@ while 1:
         api_scanner = apiRef.scanString(test)\r
     except StopIteration:\r
         break\r
-        \r
index bb9852179347b611d5f5525145e9c9137c6ee36c..6bb1c25ac239774f1cb34400c7e48911c2ed41c1 100644 (file)
@@ -1,4 +1,4 @@
-# \r
+#\r
 # cLibHeader.py\r
 #\r
 # A simple parser to extract API doc info from a C header file\r
@@ -12,7 +12,7 @@ testdata = """
   int func1(float *vec, int len, double arg1);\r
   int func2(float **arr, float *vec, int len, double arg1, double arg2);\r
   """\r
-  \r
+\r
 ident = Word(alphas, alphanums + "_")\r
 vartype = Combine( oneOf("float double int char") + Optional(Word("*")), adjacent = False)\r
 arglist = delimitedList(Group(vartype("type") + ident("name")))\r
index ce66afd99c718310b71ced97dfe88a2105c5bbd6..c1df9f3d9f59ed5b706a48b83d285b7cd4285201 100644 (file)
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-\r
+#\r
 # chemicalFormulas.py\r
 #\r
 # Copyright (c) 2003, Paul McGuire\r
@@ -11,46 +13,41 @@ atomicWeight = {
     "H"  : 1.00794,\r
     "Na" : 22.9897,\r
     "Cl" : 35.4527,\r
-    "C"  : 12.0107\r
+    "C"  : 12.0107,\r
     }\r
-    \r
-def test( bnf, strg, fn=None ):\r
-    try:\r
-        print(strg,"->", bnf.parseString( strg ), end=' ')\r
-    except ParseException as pe:\r
-        print(pe)\r
-    else:\r
-        if fn != None:\r
-            print(fn( bnf.parseString( strg ) ))\r
-        else:\r
-            print()\r
 \r
 digits = "0123456789"\r
 \r
 # Version 1\r
-element = Regex("A[cglmrstu]|B[aehikr]?|C[adeflmorsu]?|D[bsy]|"\r
-                "E[rsu]|F[emr]?|G[ade]|H[efgos]?|I[nr]?|Kr?|L[airu]|"\r
-                "M[dgnot]|N[abdeiop]?|Os?|P[abdmortu]?|R[abefghnu]|"\r
-                "S[bcegimnr]?|T[abcehilm]|U(u[bhopqst])?|V|W|Xe|Yb?|Z[nr]")\r
-\r
 element = Word( alphas.upper(), alphas.lower(), max=2)\r
+# for stricter matching, use this Regex instead\r
+# element = Regex("A[cglmrstu]|B[aehikr]?|C[adeflmorsu]?|D[bsy]|"\r
+#                 "E[rsu]|F[emr]?|G[ade]|H[efgos]?|I[nr]?|Kr?|L[airu]|"\r
+#                 "M[dgnot]|N[abdeiop]?|Os?|P[abdmortu]?|R[abefghnu]|"\r
+#                 "S[bcegimnr]?|T[abcehilm]|U(u[bhopqst])?|V|W|Xe|Yb?|Z[nr]")\r
 elementRef = Group( element + Optional( Word( digits ), default="1" ) )\r
 formula = OneOrMore( elementRef )\r
 \r
 fn = lambda elemList : sum(atomicWeight[elem]*int(qty) for elem,qty in elemList)\r
-test( formula, "H2O", fn )\r
-test( formula, "C6H5OH", fn )\r
-test( formula, "NaCl", fn )\r
+formula.runTests("""\\r
+    H2O\r
+    C6H5OH\r
+    NaCl\r
+    """,\r
+    fullDump=False, postParse=lambda _, tokens: "Molecular weight: {0}".format(fn(tokens)))\r
 print()\r
 \r
-# Version 2 - access parsed items by field name\r
+# Version 2 - access parsed items by results name\r
 elementRef = Group( element("symbol") + Optional( Word( digits ), default="1" )("qty") )\r
 formula = OneOrMore( elementRef )\r
 \r
 fn = lambda elemList : sum(atomicWeight[elem.symbol]*int(elem.qty) for elem in elemList)\r
-test( formula, "H2O", fn )\r
-test( formula, "C6H5OH", fn )\r
-test( formula, "NaCl", fn )\r
+formula.runTests("""\\r
+    H2O\r
+    C6H5OH\r
+    NaCl\r
+    """,\r
+    fullDump=False, postParse=lambda _, tokens: "Molecular weight: {0}".format(fn(tokens)))\r
 print()\r
 \r
 # Version 3 - convert integers during parsing process\r
@@ -59,9 +56,30 @@ elementRef = Group( element("symbol") + Optional( integer, default=1 )("qty") )
 formula = OneOrMore( elementRef )\r
 \r
 fn = lambda elemList : sum(atomicWeight[elem.symbol]*elem.qty for elem in elemList)\r
-test( formula, "H2O", fn )\r
-test( formula, "C6H5OH", fn )\r
-test( formula, "NaCl", fn )\r
-    \r
+formula.runTests("""\\r
+    H2O\r
+    C6H5OH\r
+    NaCl\r
+    """,\r
+    fullDump=False, postParse=lambda _, tokens: "Molecular weight: {0}".format(fn(tokens)))\r
+print()\r
 \r
+# Version 4 - parse and convert integers as subscript digits\r
+subscript_digits = "₀₁₂₃₄₅₆₇₈₉"\r
+subscript_int_map = dict((e[1], e[0]) for e in enumerate(subscript_digits))\r
+def cvt_subscript_int(s):\r
+    ret = 0\r
+    for c in s[0]:\r
+        ret = ret*10 + subscript_int_map[c]\r
+    return ret\r
+subscript_int = Word(subscript_digits).addParseAction(cvt_subscript_int)\r
 \r
+elementRef = Group( element("symbol") + Optional(subscript_int, default=1)("qty") )\r
+formula = OneOrMore( elementRef )\r
+formula.runTests("""\\r
+    H₂O\r
+    C₆H₅OH\r
+    NaCl\r
+    """,\r
+    fullDump=False, postParse=lambda _, tokens: "Molecular weight: {0}".format(fn(tokens)))\r
+print()\r
index 769249c3dba75cf51624d0ef534547057801fd7d..db7b6c703e9d9822a38b8d6be0239ae41416d0b7 100644 (file)
@@ -15,7 +15,7 @@ import pprint
 inibnf = None\r
 def inifile_BNF():\r
     global inibnf\r
-    \r
+\r
     if not inibnf:\r
 \r
         # punctuation\r
@@ -23,24 +23,24 @@ def inifile_BNF():
         rbrack = Literal("]").suppress()\r
         equals = Literal("=").suppress()\r
         semi   = Literal(";")\r
-        \r
+\r
         comment = semi + Optional( restOfLine )\r
-        \r
+\r
         nonrbrack = "".join( [ c for c in printables if c != "]" ] ) + " \t"\r
         nonequals = "".join( [ c for c in printables if c != "=" ] ) + " \t"\r
-        \r
+\r
         sectionDef = lbrack + Word( nonrbrack ) + rbrack\r
         keyDef = ~lbrack + Word( nonequals ) + equals + empty + restOfLine\r
         # strip any leading or trailing blanks from key\r
         def stripKey(tokens):\r
             tokens[0] = tokens[0].strip()\r
         keyDef.setParseAction(stripKey)\r
-        \r
+\r
         # using Dict will allow retrieval of named data fields as attributes of the parsed results\r
         inibnf = Dict( ZeroOrMore( Group( sectionDef + Dict( ZeroOrMore( Group( keyDef ) ) ) ) ) )\r
-        \r
+\r
         inibnf.ignore( comment )\r
-        \r
+\r
     return inibnf\r
 \r
 \r
@@ -59,14 +59,13 @@ def test( strng ):
         print(err.line)\r
         print(" "*(err.column-1) + "^")\r
         print(err)\r
-    \r
+\r
     iniFile.close()\r
     print()\r
     return tokens\r
-    \r
+\r
 if __name__ == "__main__":\r
        ini = test("setup.ini")\r
-       print("ini['Startup']['modemid'] =", ini['Startup']['modemid']) \r
+       print("ini['Startup']['modemid'] =", ini['Startup']['modemid'])\r
        print("ini.Startup =", ini.Startup)\r
        print("ini.Startup.modemid =", ini.Startup.modemid)\r
-\r
index cd8f52575f7b0d69540048f9e9f1cacf59ed3031..ca2c04b76c2d20d354ce3497612202001888cdc7 100644 (file)
@@ -3,7 +3,7 @@
 #\r
 # Posted by Mark Tolonen on comp.lang.python in August, 2009,\r
 # Used with permission.\r
-# \r
+#\r
 # Parser that scans through C or C++ code for enum definitions, and\r
 # generates corresponding Python constant definitions.\r
 #\r
index e42d2c65a2ccb36d46283d96a52e417e833458ef..aa9e01677b77aaef9a06c32509c178a4ebf434dd 100644 (file)
@@ -37,16 +37,16 @@ date_expr.setParseAction(convertToDatetime)
 \r
 \r
 date_expr.runTests("""\\r
-    2000/1/1 \r
+    2000/1/1\r
 \r
     # invalid month\r
-    2000/13/1  \r
+    2000/13/1\r
 \r
     # 1900 was not a leap year\r
-    1900/2/29  \r
+    1900/2/29\r
 \r
     # but 2000 was\r
-    2000/2/29  \r
+    2000/2/29\r
     """)\r
 \r
 \r
@@ -55,14 +55,14 @@ date_expr = pyparsing_common.iso8601_date.setParseAction(pyparsing_common.conver
 date_expr.ignore(pythonStyleComment)\r
 \r
 date_expr.runTests("""\\r
-    2000-01-01 \r
+    2000-01-01\r
 \r
     # invalid month\r
-    2000-13-01  \r
+    2000-13-01\r
 \r
     # 1900 was not a leap year\r
-    1900-02-29  \r
+    1900-02-29\r
 \r
     # but 2000 was\r
-    2000-02-29  \r
-    """)
\ No newline at end of file
+    2000-02-29\r
+    """)\r
diff --git a/examples/decaf_parser.py b/examples/decaf_parser.py
new file mode 100644 (file)
index 0000000..c3574b3
--- /dev/null
@@ -0,0 +1,175 @@
+#
+# decaf_parser.py
+#
+# Rudimentary parser for decaf language, used in Stanford University CS143
+# (https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/030%20Decaf%20Specification.pdf)
+#
+# To convert this parser into one that gives more of an AST, change all the Group wrappers to add parse
+# actions that will result in ASTNode classes, or statement-specific subclasses.
+#
+# Copyright 2018, Paul McGuire
+#
+"""
+    Program ::= Decl+
+    Decl ::= VariableDecl | FunctionDecl  | ClassDecl | InterfaceDecl
+    VariableDecl ::= Variable ; 
+    Variable ::= Type ident 
+    Type ::= int | double | bool | string | ident | Type [] 
+    FunctionDecl ::= Type ident ( Formals ) StmtBlock | void ident ( Formals ) StmtBlock 
+    Formals ::= Variable+, |  e 
+    ClassDecl ::= class ident <extends ident>  <implements ident + ,>  { Field* } 
+    Field ::= VariableDecl | FunctionDecl 
+    InterfaceDecl ::= interface ident { Prototype* } 
+    Prototype ::= Type ident ( Formals ) ; | void ident ( Formals ) ; 
+    StmtBlock ::= { VariableDecl*  Stmt* } 
+    Stmt ::=  <Expr> ; | IfStmt  | WhileStmt |  ForStmt | BreakStmt   | ReturnStmt  | PrintStmt  | StmtBlock 
+    IfStmt ::= if ( Expr ) Stmt <else Stmt> 
+    WhileStmt ::= while ( Expr ) Stmt 
+    ForStmt ::= for ( <Expr> ; Expr ; <Expr> ) Stmt 
+    ReturnStmt ::= return <Expr> ; 
+    BreakStmt ::= break ; 
+    PrintStmt ::= Print ( Expr+, ) ; 
+    Expr ::= LValue = Expr | Constant | LValue | this | Call
+            | ( Expr ) 
+            | Expr + Expr | Expr - Expr | Expr * Expr | Expr / Expr |  Expr % Expr | - Expr 
+            | Expr < Expr | Expr <= Expr | Expr > Expr | Expr >= Expr | Expr == Expr | Expr != Expr 
+            | Expr && Expr | Expr || Expr | ! Expr 
+            | ReadInteger ( ) | ReadLine ( ) | new ident | NewArray ( Expr , Typev) 
+    LValue ::= ident |  Expr  . ident | Expr [ Expr ] 
+    Call ::= ident  ( Actuals ) |  Expr  .  ident  ( Actuals ) 
+    Actuals ::=  Expr+, | e 
+    Constant ::= intConstant | doubleConstant | boolConstant |  stringConstant | null
+"""
+import pyparsing as pp
+pp.ParserElement.enablePackrat()
+
+# keywords
+keywords = (VOID, INT, DOUBLE, BOOL, STRING, CLASS, INTERFACE, NULL, THIS, EXTENDS, IMPLEMENTS, FOR, WHILE,
+            IF, ELSE, RETURN, BREAK, NEW, NEWARRAY, PRINT, READINTEGER, READLINE, TRUE, FALSE) = map(pp.Keyword,
+            """void int double bool string class interface null this extends implements or while
+               if else return break new NewArray Print ReadInteger ReadLine true false""".split())
+keywords = pp.MatchFirst(list(keywords))
+
+LPAR, RPAR, LBRACE, RBRACE, LBRACK, RBRACK, DOT, EQ, COMMA, SEMI = map(pp.Suppress, "(){}[].=,;")
+hexConstant = pp.Regex(r"0[xX][0-9a-fA-F]+").addParseAction(lambda t: int(t[0][2:], 16))
+intConstant = hexConstant | pp.pyparsing_common.integer
+doubleConstant = pp.pyparsing_common.real
+boolConstant = TRUE | FALSE
+stringConstant = pp.dblQuotedString
+null = NULL
+constant = doubleConstant | boolConstant | intConstant | stringConstant | null
+ident = ~keywords + pp.Word(pp.alphas, pp.alphanums+'_')
+type_ = pp.Group((INT | DOUBLE | BOOL | STRING | ident) + pp.ZeroOrMore("[]"))
+
+variable = type_ + ident
+variable_decl = variable + SEMI
+
+expr = pp.Forward()
+expr_parens = pp.Group(LPAR + expr + RPAR)
+actuals = pp.Optional(pp.delimitedList(expr))
+call = pp.Group(ident("call_ident") + LPAR + actuals("call_args") + RPAR
+                | (expr_parens + pp.ZeroOrMore(DOT + ident))("call_ident_expr") + LPAR + actuals("call_args") + RPAR)
+lvalue = ((ident | expr_parens) 
+           + pp.ZeroOrMore(DOT + (ident | expr_parens)) 
+           + pp.ZeroOrMore(LBRACK + expr + RBRACK))
+assignment = pp.Group(lvalue("lhs") + EQ + expr("rhs"))
+read_integer = pp.Group(READINTEGER + LPAR + RPAR)
+read_line = pp.Group(READLINE + LPAR + RPAR)
+new_statement = pp.Group(NEW + ident)
+new_array = pp.Group(NEWARRAY + LPAR + expr + COMMA + type_ + RPAR)
+rvalue = constant | call | read_integer | read_line | new_statement | new_array | ident
+arith_expr = pp.infixNotation(rvalue,
+    [
+    ('-', 1, pp.opAssoc.RIGHT,),
+    (pp.oneOf("* / %"), 2, pp.opAssoc.LEFT,),
+    (pp.oneOf("+ -"), 2, pp.opAssoc.LEFT,),
+    ])
+comparison_expr = pp.infixNotation(arith_expr, 
+    [
+    ('!', 1, pp.opAssoc.RIGHT,),
+    (pp.oneOf("< > <= >="), 2, pp.opAssoc.LEFT,),
+    (pp.oneOf("== !="), 2, pp.opAssoc.LEFT,),
+    (pp.oneOf("&&"), 2, pp.opAssoc.LEFT,),
+    (pp.oneOf("||"), 2, pp.opAssoc.LEFT,),
+    ])
+expr <<= (assignment
+          | call
+          | THIS
+          | comparison_expr
+          | arith_expr
+          | lvalue
+          | constant
+          | read_integer
+          | read_line
+          | new_statement
+          | new_array
+          )
+
+stmt = pp.Forward()
+print_stmt = pp.Group(PRINT("statement") + LPAR + pp.Group(pp.Optional(pp.delimitedList(expr)))("args") + RPAR + SEMI)
+break_stmt = pp.Group(BREAK("statement") + SEMI)
+return_stmt = pp.Group(RETURN("statement") + expr + SEMI)
+for_stmt = pp.Group(FOR("statement") + LPAR + pp.Optional(expr) + SEMI + expr + SEMI + pp.Optional(expr) + RPAR + stmt)
+while_stmt = pp.Group(WHILE("statement") + LPAR + expr + RPAR + stmt)
+if_stmt = pp.Group(IF("statement")
+                   + LPAR + pp.Group(expr)("condition") + RPAR
+                   + pp.Group(stmt)("then_statement")
+                   + pp.Group(pp.Optional(ELSE + stmt))("else_statement"))
+stmt_block = pp.Group(LBRACE + pp.ZeroOrMore(variable_decl) + pp.ZeroOrMore(stmt) + RBRACE)
+stmt <<= (if_stmt
+          | while_stmt
+          | for_stmt
+          | break_stmt
+          | return_stmt
+          | print_stmt
+          | stmt_block
+          | pp.Group(expr + SEMI)
+          )
+
+formals = pp.Optional(pp.delimitedList(variable))
+prototype = pp.Group((type_ | VOID)("return_type")
+                     + ident("function_name")
+                     + LPAR + formals("args") + RPAR + SEMI)("prototype")
+function_decl = pp.Group((type_ | VOID)("return_type") + ident("function_name")
+                         + LPAR + formals("args") + RPAR
+                         + stmt_block("body"))("function_decl")
+
+interface_decl = pp.Group(INTERFACE + ident("interface_name")
+                          + LBRACE + pp.ZeroOrMore(prototype)("prototypes") + RBRACE)("interface")
+field = variable_decl | function_decl
+class_decl = pp.Group(CLASS + ident("class_name")
+              + pp.Optional(EXTENDS + ident)("extends")
+              + pp.Optional(IMPLEMENTS + pp.delimitedList(ident))("implements")
+              + LBRACE + pp.ZeroOrMore(field)("fields") + RBRACE)("class_decl")
+
+decl = variable_decl | function_decl | class_decl | interface_decl | prototype
+program = pp.OneOrMore(pp.Group(decl))
+decaf_parser = program
+
+stmt.runTests("""\
+    sin(30);
+    a = 1;
+    b = 1 + 1;
+    b = 1 != 2 && false;
+    print("A");
+    a.b = 100;
+    a.b = 100.0;
+    a[100] = b;
+    a[0][0] = 2;
+    a = 0x1234;
+""")
+
+test_program = """
+    void getenv(string var);
+    int main(string[] args) {
+        if (a > 100) {
+            Print(a, " is too big");
+        } else if (a < 100) {
+            Print(a, " is too small");
+        } else {
+            Print(a, "just right!");
+        }
+    }
+"""
+
+print(decaf_parser.parseString(test_program).dump())
index e38da00025fc2462da6fa62d6a139e4877173311..2fa8769f0dd0874e5bb334c9773e64d06ec72dde 100644 (file)
@@ -1,9 +1,9 @@
 # deltaTime.py\r
 #\r
-# Parser to convert a conversational time reference such as "in a minute" or \r
-# "noon tomorrow" and convert it to a Python datetime.  The returned \r
+# Parser to convert a conversational time reference such as "in a minute" or\r
+# "noon tomorrow" and convert it to a Python datetime.  The returned\r
 # ParseResults object contains the results name "timeOffset" containing\r
-# the timedelta, and "calculatedTime" containing the computed time relative \r
+# the timedelta, and "calculatedTime" containing the computed time relative\r
 # to datetime.now().\r
 #\r
 # Copyright 2010, by Paul McGuire\r
@@ -30,7 +30,7 @@ def convertToTimedelta(toks):
     if toks.dir:\r
         td *= toks.dir\r
     toks["timeOffset"] = td\r
\r
+\r
 def convertToDay(toks):\r
     now = datetime.now()\r
     if "wkdayRef" in toks:\r
@@ -50,7 +50,7 @@ def convertToDay(toks):
             "yesterday" : datetime(now.year, now.month, now.day)+timedelta(-1),\r
             "tomorrow"  : datetime(now.year, now.month, now.day)+timedelta(+1),\r
             }[name]\r
\r
+\r
 def convertToAbsTime(toks):\r
     now = datetime.now()\r
     if "dayRef" in toks:\r
@@ -70,7 +70,7 @@ def convertToAbsTime(toks):
             if hhmmss.miltime:\r
                 hh,mm = hhmmss.miltime\r
                 ss = 0\r
-            else:            \r
+            else:\r
                 hh,mm,ss = (hhmmss.HH % 12), hhmmss.MM, hhmmss.SS\r
                 if not mm: mm = 0\r
                 if not ss: ss = 0\r
@@ -80,7 +80,7 @@ def convertToAbsTime(toks):
     else:\r
         timeOfDay = timedelta(0, (now.hour*60+now.minute)*60+now.second, now.microsecond)\r
     toks["absTime"] = day + timeOfDay\r
\r
+\r
 def calculateTime(toks):\r
     if toks.absTime:\r
         absTime = toks.absTime\r
@@ -89,7 +89,7 @@ def calculateTime(toks):
     if toks.timeOffset:\r
         absTime += toks.timeOffset\r
     toks["calculatedTime"] = absTime\r
\r
+\r
 # grammar definitions\r
 CL = CaselessLiteral\r
 today, tomorrow, yesterday, noon, midnight, now = map( CL,\r
@@ -100,7 +100,7 @@ week, day, hour, minute, second = map( plural,
 am = CL("am")\r
 pm = CL("pm")\r
 COLON = Suppress(':')\r
\r
+\r
 # are these actually operators?\r
 in_ = CL("in").setParseAction(replaceWith(1))\r
 from_ = CL("from").setParseAction(replaceWith(1))\r
@@ -123,7 +123,7 @@ def fill_timefields(t):
 int4.addParseAction(fill_timefields)\r
 qty = integer | couple | a_qty\r
 dayName = oneOf( list(calendar.day_name) )\r
\r
+\r
 dayOffset = (qty("qty") + (week | day)("timeunit"))\r
 dayFwdBack = (from_ + now.suppress() | ago)("dir")\r
 weekdayRef = (Optional(next_ | last_,1)("dir") + dayName("day"))\r
@@ -132,37 +132,37 @@ dayRef = Optional( (dayOffset + (before | after | from_)("dir") ).setParseAction
              weekdayRef("wkdayRef")).setParseAction(convertToDay)\r
 todayRef = (dayOffset + dayFwdBack).setParseAction(convertToTimedelta) | \\r
             (in_("dir") + qty("qty") + day("timeunit")).setParseAction(convertToTimedelta)\r
\r
+\r
 dayTimeSpec = dayRef | todayRef\r
 dayTimeSpec.setParseAction(calculateTime)\r
\r
+\r
 relativeTimeUnit = (week | day | hour | minute | second)\r
\r
+\r
 timespec = Group(ungroup(int4) |\r
-                 integer("HH") + \r
-                 ungroup(Optional(COLON + integer,[0]))("MM") + \r
-                 ungroup(Optional(COLON + integer,[0]))("SS") + \r
+                 integer("HH") +\r
+                 ungroup(Optional(COLON + integer,[0]))("MM") +\r
+                 ungroup(Optional(COLON + integer,[0]))("SS") +\r
                  (am | pm)("ampm")\r
                  )\r
 \r
-absTimeSpec = ((noon | midnight | now | timespec("timeparts"))("timeOfDay") + \r
+absTimeSpec = ((noon | midnight | now | timespec("timeparts"))("timeOfDay") +\r
                 Optional(on_) + Optional(dayRef)("dayRef") |\r
-                dayRef("dayRef") + at_ + \r
+                dayRef("dayRef") + at_ +\r
                 (noon | midnight | now | timespec("timeparts"))("timeOfDay"))\r
 absTimeSpec.setParseAction(convertToAbsTime,calculateTime)\r
\r
+\r
 relTimeSpec = qty("qty") + relativeTimeUnit("timeunit") + \\r
                 (from_ | before | after)("dir") + \\r
                 Optional(at_) + \\r
                 absTimeSpec("absTime") | \\r
               qty("qty") + relativeTimeUnit("timeunit") + ago("dir") | \\r
-              in_ + qty("qty") + relativeTimeUnit("timeunit") \r
+              in_ + qty("qty") + relativeTimeUnit("timeunit")\r
 relTimeSpec.setParseAction(convertToTimedelta,calculateTime)\r
\r
-nlTimeExpression = (absTimeSpec + Optional(dayTimeSpec) | \r
-                    dayTimeSpec + Optional(Optional(at_) + absTimeSpec) | \r
+\r
+nlTimeExpression = (absTimeSpec + Optional(dayTimeSpec) |\r
+                    dayTimeSpec + Optional(Optional(at_) + absTimeSpec) |\r
                     relTimeSpec + Optional(absTimeSpec))\r
\r
+\r
 if __name__ == "__main__":\r
     # test grammar\r
     tests = """\\r
index cf8381437e302c66997c4b6bdcc79d21443f42ee..ae74bf0d45e6d6891abd02bd1543f336cc7226da 100644 (file)
@@ -10,7 +10,7 @@ __author__ = "Daniel 'Dang' Griffith <pythondev - dang at lazytwinacres . net>"
 \r
 from pyparsing import Literal, CaselessLiteral, Word, delimitedList \\r
     , Optional, Combine, Group, alphas, nums, alphanums, Forward \\r
-    , oneOf, sglQuotedString, OneOrMore, ZeroOrMore, CharsNotIn\r
+    , oneOf, OneOrMore, ZeroOrMore, CharsNotIn\r
 \r
 \r
 # This converts DFM character constants into Python string (unicode) values.\r
@@ -101,11 +101,11 @@ hint_attribute_value_pair = hint_attribute + EQUALS + value
 layout_attribute_value_pair = layout_attribute + EQUALS + value\r
 generic_attribute_value_pair = attribute + EQUALS + value\r
 attribute_value_pair << Group(\r
-      category_attribute_value_pair \r
-    | event_attribute_value_pair \r
-    | font_attribute_value_pair \r
-    | hint_attribute_value_pair \r
-    | layout_attribute_value_pair \r
+      category_attribute_value_pair\r
+    | event_attribute_value_pair\r
+    | font_attribute_value_pair\r
+    | hint_attribute_value_pair\r
+    | layout_attribute_value_pair\r
     | generic_attribute_value_pair\r
     )\r
 \r
@@ -161,7 +161,7 @@ def main(testfiles=None, action=printer):
         try:\r
             retval[f] = object_definition.parseFile(f)\r
             success += 1\r
-        except:\r
+        except Exception:\r
             failures.append(f)\r
 \r
     if failures:\r
@@ -176,4 +176,4 @@ def main(testfiles=None, action=printer):
     return retval\r
 \r
 if __name__ == "__main__":\r
-    main()
\ No newline at end of file
+    main()\r
index 145e6eaef41674d2591c38553cb7d945d33c400c..a88505147abf93362b4c94476860af9b616c88f0 100644 (file)
@@ -1,9 +1,9 @@
-# \r
+#\r
 # dhcpd_leases_parser.py\r
 #\r
 # Copyright 2008, Paul McGuire\r
 #\r
-# Sample parser to parse a dhcpd.leases file to extract leases \r
+# Sample parser to parse a dhcpd.leases file to extract leases\r
 # and lease attributes\r
 #\r
 # format ref: http://www.linuxmanpages.com/man5/dhcpd.leases.5.php\r
index 5085aed71ae0ea695378b2f38c540d2ee80a7d4d..043d18f47ff92b3513c21a74201413dee2cb5d37 100644 (file)
@@ -21,8 +21,8 @@ testData = """
 \r
 # define grammar for datatable\r
 heading = (Literal(\r
-"+-------+------+------+------+------+------+------+------+------+") + \r
-"|       |  A1  |  B1  |  C1  |  D1  |  A2  |  B2  |  C2  |  D2  |" + \r
+"+-------+------+------+------+------+------+------+------+------+") +\r
+"|       |  A1  |  B1  |  C1  |  D1  |  A2  |  B2  |  C2  |  D2  |" +\r
 "+=======+======+======+======+======+======+======+======+======+").suppress()\r
 vert = Literal("|").suppress()\r
 number = Word(nums)\r
index cae463b5ed46956b3f2e98d7810bac74935ab723..58162f7cbfa5569e9c78efdf831765e132aed6af 100644 (file)
@@ -7,7 +7,6 @@
 # Copyright (c) 2004, Paul McGuire\r
 #\r
 from pyparsing import Literal, Word, Group, Dict, ZeroOrMore, alphas, nums, delimitedList, pyparsing_common\r
-import pprint\r
 \r
 testData = """\r
 +-------+------+------+------+------+------+------+------+------+\r
@@ -44,9 +43,9 @@ print("sum(data['min']) =", sum(data['min']))
 print("data.max =", data.max)\r
 print("sum(data.max) =", sum(data.max))\r
 \r
-# now print transpose of data table, using column labels read from table header and \r
+# now print transpose of data table, using column labels read from table header and\r
 # values from data lists\r
-print() \r
+print()\r
 print(" " * 5, end=' ')\r
 for i in range(1,len(data)):\r
     print("|%5s" % data[i][0], end=' ')\r
@@ -56,4 +55,4 @@ for i in range(len(data.columns)):
     print("%5s" % data.columns[i], end=' ')\r
     for j in range(len(data) - 1):\r
         print('|%5s' % data[j + 1][i + 1], end=' ')\r
-    print() \r
+    print()\r
index 242aed44e36e5664a794d86d5e7f13df06b9ffcb..bb19155949a10da13053926f33a7020a59b5506d 100644 (file)
@@ -3,7 +3,7 @@
 \r
 # ISO 14977 standardize The Extended Backus-Naur Form(EBNF) syntax.\r
 # You can read a final draft version here:\r
-# http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html\r
+# https://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html\r
 #\r
 # Submitted 2004 by Seo Sanghyeon\r
 #\r
@@ -55,7 +55,7 @@ syntax.ignore(ebnfComment)
 \r
 def do_integer(str, loc, toks):\r
     return int(toks[0])\r
-    \r
+\r
 def do_meta_identifier(str, loc, toks):\r
     if toks[0] in symbol_table:\r
         return symbol_table[toks[0]]\r
index 253404f9bae07ff89d0e24263d453291e7a0c620..40772ee0ad0401d0332d0138e5d4fc9a3f71995a 100644 (file)
@@ -1,5 +1,5 @@
 #\r
-# ebnftest.py \r
+# ebnftest.py\r
 #\r
 # Test script for ebnf.py\r
 #\r
@@ -24,11 +24,11 @@ syntactic_primary = optional_sequence | repeated_sequence |
 optional_sequence = '[', definitions_list, ']';\r
 repeated_sequence = '{', definitions_list, '}';\r
 grouped_sequence = '(', definitions_list, ')';\r
-(* \r
+(*\r
 terminal_string = "'", character - "'", {character - "'"}, "'" |\r
   '"', character - '"', {character - '"'}, '"';\r
  meta_identifier = letter, {letter | digit};\r
-integer = digit, {digit}; \r
+integer = digit, {digit};\r
 *)\r
 '''\r
 \r
index 95622531bcdfd8ed2f46c01244aee7ef7a167dcc..133f6c25b5850564131eebf010aecae886bb067a 100644 (file)
@@ -38,7 +38,7 @@ def operatorOperands(tokenlist):
             yield (next(it), next(it))\r
         except StopIteration:\r
             break\r
-            \r
+\r
 class EvalPowerOp(object):\r
     "Class to evaluate multiplication and division expressions"\r
     def __init__(self, tokens):\r
@@ -48,7 +48,7 @@ class EvalPowerOp(object):
         for val in self.value[-3::-2]:\r
             res = val.eval()**res\r
         return res\r
-    \r
+\r
 class EvalMultOp(object):\r
     "Class to evaluate multiplication and division expressions"\r
     def __init__(self, tokens):\r
@@ -61,7 +61,7 @@ class EvalMultOp(object):
             if op == '/':\r
                 prod /= val.eval()\r
         return prod\r
-    \r
+\r
 class EvalAddOp(object):\r
     "Class to evaluate addition and subtraction expressions"\r
     def __init__(self, tokens):\r
@@ -105,7 +105,7 @@ class EvalComparisonOp(object):
         else:\r
             return True\r
         return False\r
-    \r
+\r
 \r
 # define the parser\r
 integer = Word(nums)\r
@@ -137,57 +137,57 @@ comp_expr = infixNotation(arith_expr,
 def main():\r
     # sample expressions posted on comp.lang.python, asking for advice\r
     # in safely evaluating them\r
-    rules=[ \r
-             '( A - B ) = 0', \r
-             '(A + B + C + D + E + F + G + H + I) = J', \r
-             '(A + B + C + D + E + F + G + H) = I', \r
-             '(A + B + C + D + E + F) = G', \r
-             '(A + B + C + D + E) = (F + G + H + I + J)', \r
-             '(A + B + C + D + E) = (F + G + H + I)', \r
-             '(A + B + C + D + E) = F', \r
-             '(A + B + C + D) = (E + F + G + H)', \r
-             '(A + B + C) = (D + E + F)', \r
-             '(A + B) = (C + D + E + F)', \r
-             '(A + B) = (C + D)', \r
-             '(A + B) = (C - D + E - F - G + H + I + J)', \r
-             '(A + B) = C', \r
-             '(A + B) = 0', \r
-             '(A+B+C+D+E) = (F+G+H+I+J)', \r
-             '(A+B+C+D) = (E+F+G+H)', \r
-             '(A+B+C+D)=(E+F+G+H)', \r
-             '(A+B+C)=(D+E+F)', \r
-             '(A+B)=(C+D)', \r
-             '(A+B)=C', \r
-             '(A-B)=C', \r
-             '(A/(B+C))', \r
-             '(B/(C+D))', \r
-             '(G + H) = I', \r
-             '-0.99 LE ((A+B+C)-(D+E+F+G)) LE 0.99', \r
-             '-0.99 LE (A-(B+C)) LE 0.99', \r
-             '-1000.00 LE A LE 0.00', \r
-             '-5000.00 LE A LE 0.00', \r
-             'A < B', \r
-             'A < 7000', \r
-             'A = -(B)', \r
-             'A = C', \r
-             'A = 0', \r
-             'A GT 0', \r
-             'A GT 0.00', \r
-             'A GT 7.00', \r
-             'A LE B', \r
-             'A LT -1000.00', \r
-             'A LT -5000', \r
-             'A LT 0', \r
-             'A=(B+C+D)', \r
-             'A=B', \r
-             'I = (G + H)', \r
-             '0.00 LE A LE 4.00', \r
+    rules=[\r
+             '( A - B ) = 0',\r
+             '(A + B + C + D + E + F + G + H + I) = J',\r
+             '(A + B + C + D + E + F + G + H) = I',\r
+             '(A + B + C + D + E + F) = G',\r
+             '(A + B + C + D + E) = (F + G + H + I + J)',\r
+             '(A + B + C + D + E) = (F + G + H + I)',\r
+             '(A + B + C + D + E) = F',\r
+             '(A + B + C + D) = (E + F + G + H)',\r
+             '(A + B + C) = (D + E + F)',\r
+             '(A + B) = (C + D + E + F)',\r
+             '(A + B) = (C + D)',\r
+             '(A + B) = (C - D + E - F - G + H + I + J)',\r
+             '(A + B) = C',\r
+             '(A + B) = 0',\r
+             '(A+B+C+D+E) = (F+G+H+I+J)',\r
+             '(A+B+C+D) = (E+F+G+H)',\r
+             '(A+B+C+D)=(E+F+G+H)',\r
+             '(A+B+C)=(D+E+F)',\r
+             '(A+B)=(C+D)',\r
+             '(A+B)=C',\r
+             '(A-B)=C',\r
+             '(A/(B+C))',\r
+             '(B/(C+D))',\r
+             '(G + H) = I',\r
+             '-0.99 LE ((A+B+C)-(D+E+F+G)) LE 0.99',\r
+             '-0.99 LE (A-(B+C)) LE 0.99',\r
+             '-1000.00 LE A LE 0.00',\r
+             '-5000.00 LE A LE 0.00',\r
+             'A < B',\r
+             'A < 7000',\r
+             'A = -(B)',\r
+             'A = C',\r
+             'A = 0',\r
+             'A GT 0',\r
+             'A GT 0.00',\r
+             'A GT 7.00',\r
+             'A LE B',\r
+             'A LT -1000.00',\r
+             'A LT -5000',\r
+             'A LT 0',\r
+             'A=(B+C+D)',\r
+             'A=B',\r
+             'I = (G + H)',\r
+             '0.00 LE A LE 4.00',\r
              '4.00 LT A LE 7.00',\r
              '0.00 LE A LE 4.00 LE E > D',\r
              '2**2**(A+3)',\r
-         ] \r
-    vars_={'A': 0, 'B': 1.1, 'C': 2.2, 'D': 3.3, 'E': 4.4, 'F': 5.5, 'G': \r
-    6.6, 'H':7.7, 'I':8.8, 'J':9.9} \r
+         ]\r
+    vars_={'A': 0, 'B': 1.1, 'C': 2.2, 'D': 3.3, 'E': 4.4, 'F': 5.5, 'G':\r
+    6.6, 'H':7.7, 'I':8.8, 'J':9.9}\r
 \r
     # define tests from given rules\r
     tests = []\r
@@ -216,12 +216,12 @@ def main():
             failed += 1\r
         else:\r
             print('')\r
-            \r
+\r
     print('')\r
     if failed:\r
         print(failed, "tests FAILED")\r
     else:\r
         print("all tests PASSED")\r
 \r
-if __name__=='__main__': \r
+if __name__=='__main__':\r
     main()\r
index 7ce8db2d36f46d384abf33c1a091c3ff957f70c6..57a3f90f2f5fb1e21f7e094423561c4fb9dc3e15 100644 (file)
@@ -1,12 +1,12 @@
 # excelExpr.py\r
 #\r
 # Copyright 2010, Paul McGuire\r
-# \r
+#\r
 # A partial implementation of a parser of Excel formula expressions.\r
 #\r
-from pyparsing import (CaselessKeyword, Suppress, Word, alphas, \r
-    alphanums, nums, Optional, Group, oneOf, Forward, Regex, \r
-    infixNotation, opAssoc, dblQuotedString, delimitedList, \r
+from pyparsing import (CaselessKeyword, Suppress, Word, alphas,\r
+    alphanums, nums, Optional, Group, oneOf, Forward,\r
+    infixNotation, opAssoc, dblQuotedString, delimitedList,\r
     Combine, Literal, QuotedString, ParserElement, pyparsing_common)\r
 ParserElement.enablePackrat()\r
 \r
@@ -15,10 +15,10 @@ EXCL, DOLLAR = map(Literal,"!$")
 sheetRef = Word(alphas, alphanums) | QuotedString("'",escQuote="''")\r
 colRef = Optional(DOLLAR) + Word(alphas,max=2)\r
 rowRef = Optional(DOLLAR) + Word(nums)\r
-cellRef = Combine(Group(Optional(sheetRef + EXCL)("sheet") + colRef("col") + \r
+cellRef = Combine(Group(Optional(sheetRef + EXCL)("sheet") + colRef("col") +\r
                     rowRef("row")))\r
 \r
-cellRange = (Group(cellRef("start") + COLON + cellRef("end"))("range") \r
+cellRange = (Group(cellRef("start") + COLON + cellRef("end"))("range")\r
                 | cellRef | Word(alphas,alphanums))\r
 \r
 expr = Forward()\r
@@ -26,10 +26,10 @@ expr = Forward()
 COMPARISON_OP = oneOf("< = > >= <= != <>")\r
 condExpr = expr + COMPARISON_OP + expr\r
 \r
-ifFunc = (CaselessKeyword("if") - \r
-          LPAR + \r
-          Group(condExpr)("condition") + \r
-          COMMA + Group(expr)("if_true") + \r
+ifFunc = (CaselessKeyword("if") -\r
+          LPAR +\r
+          Group(condExpr)("condition") +\r
+          COMMA + Group(expr)("if_true") +\r
           COMMA + Group(expr)("if_false") + RPAR)\r
 \r
 statFunc = lambda name : Group(CaselessKeyword(name) + Group(LPAR + delimitedList(expr) + RPAR))\r
@@ -42,7 +42,7 @@ funcCall = ifFunc | sumFunc | minFunc | maxFunc | aveFunc
 multOp = oneOf("* /")\r
 addOp = oneOf("+ -")\r
 numericLiteral = pyparsing_common.number\r
-operand = numericLiteral | funcCall | cellRange | cellRef \r
+operand = numericLiteral | funcCall | cellRange | cellRef\r
 arithExpr = infixNotation(operand,\r
     [\r
     (multOp, 2, opAssoc.LEFT),\r
@@ -66,4 +66,4 @@ expr << (arithExpr | textExpr)
     =if(Sum(A1:A25)>42,Min(B1:B25),if(Sum(C1:C25)>3.14, (Min(C1:C25)+3)*18,Max(B1:B25)))\r
     =sum(a1:a25,10,min(b1,c2,d3))\r
     =if("T"&a2="TTime", "Ready", "Not ready")\r
-""")
\ No newline at end of file
+""")\r
index f485f538ca74c816b563534950f8f3fb8a7da4e2..e1393b65f840dc30f5bed7b4bebaab7ff377da6d 100644 (file)
@@ -9,8 +9,8 @@
 #\r
 # Copyright 2003-2009 by Paul McGuire\r
 #\r
-from pyparsing import Literal,CaselessLiteral,Word,Group,Optional,\\r
-    ZeroOrMore,Forward,nums,alphas,alphanums,Regex,ParseException,\\r
+from pyparsing import Literal,Word,Group,\\r
+    ZeroOrMore,Forward,alphas,alphanums,Regex,ParseException,\\r
     CaselessKeyword, Suppress\r
 import math\r
 import operator\r
@@ -21,7 +21,7 @@ def pushFirst( strg, loc, toks ):
     exprStack.append( toks[0] )\r
 def pushUMinus( strg, loc, toks ):\r
     for t in toks:\r
-      if t == '-': \r
+      if t == '-':\r
         exprStack.append( 'unary -' )\r
         #~ exprStack.append( '-1' )\r
         #~ exprStack.append( '*' )\r
@@ -48,27 +48,27 @@ def BNF():
         # and CaselessKeyword only match whole words\r
         e     = CaselessKeyword( "E" )\r
         pi    = CaselessKeyword( "PI" )\r
-        #~ fnumber = Combine( Word( "+-"+nums, nums ) + \r
+        #~ fnumber = Combine( Word( "+-"+nums, nums ) +\r
                            #~ Optional( point + Optional( Word( nums ) ) ) +\r
                            #~ Optional( e + Word( "+-"+nums, nums ) ) )\r
         fnumber = Regex(r"[+-]?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?")\r
         ident = Word(alphas, alphanums+"_$")\r
-     \r
+\r
         plus, minus, mult, div = map(Literal, "+-*/")\r
         lpar, rpar = map(Suppress, "()")\r
         addop  = plus | minus\r
         multop = mult | div\r
         expop = Literal( "^" )\r
-        \r
+\r
         expr = Forward()\r
-        atom = ((0,None)*minus + ( pi | e | fnumber | ident + lpar + expr + rpar | ident ).setParseAction( pushFirst ) | \r
-                Group( lpar + expr + rpar )).setParseAction(pushUMinus) \r
-        \r
+        atom = ((0,None)*minus + ( pi | e | fnumber | ident + lpar + expr + rpar | ident ).setParseAction( pushFirst ) |\r
+                Group( lpar + expr + rpar )).setParseAction(pushUMinus)\r
+\r
         # by defining exponentiation as "atom [ ^ factor ]..." instead of "atom [ ^ atom ]...", we get right-to-left exponents, instead of left-to-righ\r
         # that is, 2^3^2 = 2^(3^2), not (2^3)^2.\r
         factor = Forward()\r
         factor << atom + ZeroOrMore( ( expop + factor ).setParseAction( pushFirst ) )\r
-        \r
+\r
         term = factor + ZeroOrMore( ( multop + factor ).setParseAction( pushFirst ) )\r
         expr << term + ZeroOrMore( ( addop + term ).setParseAction( pushFirst ) )\r
         bnf = expr\r
@@ -109,7 +109,7 @@ def evaluateStack( s ):
         return float( op )\r
 \r
 if __name__ == "__main__":\r
-    \r
+\r
     def test( s, expVal ):\r
         global exprStack\r
         exprStack[:] = []\r
@@ -125,7 +125,7 @@ if __name__ == "__main__":
                 print(s, "=", val, results, "=>", exprStack)\r
             else:\r
                 print(s+"!!!", val, "!=", expVal, results, "=>", exprStack)\r
-  \r
+\r
     test( "9", 9 )\r
     test( "-9", -9 )\r
     test( "--9", 9 )\r
index e79798f83a731c12765680b39c9a5fdd908cc78e..f4a87562896efcf48cd8a0fb82c380b5325bf4f5 100644 (file)
@@ -43,7 +43,7 @@ typemap = {
     "Bool" : "c_bool",\r
     "void" : "None",\r
     }\r
-    \r
+\r
 LPAR,RPAR,LBRACE,RBRACE,COMMA,SEMI = map(Suppress,"(){},;")\r
 ident = Word(alphas, alphanums + "_")\r
 integer = Regex(r"[+-]?\d+")\r
@@ -52,19 +52,19 @@ hexinteger = Regex(r"0x[0-9a-fA-F]+")
 const = Suppress("const")\r
 primitiveType = oneOf(t for t in typemap if not t.endswith("*"))\r
 structType = Suppress("struct") + ident\r
-vartype = (Optional(const) + \r
-            (primitiveType | structType | ident) + \r
+vartype = (Optional(const) +\r
+            (primitiveType | structType | ident) +\r
             Optional(Word("*")("ptr")))\r
 def normalizetype(t):\r
     if isinstance(t, ParseResults):\r
         return ' '.join(t)\r
         #~ ret = ParseResults([' '.join(t)])\r
         #~ return ret\r
-        \r
+\r
 vartype.setParseAction(normalizetype)\r
 \r
 arg = Group(vartype("argtype") + Optional(ident("argname")))\r
-func_def = (vartype("fn_type") + ident("fn_name") + \r
+func_def = (vartype("fn_type") + ident("fn_name") +\r
                 LPAR + Optional(delimitedList(arg|"..."))("fn_args") + RPAR + SEMI)\r
 def derivefields(t):\r
     if t.fn_args and t.fn_args[-1] == "...":\r
@@ -74,7 +74,7 @@ func_def.setParseAction(derivefields)
 fn_typedef = "typedef" + func_def\r
 var_typedef = "typedef" + primitiveType("primType") + ident("name") + SEMI\r
 \r
-enum_def = (Keyword("enum") + LBRACE + \r
+enum_def = (Keyword("enum") + LBRACE +\r
             delimitedList(Group(ident("name") + '=' + (hexinteger|integer)("value")))("evalues")\r
             + Optional(COMMA)\r
             + RBRACE)\r
@@ -102,7 +102,7 @@ def getUDType(typestr):
     key = typestr.rstrip(" *")\r
     if key not in typemap:\r
         user_defined_types.add(key)\r
-        typemap[key] = "{}_{}".format(module, key)\r
+        typemap[key] = "{0}_{1}".format(module, key)\r
 \r
 def typeAsCtypes(typestr):\r
     if typestr in typemap:\r
@@ -131,7 +131,7 @@ for fn,_,_ in (cStyleComment.suppress() | fn_typedef.suppress() | func_def).scan
         if arg != "...":\r
             if arg.argtype not in typemap:\r
                 getUDType(arg.argtype)\r
-    functions.append(fn)                \r
+    functions.append(fn)\r
 \r
 # scan input header text for enums\r
 enum_def.ignore(cppStyleComment)\r
@@ -140,13 +140,13 @@ for en_,_,_ in enum_def.scanString(c_header):
         enum_constants.append( (ev.name, ev.value) )\r
 \r
 print("from ctypes import *")\r
-print("{} = CDLL('{}.dll')".format(module, module))\r
+print("{0} = CDLL('{1}.dll')".format(module, module))\r
 print()\r
 print("# user defined types")\r
 for tdname,tdtyp in typedefs:\r
-    print("{} = {}".format(tdname, typemap[tdtyp]))\r
+    print("{0} = {1}".format(tdname, typemap[tdtyp]))\r
 for fntd in fn_typedefs:\r
-    print("{} = CFUNCTYPE({})".format(fntd.fn_name,\r
+    print("{0} = CFUNCTYPE({1})".format(fntd.fn_name,\r
         ',\n    '.join(typeAsCtypes(a.argtype) for a in fntd.fn_args)))\r
 for udtype in user_defined_types:\r
     print("class %s(Structure): pass" % typemap[udtype])\r
@@ -154,21 +154,19 @@ for udtype in user_defined_types:
 print()\r
 print("# constant definitions")\r
 for en,ev in enum_constants:\r
-    print("{} = {}".format(en,ev))\r
+    print("{0} = {1}".format(en,ev))\r
 \r
 print()\r
 print("# functions")\r
 for fn in functions:\r
-    prefix = "{}.{}".format(module, fn.fn_name)\r
-    \r
-    print("{}.restype = {}".format(prefix, typeAsCtypes(fn.fn_type)))\r
+    prefix = "{0}.{1}".format(module, fn.fn_name)\r
+\r
+    print("{0}.restype = {1}".format(prefix, typeAsCtypes(fn.fn_type)))\r
     if fn.varargs:\r
         print("# warning - %s takes variable argument list" % prefix)\r
         del fn.fn_args[-1]\r
 \r
     if fn.fn_args.asList() != [['void']]:\r
-        print("{}.argtypes = ({},)".format(prefix, ','.join(typeAsCtypes(a.argtype) for a in fn.fn_args)))\r
+        print("{0}.argtypes = ({1},)".format(prefix, ','.join(typeAsCtypes(a.argtype) for a in fn.fn_args)))\r
     else:\r
         print("%s.argtypes = ()" % (prefix))\r
-        \r
-\r
index 6995b295eef21fe060dc7f13a15d45737fdee2bf..c87c0ae3b5cbeb8dbbdabf307544d947bff8885c 100644 (file)
@@ -6,7 +6,7 @@
 # Copyright 2004-2010, by Paul McGuire\r
 # September, 2010 - updated to more current use of setResultsName, new NIST URL\r
 #\r
-from pyparsing import (Word, Combine, Suppress, SkipTo, nums, makeHTMLTags,\r
+from pyparsing import (Word, Combine, SkipTo, nums, makeHTMLTags,\r
                         delimitedList, alphas, alphanums)\r
 try:\r
     import urllib.request\r
@@ -19,17 +19,17 @@ integer = Word(nums)
 ipAddress = Combine( integer + "." + integer + "." + integer + "." + integer )\r
 hostname = delimitedList(Word(alphas,alphanums+"-_"),".",combine=True)\r
 tdStart,tdEnd = makeHTMLTags("td")\r
-timeServerPattern =  (tdStart + hostname("hostname") + tdEnd + \r
-                      tdStart + ipAddress("ipAddr") + tdEnd + \r
+timeServerPattern =  (tdStart + hostname("hostname") + tdEnd +\r
+                      tdStart + ipAddress("ipAddr") + tdEnd +\r
                       tdStart + SkipTo(tdEnd)("loc") + tdEnd)\r
 \r
 # get list of time servers\r
-nistTimeServerURL = "http://tf.nist.gov/tf-cgi/servers.cgi#"\r
+nistTimeServerURL = "https://tf.nist.gov/tf-cgi/servers.cgi#"\r
 serverListPage = urlopen( nistTimeServerURL )\r
 serverListHTML = serverListPage.read().decode("UTF-8")\r
 serverListPage.close()\r
 \r
 addrs = {}\r
 for srvr,startloc,endloc in timeServerPattern.scanString( serverListHTML ):\r
-    print("{} ({}) - {}".format(srvr.ipAddr, srvr.hostname.strip(), srvr.loc.strip()))\r
+    print("{0} ({1}) - {2}".format(srvr.ipAddr, srvr.hostname.strip(), srvr.loc.strip()))\r
     addrs[srvr.ipAddr] = srvr.loc\r
index 921ac04cb03f05c73f44fda91ca709afd83bad8b..8dccd819d2fe1b7959aa9c80579140d24ef71b98 100644 (file)
@@ -1,4 +1,4 @@
-# vim:fileencoding=utf-8 \r
+# vim:fileencoding=utf-8\r
 #\r
 # greetingInGreek.py\r
 #\r
@@ -10,11 +10,10 @@ from pyparsing import Word, pyparsing_unicode
 \r
 # define grammar\r
 alphas = pyparsing_unicode.Greek.alphas\r
-greet = Word(alphas) + ',' + Word(alphas) + '!' \r
+greet = Word(alphas) + ',' + Word(alphas) + '!'\r
 \r
 # input string\r
 hello = "Καλημέρα, κόσμε!"\r
 \r
 # parse input string\r
 print(greet.parseString(hello))\r
-\r
index 2e9d4a1b2da6cbea0aaf457cc39dd1ee5aaa5cf7..7f5a17ebc6615bb7dab02866280315f5c11043c7 100644 (file)
@@ -1,4 +1,4 @@
-# vim:fileencoding=utf-8 \r
+# vim:fileencoding=utf-8\r
 #\r
 # greetingInKorean.py\r
 #\r
index 6ae2cc59ced4f23789e21069be00aa7dcb62bcb2..b24733e660aff74d155bdd59393029d7c90dc463 100644 (file)
@@ -1,33 +1,49 @@
-# -*- coding: UTF-8 -*-\r
+# -*- coding: utf-8 -*-\r
 \r
 # escrito por Marco Alfonso, 2004 Noviembre\r
 \r
-# importamos el modulo \r
-from pyparsing import * \r
-saludo= Word(alphas) + ',' + Word(alphas) + '!' \r
\r
-# Aqui decimos que la gramatica "saludo" DEBE contener \r
-# una palabra compuesta de caracteres alfanumericos \r
-# (Word(alphas)) mas una ',' mas otra palabra alfanumerica, \r
-# mas '!' y esos seian nuestros tokens \r
-tokens = saludo.parseString("Hola, Mundo !") \r
\r
-# Ahora parseamos una cadena, "Hola, Mundo!", \r
-# el metodo parseString, nos devuelve una lista con los tokens \r
-# encontrados, en caso de no haber errores... \r
-for i in range(len(tokens)):\r
-    print ("Token %d -> %s" % (i,tokens[i]))\r
-\r
-#imprimimos cada uno de los tokens Y listooo!!, he aquí a salida \r
+# importamos los símbolos requeridos desde el módulo\r
+from pyparsing import Word, alphas, oneOf, pyparsing_unicode, nums, Group, OneOrMore\r
+\r
+# usamos las letras en latin1, que incluye las como 'ñ', 'á', 'é', etc.\r
+alphas = pyparsing_unicode.Latin1.alphas\r
+\r
+# Aqui decimos que la gramatica "saludo" DEBE contener\r
+# una palabra compuesta de caracteres alfanumericos\r
+# (Word(alphas)) mas una ',' mas otra palabra alfanumerica,\r
+# mas '!' y esos seian nuestros tokens\r
+saludo = Word(alphas) + ',' + Word(alphas) + oneOf('! . ?')\r
+tokens = saludo.parseString("Hola, Mundo !")\r
+\r
+# Ahora parseamos una cadena, "Hola, Mundo!",\r
+# el metodo parseString, nos devuelve una lista con los tokens\r
+# encontrados, en caso de no haber errores...\r
+for i, token in enumerate(tokens):\r
+    print ("Token %d -> %s" % (i,token))\r
+\r
+#imprimimos cada uno de los tokens Y listooo!!, he aquí a salida\r
 # Token 0 -> Hola\r
 # Token 1 -> ,\r
-# Token 2-> Mundo \r
-# Token 3 -> ! \r
\r
-# Por supuesto, se pueden "reutilizar" gramáticas, por ejemplo: \r
-numimag = Word(nums) + 'i' \r
-numreal = Word(nums) \r
-numcomplex = numreal + '+' + numimag \r
+# Token 2-> Mundo\r
+# Token 3 -> !\r
+\r
+# ahora cambia el parseador, aceptando saludos con mas que una sola palabra antes que ','\r
+saludo = Group(OneOrMore(Word(alphas))) + ',' + Word(alphas) + oneOf('! . ?')\r
+tokens = saludo.parseString("Hasta mañana, Mundo !")\r
+\r
+for i, token in enumerate(tokens):\r
+    print ("Token %d -> %s" % (i,token))\r
+\r
+# Ahora parseamos algunas cadenas, usando el metodo runTests\r
+saludo.runTests("""\\r
+    Hola, Mundo!\r
+    Hasta mañana, Mundo !\r
+""", fullDump=False)\r
+\r
+# Por supuesto, se pueden "reutilizar" gramáticas, por ejemplo:\r
+numimag = Word(nums) + 'i'\r
+numreal = Word(nums)\r
+numcomplex = numreal + '+' + numimag\r
 print (numcomplex.parseString("3+5i"))\r
 \r
 # Cambiar a complejo numero durante parsear:\r
@@ -35,4 +51,3 @@ numcomplex.setParseAction(lambda t: complex(''.join(t).replace('i','j')))
 print (numcomplex.parseString("3+5i"))\r
 \r
 # Excelente!!, bueno, los dejo, me voy a seguir tirando código...\r
-\r
index 1d7a0f0ab33a99040196915705682340d22dcc8f..c3dbcf12a42e604424ea1fa8b5057e1ac8580333 100644 (file)
@@ -1,14 +1,14 @@
 #\r
 # htmlStripper.py\r
 #\r
-#  Sample code for stripping HTML markup tags and scripts from \r
+#  Sample code for stripping HTML markup tags and scripts from\r
 #  HTML source files.\r
 #\r
 # Copyright (c) 2006, 2016, Paul McGuire\r
 #\r
 from contextlib import closing\r
 import urllib.request, urllib.parse, urllib.error\r
-from pyparsing import (makeHTMLTags, SkipTo, commonHTMLEntity, replaceHTMLEntity, \r
+from pyparsing import (makeHTMLTags, SkipTo, commonHTMLEntity, replaceHTMLEntity,\r
     htmlComment, anyOpenTag, anyCloseTag, LineEnd, OneOrMore, replaceWith)\r
 \r
 scriptOpen,scriptClose = makeHTMLTags("script")\r
@@ -16,12 +16,12 @@ scriptBody = scriptOpen + SkipTo(scriptClose) + scriptClose
 commonHTMLEntity.setParseAction(replaceHTMLEntity)\r
 \r
 # get some HTML\r
-targetURL = "http://wiki.python.org/moin/PythonDecoratorLibrary"\r
+targetURL = "https://wiki.python.org/moin/PythonDecoratorLibrary"\r
 with closing(urllib.request.urlopen( targetURL )) as targetPage:\r
     targetHTML = targetPage.read().decode("UTF-8")\r
 \r
 # first pass, strip out tags and translate entities\r
-firstPass = (htmlComment | scriptBody | commonHTMLEntity | \r
+firstPass = (htmlComment | scriptBody | commonHTMLEntity |\r
              anyOpenTag | anyCloseTag ).suppress().transformString(targetHTML)\r
 \r
 # first pass leaves many blank lines, collapse these down\r
@@ -29,4 +29,4 @@ repeatedNewlines = LineEnd() + OneOrMore(LineEnd())
 repeatedNewlines.setParseAction(replaceWith("\n\n"))\r
 secondPass = repeatedNewlines.transformString(firstPass)\r
 \r
-print(secondPass)
\ No newline at end of file
+print(secondPass)\r
index a147a05dc446b6122cc008b6ad62ae416fbd26ff..261cea35fd8970b62ca42aff8c6952311e77b3e4 100644 (file)
@@ -5,11 +5,11 @@
 """\r
 Parser for HTTP server log output, of the form:\r
 \r
-195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] \r
-"GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" \r
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800]\r
+"GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html"\r
 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"\r
-127.0.0.1 - u.surname@domain.com [12/Sep/2006:14:13:53 +0300] \r
-"GET /skins/monobook/external.png HTTP/1.0" 304 - "http://wiki.mysite.com/skins/monobook/main.css" \r
+127.0.0.1 - u.surname@domain.com [12/Sep/2006:14:13:53 +0300]\r
+"GET /skins/monobook/external.png HTTP/1.0" 304 - "http://wiki.mysite.com/skins/monobook/main.css"\r
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6"\r
 \r
 You can then break it up as follows:\r
@@ -32,30 +32,30 @@ def getCmdFields( s, l, t ):
 logLineBNF = None\r
 def getLogLineBNF():\r
     global logLineBNF\r
-    \r
+\r
     if logLineBNF is None:\r
         integer = Word( nums )\r
         ipAddress = delimitedList( integer, ".", combine=True )\r
-        \r
+\r
         timeZoneOffset = Word("+-",nums)\r
         month = Word(string.uppercase, string.lowercase, exact=3)\r
-        serverDateTime = Group( Suppress("[") + \r
+        serverDateTime = Group( Suppress("[") +\r
                                 Combine( integer + "/" + month + "/" + integer +\r
                                         ":" + integer + ":" + integer + ":" + integer ) +\r
-                                timeZoneOffset + \r
+                                timeZoneOffset +\r
                                 Suppress("]") )\r
-                         \r
-        logLineBNF = ( ipAddress.setResultsName("ipAddr") + \r
+\r
+        logLineBNF = ( ipAddress.setResultsName("ipAddr") +\r
                        Suppress("-") +\r
                        ("-" | Word( alphas+nums+"@._" )).setResultsName("auth") +\r
-                       serverDateTime.setResultsName("timestamp") + \r
+                       serverDateTime.setResultsName("timestamp") +\r
                        dblQuotedString.setResultsName("cmd").setParseAction(getCmdFields) +\r
-                       (integer | "-").setResultsName("statusCode") + \r
-                       (integer | "-").setResultsName("numBytesSent")  + \r
+                       (integer | "-").setResultsName("statusCode") +\r
+                       (integer | "-").setResultsName("numBytesSent")  +\r
                        dblQuotedString.setResultsName("referrer").setParseAction(removeQuotes) +\r
                        dblQuotedString.setResultsName("clientSfw").setParseAction(removeQuotes) )\r
     return logLineBNF\r
-    \r
+\r
 testdata = """\r
 195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"\r
 111.111.111.11 - - [16/Feb/2004:04:09:49 -0800] "GET /ads/redirectads/336x280redirect.htm HTTP/1.1" 304 - "http://www.foobarp.org/theme_detail.php?type=vs&cat=0&mid=27512" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"\r
index b94bac4c56745b96c47c11a0f7aea08a746db227..1daaf2491b6024a97bcd9cdb3798e3bf57c0816e 100644 (file)
@@ -6,39 +6,39 @@
 # Copyright (c) 2003, Paul McGuire\r
 #\r
 \r
-from pyparsing import Literal, CaselessLiteral, Word, OneOrMore, ZeroOrMore, \\r
-        Forward, NotAny, delimitedList, oneOf, Group, Optional, Combine, alphas, nums, restOfLine, cStyleComment, \\r
-        alphanums, printables, empty, quotedString, ParseException, ParseResults, Keyword, Regex\r
+from pyparsing import Literal, Word, OneOrMore, ZeroOrMore, \\r
+        Forward, delimitedList, Group, Optional, alphas, restOfLine, cStyleComment, \\r
+        alphanums, quotedString, ParseException, Keyword, Regex\r
 import pprint\r
 #~ import tree2image\r
 \r
 bnf = None\r
 def CORBA_IDL_BNF():\r
     global bnf\r
-    \r
+\r
     if not bnf:\r
 \r
         # punctuation\r
         (colon,lbrace,rbrace,lbrack,rbrack,lparen,rparen,\r
         equals,comma,dot,slash,bslash,star,semi,langle,rangle) = map(Literal, r":{}[]()=,./\*;<>")\r
-        \r
+\r
         # keywords\r
-        (any_, attribute_, boolean_, case_, char_, const_, context_, default_, double_, enum_, exception_, \r
-        FALSE_, fixed_, float_, inout_, interface_, in_, long_, module_, Object_, octet_, oneway_, out_, raises_, \r
-        readonly_, sequence_, short_, string_, struct_, switch_, TRUE_, typedef_, unsigned_, union_, void_, \r
-        wchar_, wstring_) = map(Keyword, """any attribute boolean case char const context \r
-            default double enum exception FALSE fixed float inout interface in long module \r
+        (any_, attribute_, boolean_, case_, char_, const_, context_, default_, double_, enum_, exception_,\r
+        FALSE_, fixed_, float_, inout_, interface_, in_, long_, module_, Object_, octet_, oneway_, out_, raises_,\r
+        readonly_, sequence_, short_, string_, struct_, switch_, TRUE_, typedef_, unsigned_, union_, void_,\r
+        wchar_, wstring_) = map(Keyword, """any attribute boolean case char const context\r
+            default double enum exception FALSE fixed float inout interface in long module\r
             Object octet oneway out raises readonly sequence short string struct switch\r
             TRUE typedef unsigned union void wchar wstring""".split())\r
-        \r
+\r
         identifier = Word( alphas, alphanums + "_" ).setName("identifier")\r
-        \r
+\r
         real = Regex(r"[+-]?\d+\.\d*([Ee][+-]?\d+)?").setName("real")\r
         integer = Regex(r"0x[0-9a-fA-F]+|[+-]?\d+").setName("int")\r
 \r
         udTypeName = delimitedList( identifier, "::", combine=True ).setName("udType")\r
-        typeName = ( any_ | boolean_ | char_ | double_ | fixed_ | \r
-                    float_ | long_ | octet_ | short_ | string_ | \r
+        typeName = ( any_ | boolean_ | char_ | double_ | fixed_ |\r
+                    float_ | long_ | octet_ | short_ | string_ |\r
                     wchar_ | wstring_ | udTypeName ).setName("type")\r
         sequenceDef = Forward().setName("seq")\r
         sequenceDef << Group( sequence_ + langle + ( sequenceDef | typeName ) + rangle )\r
@@ -60,11 +60,11 @@ def CORBA_IDL_BNF():
         moduleDef << module_ + identifier + lbrace + ZeroOrMore( moduleItem ) + rbrace + semi\r
 \r
         bnf = ( moduleDef | OneOrMore( moduleItem ) )\r
-        \r
+\r
         singleLineComment = "//" + restOfLine\r
         bnf.ignore( singleLineComment )\r
         bnf.ignore( cStyleComment )\r
-        \r
+\r
     return bnf\r
 \r
 testnum = 1\r
@@ -84,7 +84,7 @@ def test( strng ):
         print(" "*(err.column-1) + "^")\r
         print(err)\r
     print()\r
-    \r
+\r
 if __name__ == "__main__":\r
     test(\r
         """\r
@@ -94,7 +94,7 @@ if __name__ == "__main__":
         typedef string[10] tenStrings;\r
         typedef sequence<string> stringSeq;\r
         typedef sequence< sequence<string> > stringSeqSeq;\r
-        \r
+\r
         interface QoSAdmin {\r
             stringSeq method1( in string arg1, inout long arg2 );\r
             stringSeqSeq method2( in string arg1, inout long arg2, inout long arg3);\r
@@ -108,14 +108,14 @@ if __name__ == "__main__":
          * a block comment *\r
          */\r
         typedef string[10] tenStrings;\r
-        typedef \r
+        typedef\r
             /** ** *** **** *\r
              * a block comment *\r
              */\r
             sequence<string> /*comment inside an And */ stringSeq;\r
         /* */  /**/ /***/ /****/\r
         typedef sequence< sequence<string> > stringSeqSeq;\r
-        \r
+\r
         interface QoSAdmin {\r
             stringSeq method1( in string arg1, inout long arg2 );\r
             stringSeqSeq method2( in string arg1, inout long arg2, inout long arg3);\r
@@ -135,7 +135,7 @@ if __name__ == "__main__":
             string msg;\r
             sequence<string> dataStrings;\r
             };\r
-          \r
+\r
           interface TestInterface\r
             {\r
             void method1( in string arg1, inout long arg2 );\r
@@ -144,16 +144,16 @@ if __name__ == "__main__":
         )\r
     test(\r
         """\r
-        module Test1 \r
+        module Test1\r
           {\r
           exception TestException\r
             {\r
             string msg;\r
             ];\r
-          \r
+\r
           interface TestInterface\r
             {\r
-            void method1( in string arg1, inout long arg2 ) \r
+            void method1( in string arg1, inout long arg2 )\r
               raises ( TestException );\r
             };\r
           };\r
@@ -161,13 +161,13 @@ if __name__ == "__main__":
         )\r
     test(\r
         """\r
-        module Test1 \r
+        module Test1\r
           {\r
           exception TestException\r
             {\r
             string msg;\r
             };\r
-    \r
+\r
           };\r
         """\r
         )\r
index 442e6a493cf52bc0fa6fabf5bf180922dd2624c1..0133a9e100029a2823ac82cffdae9430c019d07c 100644 (file)
@@ -2,7 +2,7 @@
 #\r
 # Copyright (c) 2006,2016  Paul McGuire\r
 #\r
-# A sample of a pyparsing grammar using indentation for \r
+# A sample of a pyparsing grammar using indentation for\r
 # grouping (like Python does).\r
 #\r
 # Updated to use indentedBlock helper method.\r
@@ -51,4 +51,3 @@ module_body = OneOrMore(stmt)
 print(data)\r
 parseTree = module_body.parseString(data)\r
 parseTree.pprint()\r
-\r
index aea3b55a0bc1e4ce7411ecace96628df198655e5..e935b3bc36183698c15c1c578db98b56fbef2255 100644 (file)
@@ -1,4 +1,4 @@
-# \r
+#\r
 # invRegex.py\r
 #\r
 # Copyright 2008, Paul McGuire\r
@@ -13,7 +13,7 @@
 #\r
 __all__ = ["count","invert"]\r
 \r
-from pyparsing import (Literal, oneOf, printables, ParserElement, Combine, \r
+from pyparsing import (Literal, oneOf, printables, ParserElement, Combine,\r
     SkipTo, infixNotation, ParseFatalException, Word, nums, opAssoc,\r
     Suppress, ParseResults, srange)\r
 \r
@@ -76,7 +76,7 @@ class AlternativeEmitter(object):
                 for s in e.makeGenerator()():\r
                     yield s\r
         return altGen\r
-        \r
+\r
 class LiteralEmitter(object):\r
     def __init__(self,lit):\r
         self.lit = lit\r
@@ -91,7 +91,7 @@ class LiteralEmitter(object):
 \r
 def handleRange(toks):\r
     return CharacterRangeEmitter(srange(toks[0]))\r
-    \r
+\r
 def handleRepetition(toks):\r
     toks=toks[0]\r
     if toks[1] in "*+":\r
@@ -111,7 +111,7 @@ def handleRepetition(toks):
             return GroupEmitter([toks[0]] * mincount + [opt])\r
         else:\r
             return [toks[0]] * mincount\r
-            \r
+\r
 def handleLiteral(toks):\r
     lit = ""\r
     for t in toks:\r
@@ -122,7 +122,7 @@ def handleLiteral(toks):
                 lit += t[1]\r
         else:\r
             lit += t\r
-    return LiteralEmitter(lit)    \r
+    return LiteralEmitter(lit)\r
 \r
 def handleMacro(toks):\r
     macroChar = toks[0][1]\r
@@ -163,14 +163,14 @@ def parser():
         repetition = (\r
             ( lbrace + Word(nums)("count") + rbrace ) |\r
             ( lbrace + Word(nums)("minCount")+","+ Word(nums)("maxCount") + rbrace ) |\r
-            oneOf(list("*+?")) \r
+            oneOf(list("*+?"))\r
             )\r
 \r
         reRange.setParseAction(handleRange)\r
         reLiteral.setParseAction(handleLiteral)\r
         reMacro.setParseAction(handleMacro)\r
         reDot.setParseAction(handleDot)\r
-        \r
+\r
         reTerm = ( reLiteral | reRange | reMacro | reDot | reNonCaptureGroup)\r
         reExpr = infixNotation( reTerm,\r
             [\r
@@ -180,7 +180,7 @@ def parser():
             ]\r
             )\r
         _parser = reExpr\r
-        \r
+\r
     return _parser\r
 \r
 def count(gen):\r
@@ -232,7 +232,7 @@ def main():
     (Fri|Mon|S(atur|un)|T(hur|ue)s|Wednes)day\r
     A(pril|ugust)|((Dec|Nov|Sept)em|Octo)ber|(Febr|Jan)uary|Ju(ly|ne)|Ma(rch|y)\r
     """.split('\n')\r
-    \r
+\r
     for t in tests:\r
         t = t.strip()\r
         if not t: continue\r
index f080c6ccc9c28111f1ff0e18bfbf932c065503ff..6319c36b515bccbfbca4cb8f7d81768c5d8a02af 100644 (file)
 # Updated 9 Aug 2016 - use more current pyparsing constructs/idioms\r
 #\r
 json_bnf = """\r
-object \r
-    { members } \r
-    {} \r
-members \r
-    string : value \r
-    members , string : value \r
-array \r
+object\r
+    { members }\r
+    {}\r
+members\r
+    string : value\r
+    members , string : value\r
+array\r
     [ elements ]\r
-    [] \r
-elements \r
-    value \r
-    elements , value \r
-value \r
+    []\r
+elements\r
+    value\r
+    elements , value\r
+value\r
     string\r
     number\r
     object\r
@@ -55,10 +55,10 @@ memberDef = Group(jsonString + COLON + jsonValue)
 jsonMembers = delimitedList(memberDef)\r
 jsonObject << Dict(LBRACE + Optional(jsonMembers) + RBRACE)\r
 \r
-jsonComment = cppStyleComment \r
+jsonComment = cppStyleComment\r
 jsonObject.ignore(jsonComment)\r
 \r
-    \r
+\r
 if __name__ == "__main__":\r
     testdata = """\r
     {\r
@@ -66,7 +66,7 @@ if __name__ == "__main__":
             "title": "example glossary",\r
             "GlossDiv": {\r
                 "title": "S",\r
-                "GlossList": \r
+                "GlossList":\r
                     {\r
                     "ID": "SGML",\r
                     "SortAs": "SGML",\r
@@ -103,5 +103,3 @@ if __name__ == "__main__":
     testPrint( results.glossary.GlossDiv.GlossList.Acronym )\r
     testPrint( results.glossary.GlossDiv.GlossList.EvenPrimesGreaterThan2 )\r
     testPrint( results.glossary.GlossDiv.GlossList.PrimesLessThan10 )\r
-\r
-\r
index 1186f4840a897e99eb87038e8af59fab037e991d..0f84e10f6ea5363febcc7426863cc6918cddd873 100644 (file)
@@ -22,8 +22,8 @@ def reportLongWords(st,locn,toks):
         print("The full line of text was:")\r
         print("'%s'" % line(locn,st))\r
         print((" "*col(locn,st))+" ^")\r
-        print() \r
-        \r
+        print()\r
+\r
 wd = Word(alphas).setParseAction( reportLongWords )\r
 OneOrMore(wd).parseString(data)\r
 \r
@@ -39,7 +39,7 @@ class Token(object):
         self.col = col(locn,st)\r
     def __str__(self):\r
         return "%(tokenString)s (line: %(lineNo)d, col: %(col)d)" % self.__dict__\r
-        \r
+\r
 def createTokenObject(st,locn,toks):\r
     return Token(st,locn, toks[0])\r
 \r
index 1b1bdd4b5553d5953df5534ebcc2756af645f178..7301c840bbc1facd2f5446bc5f4e7e0bceb9d9bd 100644 (file)
@@ -49,4 +49,3 @@ print(sorted(set(results.cons)))
 print('')\r
 print(results.others)\r
 print(sorted(set(results.others)))\r
-\r
index 6e404d83e1d1e807bea4f6c098d5db540dd4f7ad..6afaad4f292c34d249963e5e076b266a59a8ecb0 100644 (file)
@@ -8,7 +8,7 @@
 #\r
 \r
 from pyparsing import (Literal, CaselessKeyword, Forward, Regex, QuotedString, Suppress,\r
-    Optional, Group, FollowedBy, infixNotation, opAssoc, ParseException, ParserElement,\r
+    Optional, Group, infixNotation, opAssoc, ParserElement,\r
     pyparsing_common)\r
 ParserElement.enablePackrat()\r
 \r
@@ -19,7 +19,7 @@ keyword = and_ | or_ | not_ | to_
 \r
 expression = Forward()\r
 \r
-valid_word = Regex(r'([a-zA-Z0-9*_+.-]|\\[!(){}\[\]^"~*?\\:])+').setName("word")\r
+valid_word = Regex(r'([a-zA-Z0-9*_+.-]|\\\\|\\([+\-!(){}\[\]^"~*?:]|\|\||&&))+').setName("word")\r
 valid_word.setParseAction(\r
     lambda t : t[0].replace('\\\\',chr(127)).replace('\\','').replace(chr(127),'\\')\r
     )\r
@@ -42,11 +42,11 @@ boost = (CARAT + number("boost"))
 \r
 string_expr = Group(string + proximity_modifier) | string\r
 word_expr = Group(valid_word + fuzzy_modifier) | valid_word\r
-term << (Optional(field_name("field") + COLON) + \r
+term << (Optional(field_name("field") + COLON) +\r
          (word_expr | string_expr | range_search | Group(LPAR + expression + RPAR)) +\r
          Optional(boost))\r
 term.setParseAction(lambda t:[t] if 'field' in t or 'boost' in t else None)\r
-    \r
+\r
 expression << infixNotation(term,\r
     [\r
     (required_modifier | prohibit_modifier, 1, opAssoc.RIGHT),\r
@@ -57,6 +57,7 @@ expression << infixNotation(term,
 \r
 # test strings taken from grammar description doc, and TestQueryParser.java\r
 tests = r"""\r
+    # Success tests\r
     a and b\r
     a and not b\r
     a and !b\r
@@ -225,6 +226,8 @@ tests = r"""
     \*\r
     *\r
     \\\r
+    \||\r
+    \&&\r
     a\:b\:c\r
     a\\b\:c\r
     a\:b\\c\r
@@ -266,6 +269,7 @@ tests = r"""
     """\r
 \r
 failtests = r"""\r
+    # Failure tests\r
     field:term:with:colon some more terms\r
     (sub query)^5.0^2.0 plus more\r
     a:b:c\r
@@ -302,7 +306,7 @@ failtests = r"""
     XY\u005A\r
     item:\ item:ABCD\\r
     \\r
-    a\ or b    \r
+    a\ or b\r
     a\:b\-c\r
     a\:b\+c\r
     a\:b\-c\*\r
@@ -315,5 +319,8 @@ failtests = r"""
 \r
 success1, _ = expression.runTests(tests)\r
 success2, _ = expression.runTests(failtests, failureTests=True)\r
-    \r
+\r
 print(("FAIL", "OK")[success1 and success2])\r
+\r
+if not (success1 and success2):\r
+    raise Exception("failure in lucene grammar parser, check output")\r
index 327976c5757a2eebe8f6179001e4070265bcac21..c6b7034b44efa6d6d42f6738bf65abc8bb338166 100644 (file)
@@ -1,6 +1,6 @@
 # macroExpander.py\r
 #\r
-# Example pyparsing program for performing macro expansion, similar to \r
+# Example pyparsing program for performing macro expansion, similar to\r
 # the C pre-processor.  This program is not as fully-featured, simply\r
 # processing macros of the form:\r
 #     #def xxx yyyyy\r
 #\r
 from pyparsing import *\r
 \r
-# define the structure of a macro definition (the empty term is used \r
+# define the structure of a macro definition (the empty term is used\r
 # to advance to the next non-whitespace character)\r
 identifier = Word(alphas+"_",alphanums+"_")\r
 macroDef = "#def" + identifier("macro") + empty + restOfLine("value")\r
-                \r
+\r
 # define a placeholder for defined macros - initially nothing\r
 macroExpr = Forward()\r
 macroExpr << NoMatch()\r
index 3b771c756bff24fa08c84acd49e5d0760707e27d..76774bfd492f8d74048f1ad19331a6b5eeed1530 100644 (file)
@@ -3,7 +3,7 @@ import urllib.request, urllib.parse, urllib.error
 from pyparsing import makeHTMLTags, SkipTo\r
 \r
 # read HTML from a web page\r
-serverListPage = urllib.request.urlopen( "http://www.yahoo.com" )\r
+serverListPage = urllib.request.urlopen( "https://www.yahoo.com/" )\r
 htmlText = serverListPage.read()\r
 serverListPage.close()\r
 \r
index f0812e96ac65c33837362cafed60aff7331dbbd9..34991f87598f92512521905f1a940376303b81b6 100644 (file)
@@ -8,11 +8,11 @@ src = """
 class a\r
 ...\r
 end a;\r
\r
+\r
 class b\r
 ...\r
 end b;\r
\r
+\r
 class c\r
 ...\r
 end d;"""\r
@@ -20,7 +20,7 @@ end d;"""
 \r
 identifier = Word(alphas)\r
 \r
-classIdent = identifier("classname")  # note that this also makes a copy of identifier \r
+classIdent = identifier("classname")  # note that this also makes a copy of identifier\r
 classHead = "class" + classIdent\r
 classBody = "..."\r
 classEnd = "end" + matchPreviousLiteral(classIdent) + ';'\r
@@ -30,4 +30,4 @@ classDefn = classHead + classBody + classEnd
 # classDefn = classHead + classBody - classEnd\r
 \r
 for tokens in classDefn.searchString(src):\r
-    print(tokens.classname)
\ No newline at end of file
+    print(tokens.classname)\r
index b0cd14f5f90b37bcb0b1fe2d7b449fe2f5a001ae..2633eb8639d221e29189d928c61fb85189232034 100644 (file)
@@ -1,81 +1,81 @@
-from pyparsing import Optional, oneOf, Dict, Literal, Word, printables, Group, OneOrMore, ZeroOrMore\r
-\r
-"""\r
-A simple parser for calendar (*.ics) files,\r
-as exported by the Mozilla calendar.\r
-\r
-Any suggestions and comments welcome.\r
-\r
-Version:   0.1\r
-Copyright: Petri Savolainen <firstname.lastname@iki.fi>\r
-License:   Free for any use\r
-"""\r
-\r
-\r
-# TERMINALS\r
-\r
-BEGIN      =   Literal("BEGIN:").suppress()\r
-END        =   Literal("END:").suppress()\r
-valstr     =   printables + "\xe4\xf6\xe5\xd6\xc4\xc5 "\r
-\r
-EQ         =   Literal("=").suppress()\r
-SEMI       =   Literal(";").suppress()\r
-COLON      =   Literal(":").suppress()\r
-\r
-EVENT      =   Literal("VEVENT").suppress()\r
-CALENDAR   =   Literal("VCALENDAR").suppress()\r
-ALARM      =   Literal("VALARM").suppress()\r
-\r
-# TOKENS\r
-\r
-CALPROP   =   oneOf("VERSION PRODID METHOD")\r
-ALMPROP   =   oneOf("TRIGGER")\r
-EVTPROP   =   oneOf("X-MOZILLA-RECUR-DEFAULT-INTERVAL \\r
-                     X-MOZILLA-RECUR-DEFAULT-UNITS \\r
-                     UID DTSTAMP LAST-MODIFIED X RRULE EXDATE")\r
-\r
-propval   =   Word(valstr)\r
-typeval   =   Word(valstr)\r
-typename  =   oneOf("VALUE MEMBER FREQ UNTIL INTERVAL")\r
-\r
-proptype = Group(SEMI + typename + EQ + typeval).suppress()\r
-\r
-calprop = Group(CALPROP + ZeroOrMore(proptype) + COLON + propval)\r
-almprop = Group(ALMPROP + ZeroOrMore(proptype) + COLON + propval)\r
-evtprop = Group(EVTPROP + ZeroOrMore(proptype) + COLON + propval).suppress() \\r
-   | "CATEGORIES" + COLON + propval.setResultsName("categories") \\r
-   | "CLASS" + COLON + propval.setResultsName("class") \\r
-   | "DESCRIPTION" + COLON + propval.setResultsName("description") \\r
-   | "DTSTART" + proptype + COLON + propval.setResultsName("begin") \\r
-   | "DTEND" + proptype + COLON + propval.setResultsName("end") \\r
-   | "LOCATION" + COLON + propval.setResultsName("location") \\r
-   | "PRIORITY" + COLON + propval.setResultsName("priority") \\r
-   | "STATUS" + COLON + propval.setResultsName("status") \\r
-   | "SUMMARY" + COLON + propval.setResultsName("summary") \\r
-   | "URL" + COLON + propval.setResultsName("url") \\r
-\r
-calprops = Group(OneOrMore(calprop)).suppress()\r
-evtprops = Group(OneOrMore(evtprop))\r
-almprops = Group(OneOrMore(almprop)).suppress()\r
-\r
-alarm      = BEGIN + ALARM + almprops + END + ALARM\r
-event      = BEGIN + EVENT + evtprops + Optional(alarm) + END + EVENT\r
-events     = Group(OneOrMore(event))\r
-calendar   = BEGIN + CALENDAR + calprops + ZeroOrMore(event) + END + CALENDAR\r
-calendars  =   OneOrMore(calendar)\r
-\r
-\r
-# PARSE ACTIONS\r
-\r
-def gotEvent(s,loc,toks):\r
-   for event in toks:\r
-      print(event.dump())\r
-\r
-event.setParseAction(gotEvent)\r
-\r
-\r
-# MAIN PROGRAM\r
-\r
-if __name__=="__main__":\r
-\r
-   calendars.parseFile("mozilla.ics")\r
+from pyparsing import Optional, oneOf, Literal, Word, printables, Group, OneOrMore, ZeroOrMore
+
+"""
+A simple parser for calendar (*.ics) files,
+as exported by the Mozilla calendar.
+
+Any suggestions and comments welcome.
+
+Version:   0.1
+Copyright: Petri Savolainen <firstname.lastname@iki.fi>
+License:   Free for any use
+"""
+
+
+# TERMINALS
+
+BEGIN      =   Literal("BEGIN:").suppress()
+END        =   Literal("END:").suppress()
+valstr     =   printables + "\xe4\xf6\xe5\xd6\xc4\xc5 "
+
+EQ         =   Literal("=").suppress()
+SEMI       =   Literal(";").suppress()
+COLON      =   Literal(":").suppress()
+
+EVENT      =   Literal("VEVENT").suppress()
+CALENDAR   =   Literal("VCALENDAR").suppress()
+ALARM      =   Literal("VALARM").suppress()
+
+# TOKENS
+
+CALPROP   =   oneOf("VERSION PRODID METHOD")
+ALMPROP   =   oneOf("TRIGGER")
+EVTPROP   =   oneOf("X-MOZILLA-RECUR-DEFAULT-INTERVAL \
+                     X-MOZILLA-RECUR-DEFAULT-UNITS \
+                     UID DTSTAMP LAST-MODIFIED X RRULE EXDATE")
+
+propval   =   Word(valstr)
+typeval   =   Word(valstr)
+typename  =   oneOf("VALUE MEMBER FREQ UNTIL INTERVAL")
+
+proptype = Group(SEMI + typename + EQ + typeval).suppress()
+
+calprop = Group(CALPROP + ZeroOrMore(proptype) + COLON + propval)
+almprop = Group(ALMPROP + ZeroOrMore(proptype) + COLON + propval)
+evtprop = Group(EVTPROP + ZeroOrMore(proptype) + COLON + propval).suppress() \
+   | "CATEGORIES" + COLON + propval.setResultsName("categories") \
+   | "CLASS" + COLON + propval.setResultsName("class") \
+   | "DESCRIPTION" + COLON + propval.setResultsName("description") \
+   | "DTSTART" + proptype + COLON + propval.setResultsName("begin") \
+   | "DTEND" + proptype + COLON + propval.setResultsName("end") \
+   | "LOCATION" + COLON + propval.setResultsName("location") \
+   | "PRIORITY" + COLON + propval.setResultsName("priority") \
+   | "STATUS" + COLON + propval.setResultsName("status") \
+   | "SUMMARY" + COLON + propval.setResultsName("summary") \
+   | "URL" + COLON + propval.setResultsName("url") \
+
+calprops = Group(OneOrMore(calprop)).suppress()
+evtprops = Group(OneOrMore(evtprop))
+almprops = Group(OneOrMore(almprop)).suppress()
+
+alarm      = BEGIN + ALARM + almprops + END + ALARM
+event      = BEGIN + EVENT + evtprops + Optional(alarm) + END + EVENT
+events     = Group(OneOrMore(event))
+calendar   = BEGIN + CALENDAR + calprops + ZeroOrMore(event) + END + CALENDAR
+calendars  =   OneOrMore(calendar)
+
+
+# PARSE ACTIONS
+
+def gotEvent(s,loc,toks):
+   for event in toks:
+      print(event.dump())
+
+event.setParseAction(gotEvent)
+
+
+# MAIN PROGRAM
+
+if __name__=="__main__":
+
+   calendars.parseFile("mozilla.ics")
index 24cf2f462dc3c46de92762b85dd8f0456c6e532f..2e71d626e9aa09194c9875d83ef87198bb964694 100644 (file)
@@ -7,15 +7,14 @@
 #\r
 \r
 from pyparsing import *\r
-import pprint\r
 \r
 data = """\r
-{ \r
-     { item1 "item with } in it" } \r
-     { \r
-      {item2a item2b } \r
-      {item3} \r
-     } \r
+{\r
+     { item1 "item with } in it" }\r
+     {\r
+      {item2a item2b }\r
+      {item3}\r
+     }\r
 \r
 }\r
 """\r
@@ -27,4 +26,3 @@ print(( (nestedItems+stringEnd).parseString(data).asList() ))
 # use default delimiters of ()'s\r
 mathExpr = nestedExpr()\r
 print(( mathExpr.parseString( "((( ax + by)*C) *(Z | (E^F) & D))") ))\r
-\r
index 5ab99ddb7c425a007999a89988aa3d25ff7feea0..0af3cae79a53a3383141eef94509215717c1a92e 100644 (file)
@@ -9,41 +9,41 @@
 # Format samples from https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html\r
 #\r
 tests = """\\r
-# Canadian (English and French) \r
-4 294 967 295,000  \r
+# Canadian (English and French)\r
+4 294 967 295,000\r
 \r
-# Danish \r
-4 294 967 295,000 \r
+# Danish\r
+4 294 967 295,000\r
 \r
-# Finnish \r
-4 294 967 295,000 \r
+# Finnish\r
+4 294 967 295,000\r
 \r
-# French \r
-4 294 967 295,000  \r
+# French\r
+4 294 967 295,000\r
 \r
-# German \r
-4 294 967 295,000  \r
+# German\r
+4 294 967 295,000\r
 \r
-# Italian \r
-4.294.967.295,000 \r
+# Italian\r
+4.294.967.295,000\r
 \r
-# Norwegian \r
-4.294.967.295,000  \r
+# Norwegian\r
+4.294.967.295,000\r
 \r
-# Spanish \r
-4.294.967.295,000  \r
+# Spanish\r
+4.294.967.295,000\r
 \r
-# Swedish \r
-4 294 967 295,000  \r
+# Swedish\r
+4 294 967 295,000\r
 \r
-# GB-English \r
-4,294,967,295.000  \r
+# GB-English\r
+4,294,967,295.000\r
 \r
-# US-English \r
-4,294,967,295.000  \r
+# US-English\r
+4,294,967,295.000\r
 \r
-# Thai \r
-4,294,967,295.000 \r
+# Thai\r
+4,294,967,295.000\r
 """\r
 \r
 from pyparsing import Regex\r
index cf656ecae275745daefefe0e06941ee0c891f271..c8b95b147d754cfa89a20155646899a487e19241 100644 (file)
@@ -5,7 +5,7 @@
 #   Copyright, 2010, Paul McGuire\r
 #\r
 """\r
-http://www.ioccc.org/1996/august.hint\r
+https://www.ioccc.org/1996/august.hint\r
 \r
 The following is a description of the OC grammar:\r
 \r
@@ -74,7 +74,7 @@ from pyparsing import *
 ParserElement.enablePackrat()\r
 \r
 LPAR,RPAR,LBRACK,RBRACK,LBRACE,RBRACE,SEMI,COMMA = map(Suppress, "()[]{};,")\r
-INT, CHAR, WHILE, DO, IF, ELSE, RETURN = map(Keyword, \r
+INT, CHAR, WHILE, DO, IF, ELSE, RETURN = map(Keyword,\r
     "int char while do if else return".split())\r
 \r
 NAME = Word(alphas+"_", alphanums+"_")\r
@@ -86,7 +86,7 @@ TYPE = Group((INT | CHAR) + ZeroOrMore("*"))
 expr = Forward()\r
 func_call = Group(NAME + LPAR + Group(Optional(delimitedList(expr))) + RPAR)\r
 operand = func_call | NAME | integer | char | string_\r
-expr <<= (infixNotation(operand, \r
+expr <<= (infixNotation(operand,\r
     [\r
     (oneOf('! - *'), 1, opAssoc.RIGHT),\r
     (oneOf('++ --'), 1, opAssoc.RIGHT),\r
@@ -95,8 +95,8 @@ expr <<= (infixNotation(operand,
     (oneOf('+ -'), 2, opAssoc.LEFT),\r
     (oneOf('< == > <= >= !='), 2, opAssoc.LEFT),\r
     (Regex(r'(?<!=)=(?!=)'), 2, opAssoc.LEFT),\r
-    ]) + \r
-    Optional( LBRACK + expr + RBRACK | \r
+    ]) +\r
+    Optional( LBRACK + expr + RBRACK |\r
               LPAR + Group(Optional(delimitedList(expr))) + RPAR )\r
     )\r
 \r
@@ -110,7 +110,7 @@ returnstmt = RETURN - expr + SEMI
 stmt << Group( ifstmt |\r
           whilestmt |\r
           dowhilestmt |\r
-          returnstmt | \r
+          returnstmt |\r
           expr + SEMI |\r
           LBRACE + ZeroOrMore(stmt) + RBRACE |\r
           SEMI)\r
index 53c61fcbb2be749af37c212add56da775615de75..351dad2a9ccf945eddb6abf93da3e161e5194dfb 100644 (file)
@@ -35,11 +35,11 @@ noneLiteral = Literal("None").setParseAction(replaceWith(None))
 listItem = real|integer|quotedString|unicodeString|boolLiteral|noneLiteral| \\r
             Group(listStr) | tupleStr | dictStr\r
 \r
-tupleStr << ( Suppress("(") + Optional(delimitedList(listItem)) + \r
+tupleStr << ( Suppress("(") + Optional(delimitedList(listItem)) +\r
             Optional(Suppress(",")) + Suppress(")") )\r
 tupleStr.setParseAction( cvtTuple )\r
 \r
-listStr << (lbrack + Optional(delimitedList(listItem) + \r
+listStr << (lbrack + Optional(delimitedList(listItem) +\r
             Optional(Suppress(","))) + rbrack)\r
 listStr.setParseAction(cvtList, lambda t: t[0])\r
 \r
index a18ba293194513cd8c563c377feee0a454cd101e..2c0f9fcecf301a2233e41a4cc385d9b26f500b70 100644 (file)
@@ -21,5 +21,3 @@ for test in (samplestr1,samplestr2,samplestr3,samplestr4,):
     print(person.id)\r
     print(person.dump())\r
     print()\r
-\r
-    \r
index 3846310542750d2aea870926d9567447494f5d8d..da19033e96e6d924d2231ff56b6927522ecd6ab9 100644 (file)
@@ -2,12 +2,12 @@
 # parseTabularData.py\r
 #\r
 # Example of parsing data that is formatted in a tabular listing, with\r
-# potential for missing values. Uses new addCondition method on \r
+# potential for missing values. Uses new addCondition method on\r
 # ParserElements.\r
 #\r
 # Copyright 2015, Paul McGuire\r
 #\r
-from pyparsing import col,Word,Optional,alphas,nums,ParseException\r
+from pyparsing import col,Word,Optional,alphas,nums\r
 \r
 table = """\\r
          1         2\r
@@ -27,20 +27,20 @@ def mustMatchCols(startloc,endloc):
 def tableValue(expr, colstart, colend):\r
     empty_cell_is_zero = False\r
     if empty_cell_is_zero:\r
-        return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend), \r
-                                        message="text not in expected columns"), \r
+        return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend),\r
+                                        message="text not in expected columns"),\r
                         default=0)\r
     else:\r
-        return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend), \r
+        return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend),\r
                                         message="text not in expected columns"))\r
 \r
 \r
 # define the grammar for this simple table\r
 colorname = Word(alphas)\r
 integer = Word(nums).setParseAction(lambda t: int(t[0])).setName("integer")\r
-row = (colorname("name") + \r
-        tableValue(integer, 11, 12)("S") + \r
-        tableValue(integer, 15, 16)("M") + \r
+row = (colorname("name") +\r
+        tableValue(integer, 11, 12)("S") +\r
+        tableValue(integer, 15, 16)("M") +\r
         tableValue(integer, 19, 20)("L"))\r
 \r
 # parse the sample text - skip over the header and counter lines\r
index 8bf5f7cfc750d78d6e4067a48c02561a86ed4466..e19cf8b6a5f49ff9ba6e5462887a24626b8f6eca 100644 (file)
@@ -1,6 +1,6 @@
 # parital_gene_match.py\r
 #\r
-#  Example showing how to create a customized pyparsing Token, in this case, \r
+#  Example showing how to create a customized pyparsing Token, in this case,\r
 #  one that is very much like Literal, but which tolerates up to 'n' character\r
 #  mismatches\r
 from pyparsing import *\r
@@ -12,77 +12,77 @@ datafile = urllib.request.urlopen("http://toxodb.org/common/downloads/release-6.
 fastasrc = datafile.read()\r
 datafile.close()\r
 \r
-""" \r
-Sample header: \r
+"""\r
+Sample header:\r
 >NC_001799-6-2978-2778 | organism=Toxoplasma_gondii_RH | location=NC_001799:2778-2978(-) | length=201\r
-""" \r
-integer = Word(nums).setParseAction(lambda t:int(t[0])) \r
-genebit = Group(">" + Word(alphanums.upper()+"-_") + "|" + \r
-                Word(printables)("id") + SkipTo("length=", include=True) +  \r
-                integer("genelen") + LineEnd() +  \r
-                Combine(OneOrMore(Word("ACGTN")),adjacent=False)("gene")) \r
\r
+"""\r
+integer = Word(nums).setParseAction(lambda t:int(t[0]))\r
+genebit = Group(">" + Word(alphanums.upper()+"-_") + "|" +\r
+                Word(printables)("id") + SkipTo("length=", include=True) +\r
+                integer("genelen") + LineEnd() +\r
+                Combine(OneOrMore(Word("ACGTN")),adjacent=False)("gene"))\r
+\r
 # read gene data from .fasta file - takes just a few seconds\r
-genedata = OneOrMore(genebit).parseString(fastasrc) \r
+genedata = OneOrMore(genebit).parseString(fastasrc)\r
 \r
 \r
-class CloseMatch(Token): \r
+class CloseMatch(Token):\r
     """A special subclass of Token that does *close* matches. For each\r
        close match of the given string, a tuple is returned giving the\r
        found close match, and a list of mismatch positions."""\r
-    def __init__(self, seq, maxMismatches=1): \r
-        super(CloseMatch,self).__init__() \r
-        self.name = seq \r
-        self.sequence = seq \r
-        self.maxMismatches = maxMismatches \r
-        self.errmsg = "Expected " + self.sequence \r
-        self.mayIndexError = False \r
-        self.mayReturnEmpty = False \r
\r
-    def parseImpl( self, instring, loc, doActions=True ): \r
-        start = loc \r
-        instrlen = len(instring) \r
-        maxloc = start + len(self.sequence) \r
\r
-        if maxloc <= instrlen: \r
-            seq = self.sequence \r
-            seqloc = 0 \r
-            mismatches = [] \r
-            throwException = False \r
-            done = False \r
-            while loc < maxloc and not done: \r
-                if instring[loc] != seq[seqloc]: \r
-                    mismatches.append(seqloc) \r
-                    if len(mismatches) > self.maxMismatches: \r
-                        throwException = True \r
-                        done = True \r
-                loc += 1 \r
-                seqloc += 1 \r
-        else: \r
-            throwException = True \r
\r
-        if throwException: \r
-            exc = self.myException \r
-            exc.loc = loc \r
-            exc.pstr = instring \r
-            raise exc \r
\r
-        return loc, (instring[start:loc],mismatches) \r
+    def __init__(self, seq, maxMismatches=1):\r
+        super(CloseMatch,self).__init__()\r
+        self.name = seq\r
+        self.sequence = seq\r
+        self.maxMismatches = maxMismatches\r
+        self.errmsg = "Expected " + self.sequence\r
+        self.mayIndexError = False\r
+        self.mayReturnEmpty = False\r
+\r
+    def parseImpl( self, instring, loc, doActions=True ):\r
+        start = loc\r
+        instrlen = len(instring)\r
+        maxloc = start + len(self.sequence)\r
+\r
+        if maxloc <= instrlen:\r
+            seq = self.sequence\r
+            seqloc = 0\r
+            mismatches = []\r
+            throwException = False\r
+            done = False\r
+            while loc < maxloc and not done:\r
+                if instring[loc] != seq[seqloc]:\r
+                    mismatches.append(seqloc)\r
+                    if len(mismatches) > self.maxMismatches:\r
+                        throwException = True\r
+                        done = True\r
+                loc += 1\r
+                seqloc += 1\r
+        else:\r
+            throwException = True\r
+\r
+        if throwException:\r
+            exc = self.myException\r
+            exc.loc = loc\r
+            exc.pstr = instring\r
+            raise exc\r
+\r
+        return loc, (instring[start:loc],mismatches)\r
 \r
 # using the genedata extracted above, look for close matches of a gene sequence\r
 searchseq = CloseMatch("TTAAATCTAGAAGAT", 3)\r
-for g in genedata: \r
-    print("%s (%d)" % (g.id, g.genelen)) \r
-    print("-"*24) \r
-    for t,startLoc,endLoc in searchseq.scanString(g.gene, overlap=True): \r
-        matched, mismatches = t[0] \r
-        print("MATCH:", searchseq.sequence) \r
-        print("FOUND:", matched) \r
-        if mismatches: \r
-            print("      ", ''.join(' ' if i not in mismatches else '*'  \r
-                            for i,c in enumerate(searchseq.sequence))) \r
-        else: \r
-            print("<exact match>") \r
-        print("at location", startLoc) \r
-        print() \r
-    print() 
\ No newline at end of file
+for g in genedata:\r
+    print("%s (%d)" % (g.id, g.genelen))\r
+    print("-"*24)\r
+    for t,startLoc,endLoc in searchseq.scanString(g.gene, overlap=True):\r
+        matched, mismatches = t[0]\r
+        print("MATCH:", searchseq.sequence)\r
+        print("FOUND:", matched)\r
+        if mismatches:\r
+            print("      ", ''.join(' ' if i not in mismatches else '*'\r
+                            for i,c in enumerate(searchseq.sequence)))\r
+        else:\r
+            print("<exact match>")\r
+        print("at location", startLoc)\r
+        print()\r
+    print()\r
index d13f83e9bdf43b9ff12dae2c9d745ddcb5f90edc..fc19c98094f9c9bfb2be8e7a507fbfe37da8e2c3 100644 (file)
@@ -10,7 +10,7 @@
 # Copyright 2004, by Alberto Santini http://www.albertosantini.it/chess/\r
 #\r
 from pyparsing import alphanums, nums, quotedString\r
-from pyparsing import Combine, Forward, Group, Literal, oneOf, OneOrMore, Optional, Suppress, ZeroOrMore, White, Word\r
+from pyparsing import Combine, Forward, Group, Literal, oneOf, OneOrMore, Optional, Suppress, ZeroOrMore, Word\r
 from pyparsing import ParseException\r
 \r
 #\r
index 984c0180d75df4fe1d2304fa925da837dd9b4f9b..d88c14a76c5181cf4b0b598574036405f313d339 100644 (file)
@@ -1,12 +1,12 @@
 from pyparsing import *\r
 \r
-text = """Lorem ipsum dolor sit amet, consectetur adipisicing \r
-elit, sed do eiusmod tempor incididunt ut labore et dolore magna \r
-aliqua. Ut enim ad minim veniam, quis nostrud exercitation \r
-ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis \r
-aute irure dolor in reprehenderit in voluptate velit esse cillum \r
-dolore eu fugiat nulla pariatur. Excepteur sint occaecat \r
-cupidatat non proident, sunt in culpa qui officia deserunt \r
+text = """Lorem ipsum dolor sit amet, consectetur adipisicing\r
+elit, sed do eiusmod tempor incididunt ut labore et dolore magna\r
+aliqua. Ut enim ad minim veniam, quis nostrud exercitation\r
+ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis\r
+aute irure dolor in reprehenderit in voluptate velit esse cillum\r
+dolore eu fugiat nulla pariatur. Excepteur sint occaecat\r
+cupidatat non proident, sunt in culpa qui officia deserunt\r
 mollit anim id est laborum"""\r
 \r
 # find all words beginning with a vowel\r
@@ -51,5 +51,3 @@ for ivowelInfo in (initialConsWord | locateInitialVowels).searchString(text):
     if not ivowelInfo:\r
         continue\r
     print(ivowelInfo.locn, ':', ivowelInfo.word)\r
-    \r
-\r
index 8f8b12ddb2fcb900ae0822205a7f482c444e6245..68a8f633a18a5341296f3c23ba1bcffcfcfda5df 100644 (file)
@@ -6,7 +6,7 @@
 #\r
 \r
 from pyparsing import (Word, alphas, alphanums, Regex, Suppress, Forward,\r
-    Group, oneOf, ZeroOrMore, Optional, delimitedList, Keyword,\r
+    Group, oneOf, ZeroOrMore, Optional, delimitedList,\r
     restOfLine, quotedString, Dict)\r
 \r
 ident = Word(alphas+"_",alphanums+"_").setName("identifier")\r
@@ -14,20 +14,20 @@ integer = Regex(r"[+-]?\d+")
 \r
 LBRACE,RBRACE,LBRACK,RBRACK,LPAR,RPAR,EQ,SEMI = map(Suppress,"{}[]()=;")\r
 \r
-kwds = """message required optional repeated enum extensions extends extend \r
+kwds = """message required optional repeated enum extensions extends extend\r
           to package service rpc returns true false option import"""\r
 for kw in kwds.split():\r
-    exec("{}_ = Keyword('{}')".format(kw.upper(), kw))\r
+    exec("{0}_ = Keyword('{1}')".format(kw.upper(), kw))\r
 \r
 messageBody = Forward()\r
 \r
 messageDefn = MESSAGE_ - ident("messageId") + LBRACE + messageBody("body") + RBRACE\r
 \r
-typespec = oneOf("""double float int32 int64 uint32 uint64 sint32 sint64 \r
+typespec = oneOf("""double float int32 int64 uint32 uint64 sint32 sint64\r
                     fixed32 fixed64 sfixed32 sfixed64 bool string bytes""") | ident\r
 rvalue = integer | TRUE_ | FALSE_ | ident\r
 fieldDirective = LBRACK + Group(ident + EQ + rvalue) + RBRACK\r
-fieldDefn = (( REQUIRED_ | OPTIONAL_ | REPEATED_ )("fieldQualifier") - \r
+fieldDefn = (( REQUIRED_ | OPTIONAL_ | REPEATED_ )("fieldQualifier") -\r
               typespec("typespec") + ident("ident") + EQ + integer("fieldint") + ZeroOrMore(fieldDirective) + SEMI)\r
 \r
 # enumDefn ::= 'enum' ident '{' { ident '=' integer ';' }* '}'\r
@@ -43,8 +43,8 @@ messageExtension = EXTEND_ - ident + LBRACE + messageBody + RBRACE
 messageBody << Group(ZeroOrMore( Group(fieldDefn | enumDefn | messageDefn | extensionsDefn | messageExtension) ))\r
 \r
 # methodDefn ::= 'rpc' ident '(' [ ident ] ')' 'returns' '(' [ ident ] ')' ';'\r
-methodDefn = (RPC_ - ident("methodName") + \r
-              LPAR + Optional(ident("methodParam")) + RPAR + \r
+methodDefn = (RPC_ - ident("methodName") +\r
+              LPAR + Optional(ident("methodParam")) + RPAR +\r
               RETURNS_ + LPAR + Optional(ident("methodReturn")) + RPAR)\r
 \r
 # serviceDefn ::= 'service' ident '{' methodDefn* '}'\r
@@ -66,10 +66,10 @@ parser = Optional(packageDirective) + ZeroOrMore(topLevelStatement)
 parser.ignore(comment)\r
 \r
 \r
-test1 = """message Person { \r
-  required int32 id = 1; \r
-  required string name = 2; \r
-  optional string email = 3; \r
+test1 = """message Person {\r
+  required int32 id = 1;\r
+  required string name = 2;\r
+  optional string email = 3;\r
 }"""\r
 \r
 test2 = """package tutorial;\r
index 0db29388da54b3ad30504a573cfe338165820f18..7dcdf694219b03b8631b5ac6a3360d25e1836e12 100644 (file)
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
 #    GNU General Public License for more details.\r
 #\r
-#    A copy of the GNU General Public License can be found at <http://www.gnu.org/licenses/>.\r
+#    A copy of the GNU General Public License can be found at <https://www.gnu.org/licenses/>.\r
 \r
 from pyparsing import *\r
-from sys import stdin, stdout, stderr, argv, exit\r
+from sys import stdin, argv, exit\r
 \r
 #defines debug level\r
 # 0 - no debug\r
@@ -62,7 +62,7 @@ DEBUG = 0
 # (small subset of C made for compiler course at Faculty of Technical Sciences, Chair for Applied Computer Sciences, Novi Sad, Serbia)\r
 \r
 # Patterns:\r
\r
+\r
 # letter\r
 #  ->    "_" | "a" | "A" | "b" | "B" | "c" | "C" | "d" | "D" | "e" | "E" | "f"\r
 #      | "F" | "g" | "G" | "h" | "H" | "i" | "I" | "j" | "J" | "k" | "K" | "l"\r
@@ -72,56 +72,56 @@ DEBUG = 0
 \r
 # digit\r
 #  ->  "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"\r
\r
+\r
 # identifier\r
 #  ->  letter ( letter | digit )*\r
\r
+\r
 # int_constant\r
 #  ->  digit +\r
\r
+\r
 # unsigned_constant\r
 #  ->  digit + ( "u" | "U" )\r
\r
+\r
 # Productions:\r
\r
+\r
 # program\r
 #  ->  variable_list function_list\r
 #  ->  function_list\r
\r
+\r
 # variable_list\r
 #  ->  variable ";"\r
 #  ->  variable_list variable ";"\r
\r
+\r
 # variable\r
 #  ->  type identifier\r
-  \r
+\r
 # type\r
 #  ->  "int"\r
 #  ->  "unsigned"\r
-  \r
+\r
 # function_list\r
 #  ->  function\r
 #  ->  function_list function\r
\r
+\r
 # function\r
 #  ->  type identifier "(" parameters ")" body\r
\r
+\r
 # parameters\r
 #  ->  <empty>\r
 #  ->  parameter_list\r
\r
+\r
 # parameter_list\r
 #  ->  variable\r
 #  ->  parameter_list "," variable\r
\r
+\r
 # body\r
 #  ->  "{" variable_list statement_list "}"\r
 #  ->  "{" statement_list "}"\r
\r
+\r
 # statement_list\r
 #  ->  <empty>\r
 #  ->  statement_list statement\r
\r
+\r
 # statement\r
 #  ->  assignement_statement\r
 #  ->  function_call_statement\r
@@ -129,20 +129,20 @@ DEBUG = 0
 #  ->  while_statement\r
 #  ->  return_statement\r
 #  ->  compound_statement\r
\r
+\r
 # assignement_statement\r
 #  ->  identifier "=" num_exp ";"\r
\r
+\r
 # num_exp\r
 #  ->  mul_exp\r
 #  ->  num_exp "+" mul_exp\r
 #  ->  num_exp "-" mul_exp\r
\r
+\r
 # mul_exp\r
 #  ->  exp\r
 #  ->  mul_exp "*" exp\r
 #  ->  mul_exp "/" exp\r
\r
+\r
 # exp\r
 #  ->  constant\r
 #  ->  identifier\r
@@ -150,38 +150,38 @@ DEBUG = 0
 #  ->  "(" num_exp ")"\r
 #  ->  "+" exp\r
 #  ->  "-" exp\r
\r
+\r
 # constant\r
 #  ->  int_constant\r
 #  ->  unsigned_constant\r
\r
+\r
 # function_call\r
 #  ->  identifier "(" arguments ")"\r
\r
+\r
 # arguments\r
 #  ->  <empty>\r
 #  ->  argument_list\r
\r
+\r
 # argument_list\r
 #  ->  num_exp\r
 #  ->  argument_list "," num_exp\r
\r
+\r
 # function_call_statement\r
 #  ->  function_call ";"\r
\r
+\r
 # if_statement\r
 #  ->  "if" "(" log_exp ")" statement\r
 #  ->  "if" "(" log_exp ")" statement "else" statement\r
 #  ->   ->   ->   ->   ->   ->   -> ->   2\r
\r
+\r
 # log_exp\r
 #  ->  and_exp\r
 #  ->  log_exp "||" and_exp\r
\r
+\r
 # and_exp\r
 #  ->  rel_exp\r
 #  ->  and_exp "&&" rel_exp\r
\r
+\r
 # rel_exp\r
 #  ->  num_exp  "<" num_exp\r
 #  ->  num_exp  ">" num_exp\r
@@ -189,16 +189,16 @@ DEBUG = 0
 #  ->  num_exp  ">=" num_exp\r
 #  ->  num_exp  "==" num_exp\r
 #  ->  num_exp  "!=" num_exp\r
\r
+\r
 # while_statement\r
 #  ->  "while" "(" log_exp ")" statement\r
\r
+\r
 # return_statement\r
 #  ->  "return" num_exp ";"\r
\r
+\r
 # compound_statement\r
 #  ->  "{" statement_list "}"\r
\r
+\r
 # Comment: /* a comment */\r
 \r
 ##########################################################################################\r
@@ -280,13 +280,13 @@ class SemanticException(Exception):
             self.text = line(exshared.location, exshared.text)\r
         else:\r
             self.line = self.col = self.text = None\r
-            \r
-    def _get_message(self): \r
+\r
+    def _get_message(self):\r
         return self._message\r
-    def _set_message(self, message): \r
+    def _set_message(self, message):\r
         self._message = message\r
     message = property(_get_message, _set_message)\r
-    \r
+\r
     def __str__(self):\r
         """String representation of the semantic error"""\r
         msg = "Error"\r
@@ -322,10 +322,10 @@ class SymbolTableEntry(object):
         """Sets attribute's name and value"""\r
         self.attribute_name = name\r
         self.attribute = value\r
-    \r
+\r
     def attribute_str(self):\r
         """Returns attribute string (used only for table display)"""\r
-        return "{}={}".format(self.attribute_name, self.attribute) if self.attribute != None else "None"\r
+        return "{0}={1}".format(self.attribute_name, self.attribute) if self.attribute != None else "None"\r
 \r
 class SymbolTable(object):\r
     """Class for symbol table of microC program"""\r
@@ -368,9 +368,9 @@ class SymbolTable(object):
             parameters = ""\r
             for p in sym.param_types:\r
                 if parameters == "":\r
-                    parameters = "{}".format(SharedData.TYPES[p])\r
+                    parameters = "{0}".format(SharedData.TYPES[p])\r
                 else:\r
-                    parameters += ", {}".format(SharedData.TYPES[p])\r
+                    parameters += ", {0}".format(SharedData.TYPES[p])\r
             print("{0:3d} | {1:^{2}s} | {3:^{4}s} | {5:^{6}s} | {7:^{8}} | ({9})".format(i, sym.name, sym_len, SharedData.KINDS[sym.kind], kind_len, SharedData.TYPES[sym.type], type_len, sym.attribute_str(), attr_len, parameters))\r
 \r
     def insert_symbol(self, sname, skind, stype):\r
@@ -468,7 +468,7 @@ class SymbolTable(object):
         except Exception:\r
             self.error()\r
         return same\r
-    \r
+\r
     def same_type_as_argument(self, index, function_index, argument_number):\r
         """Returns True if index and function's argument are of the same type\r
            index - index in symbol table\r
@@ -604,7 +604,7 @@ class CodeGenerator(object):
            internal - boolean value, adds "@" prefix to label\r
            definition - boolean value, adds ":" suffix to label\r
         """\r
-        return "{}{}{}".format(self.internal if internal else "", name, self.definition if definition else "")\r
+        return "{0}{1}{2}".format(self.internal if internal else "", name, self.definition if definition else "")\r
 \r
     def symbol(self, index):\r
         """Generates symbol name from index"""\r
@@ -616,14 +616,14 @@ class CodeGenerator(object):
         sym = self.symtab.table[index]\r
         #local variables are located at negative offset from frame pointer register\r
         if sym.kind == SharedData.KINDS.LOCAL_VAR:\r
-            return "-{}(%14)".format(sym.attribute * 4 + 4)\r
+            return "-{0}(1:%14)".format(sym.attribute * 4 + 4)\r
         #parameters are located at positive offset from frame pointer register\r
         elif sym.kind == SharedData.KINDS.PARAMETER:\r
-            return "{}(%14)".format(8 + sym.attribute * 4)\r
+            return "{0}(1:%14)".format(8 + sym.attribute * 4)\r
         elif sym.kind == SharedData.KINDS.CONSTANT:\r
-            return "${}".format(sym.name)\r
+            return "${0}".format(sym.name)\r
         else:\r
-            return "{}".format(sym.name)\r
+            return "{0}".format(sym.name)\r
 \r
     def save_used_registers(self):\r
         """Pushes all used working registers before function call"""\r
@@ -674,7 +674,7 @@ class CodeGenerator(object):
            internal - boolean value, adds "@" prefix to label\r
            definition - boolean value, adds ":" suffix to label\r
         """\r
-        self.newline_text(self.label("{}{}{}".format("@" if internal else "", name, ":" if definition else "")))\r
+        self.newline_text(self.label("{0}{1}{2}".format("@" if internal else "", name, ":" if definition else "")))\r
 \r
     def global_var(self, name):\r
         """Inserts a new static (global) variable definition"""\r
@@ -704,7 +704,7 @@ class CodeGenerator(object):
         #if operand3 is not defined, reserve one free register for it\r
         output = self.take_register(output_type) if operand3 == None else operand3\r
         mnemonic = self.arithmetic_mnemonic(operation, output_type)\r
-        self.newline_text("{}\t{},{},{}".format(mnemonic, self.symbol(operand1), self.symbol(operand2), self.symbol(output)), True)\r
+        self.newline_text("{0}\t{1},{2},{3}".format(mnemonic, self.symbol(operand1), self.symbol(operand2), self.symbol(output)), True)\r
         return output\r
 \r
     def relop_code(self, relop, operands_type):\r
@@ -723,13 +723,13 @@ class CodeGenerator(object):
            label    - jump label\r
         """\r
         jump = self.OPPOSITE_JUMPS[relcode] if opposite else self.CONDITIONAL_JUMPS[relcode]\r
-        self.newline_text("{}\t{}".format(jump, label), True)\r
+        self.newline_text("{0}\t{1}".format(jump, label), True)\r
 \r
     def unconditional_jump(self, label):\r
         """Generates an unconditional jump instruction\r
            label    - jump label\r
         """\r
-        self.newline_text("JMP \t{}".format(label), True)\r
+        self.newline_text("JMP \t{0}".format(label), True)\r
 \r
     def move(self,operand1, operand2):\r
         """Generates a move instruction\r
@@ -741,7 +741,7 @@ class CodeGenerator(object):
             self.free_if_register(operand1)\r
         else:\r
             output_type = SharedData.TYPES.NO_TYPE\r
-        self.newline_text("MOV \t{},{}".format(self.symbol(operand1), self.symbol(operand2)), True)\r
+        self.newline_text("MOV \t{0},{1}".format(self.symbol(operand1), self.symbol(operand2)), True)\r
         if isinstance(operand2, int):\r
             if self.symtab.get_kind(operand2) == SharedData.KINDS.WORKING_REGISTER:\r
                 self.symtab.set_type(operand2, output_type)\r
@@ -761,7 +761,7 @@ class CodeGenerator(object):
         typ = self.symtab.get_type(operand1)\r
         self.free_if_register(operand1)\r
         self.free_if_register(operand2)\r
-        self.newline_text("CMP{}\t{},{}".format(self.OPSIGNS[typ], self.symbol(operand1), self.symbol(operand2)), True)\r
+        self.newline_text("CMP{0}\t{1},{2}".format(self.OPSIGNS[typ], self.symbol(operand1), self.symbol(operand2)), True)\r
 \r
     def function_begin(self):\r
         """Inserts function name label and function frame initialization"""\r
@@ -772,7 +772,7 @@ class CodeGenerator(object):
     def function_body(self):\r
         """Inserts a local variable initialization and body label"""\r
         if self.shared.function_vars > 0:\r
-            const = self.symtab.insert_constant("{}".format(self.shared.function_vars * 4), SharedData.TYPES.UNSIGNED)\r
+            const = self.symtab.insert_constant("0{}".format(self.shared.function_vars * 4), SharedData.TYPES.UNSIGNED)\r
             self.arithmetic("-", "%15", const, "%15")\r
         self.newline_label(self.shared.function_name + "_body", True, True)\r
 \r
@@ -796,7 +796,7 @@ class CodeGenerator(object):
         args = self.symtab.get_attribute(function)\r
         #generates stack cleanup if function has arguments\r
         if args > 0:\r
-            args_space = self.symtab.insert_constant("{}".format(args * 4), SharedData.TYPES.UNSIGNED)\r
+            args_space = self.symtab.insert_constant("{0}".format(args * 4), SharedData.TYPES.UNSIGNED)\r
             self.arithmetic("+", "%15", args_space, "%15")\r
 \r
 ##########################################################################################\r
@@ -924,7 +924,7 @@ class MicroC(object):
         if print_location and (exshared.location != None):\r
             msg += "\n%s" % wtext\r
         print(msg)\r
-        \r
+\r
 \r
     def data_begin_action(self):\r
         """Inserts text at start of data segment"""\r
@@ -1148,7 +1148,7 @@ class MicroC(object):
             if DEBUG > 2: return\r
         exshared.setpos(loc, text)\r
         if not self.symtab.same_types(arg[0], arg[2]):\r
-            raise SemanticException("Invalid operands for operator '{}'".format(arg[1]))\r
+            raise SemanticException("Invalid operands for operator '{0}'".format(arg[1]))\r
         self.codegen.compare(arg[0], arg[2])\r
         #return relational operator's code\r
         self.relexp_code = self.codegen.relop_code(arg[1], self.symtab.get_type(arg[0]))\r
@@ -1161,7 +1161,7 @@ class MicroC(object):
             print("AND+EXP:",arg)\r
             if DEBUG == 2: self.symtab.display()\r
             if DEBUG > 2: return\r
-        label = self.codegen.label("false{}".format(self.false_label_number), True, False)\r
+        label = self.codegen.label("false{0}".format(self.false_label_number), True, False)\r
         self.codegen.jump(self.relexp_code, True, label)\r
         self.andexp_code = self.relexp_code\r
         return self.andexp_code\r
@@ -1173,9 +1173,9 @@ class MicroC(object):
             print("LOG_EXP:",arg)\r
             if DEBUG == 2: self.symtab.display()\r
             if DEBUG > 2: return\r
-        label = self.codegen.label("true{}".format(self.label_number), True, False)\r
+        label = self.codegen.label("true{0}".format(self.label_number), True, False)\r
         self.codegen.jump(self.relexp_code, False, label)\r
-        self.codegen.newline_label("false{}".format(self.false_label_number), True, True)\r
+        self.codegen.newline_label("false{0}".format(self.false_label_number), True, True)\r
         self.false_label_number += 1\r
 \r
     def if_begin_action(self, text, loc, arg):\r
@@ -1187,7 +1187,7 @@ class MicroC(object):
             if DEBUG > 2: return\r
         self.false_label_number += 1\r
         self.label_number = self.false_label_number\r
-        self.codegen.newline_label("if{}".format(self.label_number), True, True)\r
+        self.codegen.newline_label("if{0}".format(self.label_number), True, True)\r
 \r
     def if_body_action(self, text, loc, arg):\r
         """Code executed after recognising if statement's body"""\r
@@ -1197,10 +1197,10 @@ class MicroC(object):
             if DEBUG == 2: self.symtab.display()\r
             if DEBUG > 2: return\r
         #generate conditional jump (based on last compare)\r
-        label = self.codegen.label("false{}".format(self.false_label_number), True, False)\r
+        label = self.codegen.label("false{0}".format(self.false_label_number), True, False)\r
         self.codegen.jump(self.relexp_code, True, label)\r
         #generate 'true' label (executes if condition is satisfied)\r
-        self.codegen.newline_label("true{}".format(self.label_number), True, True)\r
+        self.codegen.newline_label("true{0}".format(self.label_number), True, True)\r
         #save label numbers (needed for nested if/while statements)\r
         self.label_stack.append(self.false_label_number)\r
         self.label_stack.append(self.label_number)\r
@@ -1214,10 +1214,10 @@ class MicroC(object):
             if DEBUG > 2: return\r
         #jump to exit after all statements for true condition are executed\r
         self.label_number = self.label_stack.pop()\r
-        label = self.codegen.label("exit{}".format(self.label_number), True, False)\r
+        label = self.codegen.label("exit{0}".format(self.label_number), True, False)\r
         self.codegen.unconditional_jump(label)\r
         #generate final 'false' label (executes if condition isn't satisfied)\r
-        self.codegen.newline_label("false{}".format(self.label_stack.pop()), True, True)\r
+        self.codegen.newline_label("false{0}".format(self.label_stack.pop()), True, True)\r
         self.label_stack.append(self.label_number)\r
 \r
     def if_end_action(self, text, loc, arg):\r
@@ -1227,7 +1227,7 @@ class MicroC(object):
             print("IF_END:",arg)\r
             if DEBUG == 2: self.symtab.display()\r
             if DEBUG > 2: return\r
-        self.codegen.newline_label("exit{}".format(self.label_stack.pop()), True, True)\r
+        self.codegen.newline_label("exit{0}".format(self.label_stack.pop()), True, True)\r
 \r
     def while_begin_action(self, text, loc, arg):\r
         """Code executed after recognising a while statement (while keyword)"""\r
@@ -1238,7 +1238,7 @@ class MicroC(object):
             if DEBUG > 2: return\r
         self.false_label_number += 1\r
         self.label_number = self.false_label_number\r
-        self.codegen.newline_label("while{}".format(self.label_number), True, True)\r
+        self.codegen.newline_label("while{0}".format(self.label_number), True, True)\r
 \r
     def while_body_action(self, text, loc, arg):\r
         """Code executed after recognising while statement's body"""\r
@@ -1248,10 +1248,10 @@ class MicroC(object):
             if DEBUG == 2: self.symtab.display()\r
             if DEBUG > 2: return\r
         #generate conditional jump (based on last compare)\r
-        label = self.codegen.label("false{}".format(self.false_label_number), True, False)\r
+        label = self.codegen.label("false{0}".format(self.false_label_number), True, False)\r
         self.codegen.jump(self.relexp_code, True, label)\r
         #generate 'true' label (executes if condition is satisfied)\r
-        self.codegen.newline_label("true{}".format(self.label_number), True, True)\r
+        self.codegen.newline_label("true{0}".format(self.label_number), True, True)\r
         self.label_stack.append(self.false_label_number)\r
         self.label_stack.append(self.label_number)\r
 \r
@@ -1264,11 +1264,11 @@ class MicroC(object):
             if DEBUG > 2: return\r
         #jump to condition checking after while statement body\r
         self.label_number = self.label_stack.pop()\r
-        label = self.codegen.label("while{}".format(self.label_number), True, False)\r
+        label = self.codegen.label("while{0}".format(self.label_number), True, False)\r
         self.codegen.unconditional_jump(label)\r
         #generate final 'false' label and exit label\r
-        self.codegen.newline_label("false{}".format(self.label_stack.pop()), True, True)\r
-        self.codegen.newline_label("exit{}".format(self.label_number), True, True)\r
+        self.codegen.newline_label("false{0}".format(self.label_stack.pop()), True, True)\r
+        self.codegen.newline_label("exit{0}".format(self.label_number), True, True)\r
 \r
     def program_end_action(self, text, loc, arg):\r
         """Checks if there is a 'main' function and the type of 'main' function"""\r
@@ -1311,7 +1311,7 @@ if 0:
     #main program\r
     mc = MicroC()\r
     output_file = "output.asm"\r
-    \r
+\r
     if len(argv) == 1:\r
         input_file = stdin\r
     elif len(argv) == 2:\r
@@ -1320,7 +1320,7 @@ if 0:
         input_file = argv[1]\r
         output_file = argv[2]\r
     else:\r
-        usage = """Usage: {} [input_file [output_file]]\r
+        usage = """Usage: {0} [input_file [output_file]]\r
     If output file is omitted, output.asm is used\r
     If input file is omitted, stdin is used""".format(argv[0])\r
         print(usage)\r
@@ -1345,7 +1345,7 @@ if 0:
 ##########################################################################################\r
 \r
 if __name__ == "__main__":\r
-    \r
+\r
     test_program_example = """\r
         int a;\r
         int b;\r
@@ -1384,4 +1384,4 @@ if __name__ == "__main__":
 \r
     mc = MicroC()\r
     mc.parse_text(test_program_example)\r
-    print(mc.codegen.code)
\ No newline at end of file
+    print(mc.codegen.code)\r
index 706f758aa8fa0f61fdbe9a054f0c43edb941dd94..4a8adce88c2ef97041cc481315e58391c1422ede 100644 (file)
@@ -5,7 +5,7 @@
 \r
 from pyparsing import *\r
 \r
-# should probably read this from the Grammar file provided with the Python source, but \r
+# should probably read this from the Grammar file provided with the Python source, but\r
 # this just skips that step and inlines the bnf text directly - this grammar was taken from\r
 # Python 2.4.1\r
 #\r
@@ -135,15 +135,15 @@ class SemanticGroup(object):
         self.contents = contents\r
         while self.contents[-1].__class__ == self.__class__:\r
             self.contents = self.contents[:-1] + self.contents[-1].contents\r
-        \r
+\r
     def __str__(self):\r
-        return "{}({})".format(self.label, \r
+        return "{0}({1})".format(self.label,\r
                 " ".join([isinstance(c,str) and c or str(c) for c in self.contents]) )\r
-        \r
+\r
 class OrList(SemanticGroup):\r
     label = "OR"\r
     pass\r
-    \r
+\r
 class AndList(SemanticGroup):\r
     label = "AND"\r
     pass\r
@@ -151,7 +151,7 @@ class AndList(SemanticGroup):
 class OptionalGroup(SemanticGroup):\r
     label = "OPT"\r
     pass\r
-    \r
+\r
 class Atom(SemanticGroup):\r
     def __init__(self,contents):\r
         if len(contents) > 1:\r
@@ -162,15 +162,15 @@ class Atom(SemanticGroup):
             self.contents = contents\r
         else:\r
             self.contents = contents[0]\r
-            \r
+\r
     def __str__(self):\r
-        return "{}{}".format(self.rep, self.contents)\r
-    \r
+        return "{0}{1}".format(self.rep, self.contents)\r
+\r
 def makeGroupObject(cls):\r
     def groupAction(s,l,t):\r
         try:\r
             return cls(t[0].asList())\r
-        except:\r
+        except Exception:\r
             return cls(t)\r
     return groupAction\r
 \r
index b89a1e3838ff4ec858b5f2f1d84fa6722c2924cf..29e945968697f195537a9c552d697082f2948b7e 100644 (file)
@@ -1,6 +1,6 @@
 # rangeCheck.py\r
 #\r
-#   A sample program showing how parse actions can convert parsed \r
+#   A sample program showing how parse actions can convert parsed\r
 # strings into a data type or object, and to validate the parsed value.\r
 #\r
 # Updated to use new addCondition method and expr() copy.\r
@@ -8,7 +8,7 @@
 # Copyright 2011,2015 Paul T. McGuire\r
 #\r
 \r
-from pyparsing import Word, nums, Suppress, ParseException, empty, Optional\r
+from pyparsing import Word, nums, Suppress, Optional\r
 from datetime import datetime\r
 \r
 def ranged_value(expr, minval=None, maxval=None):\r
@@ -26,7 +26,7 @@ def ranged_value(expr, minval=None, maxval=None):
     outOfRangeMessage = {\r
         (True, False)  : "value is greater than %s" % maxval,\r
         (False, True)  : "value is less than %s" % minval,\r
-        (False, False) : "value is not in the range ({} to {})".format(minval,maxval),\r
+        (False, False) : "value is not in the range ({0} to {1})".format(minval,maxval),\r
         }[minval is None, maxval is None]\r
 \r
     return expr().addCondition(inRangeCondition, message=outOfRangeMessage)\r
@@ -38,7 +38,7 @@ integer.setParseAction(lambda t:int(t[0]))
 month = ranged_value(integer, 1, 12)\r
 day = ranged_value(integer, 1, 31)\r
 year = ranged_value(integer, 2000, None)\r
-    \r
+\r
 SLASH = Suppress('/')\r
 dateExpr = year("year") + SLASH + month("month") + Optional(SLASH + day("day"))\r
 dateExpr.setName("date")\r
@@ -58,5 +58,3 @@ dateExpr.runTests("""
     2004/2/29\r
     2004/2\r
     1999/12/31""")\r
-\r
-\r
index deca53bce2247edc593e641aa00e9d7c4c5f6604..f691ea5f2f8fc99d89c9ef6d51d9219dfc37103b 100644 (file)
@@ -1,10 +1,9 @@
-\r
 #~ url = "http://cmsdoc.cern.ch/cms/test/aprom/phedex/dev/gowri/datasvc/tbedi/requestDetails"\r
-#~ params = {'format':'json'} \r
-#~ import urllib \r
-#~ eparams = urllib.urlencode(params) \r
-#~ import urllib2 \r
-#~ request = urllib2.Request(url,eparams) \r
+#~ params = {'format':'json'}\r
+#~ import urllib\r
+#~ eparams = urllib.urlencode(params)\r
+#~ import urllib2\r
+#~ request = urllib2.Request(url,eparams)\r
 #~ response = urllib2.urlopen(request)\r
 #~ s = response.read()\r
 #~ response.close()\r
index ba4b4986ac66fb979b7d4630846238d8c74be384..df07fbab21c5397bc3c3a310ef9ac179076ef99e 100644 (file)
@@ -3,7 +3,7 @@
 # Demonstration of the pyparsing module, converting text files\r
 # with hard line-breaks to text files with line breaks only\r
 # between paragraphs.  (Helps when converting downloads from Project\r
-# Gutenberg - http://www.gutenberg.org - to import to word processing apps \r
+# Gutenberg - https://www.gutenberg.org/ - to import to word processing apps\r
 # that can reformat paragraphs once hard line-breaks are removed.)\r
 #\r
 # Uses parse actions and transformString to remove unwanted line breaks,\r
index 27361f07a7b8e77c1f73728fca300ed321abf490..8765055de22bf10c0f343031bae980849155251b 100644 (file)
@@ -7,7 +7,7 @@ from pyparsing import *
 \r
 def romanNumeralLiteral(numeralString, value):\r
     return Literal(numeralString).setParseAction(replaceWith(value))\r
-    \r
+\r
 one         = romanNumeralLiteral("I",1)\r
 four        = romanNumeralLiteral("IV",4)\r
 five        = romanNumeralLiteral("V",5)\r
@@ -22,8 +22,8 @@ fivehundred = romanNumeralLiteral("D",500)
 ninehundred = romanNumeralLiteral("CM",900)\r
 onethousand = romanNumeralLiteral("M",1000)\r
 \r
-numeral = ( onethousand | ninehundred | fivehundred | fourhundred | \r
-            onehundred | ninety | fifty | forty | ten | nine | five | \r
+numeral = ( onethousand | ninehundred | fivehundred | fourhundred |\r
+            onehundred | ninety | fifty | forty | ten | nine | five |\r
             four | one ).leaveWhitespace()\r
 \r
 romanNumeral = OneOrMore(numeral).setParseAction( lambda s,l,t : sum(t) )\r
@@ -34,7 +34,7 @@ def makeRomanNumeral(n):
         n -= limit\r
         s += c\r
         return n,s\r
-    \r
+\r
     ret = ""\r
     while n >= 1000: n,ret = addDigit(n,1000,"M",ret)\r
     while n >=  900: n,ret = addDigit(n, 900,"CM",ret)\r
@@ -52,23 +52,26 @@ def makeRomanNumeral(n):
     return ret\r
 tests = " ".join(makeRomanNumeral(i) for i in range(1,5000+1))\r
 \r
+roman_int_map = {}\r
 expected = 1\r
 for t,s,e in romanNumeral.scanString(tests):\r
+    orig = tests[s:e]\r
     if t[0] != expected:\r
-        print("{} {} {}".format("==>", t, tests[s:e]))\r
+        print("{0} {1} {2}".format("==>", t, orig))\r
+    roman_int_map[orig] = t[0]\r
     expected += 1\r
 \r
-def test(rn):\r
-    print("{} -> {}".format(rn, romanNumeral.parseString(rn)[0]))\r
-test("XVI")\r
-test("XXXIX")\r
-test("XIV")\r
-test("XIX")\r
-test("MCMLXXX")\r
-test("MMVI")\r
-\r
-\r
-\r
-\r
-\r
+def verify_value(s, tokens):\r
+    expected = roman_int_map[s]\r
+    if tokens[0] != expected:\r
+        raise Exception("incorrect value for {0} ({1}), expected {2}".format(s, tokens[0], expected ))\r
 \r
+romanNumeral.runTests("""\\r
+    XVI\r
+    XXXIX\r
+    XIV\r
+    XIX\r
+    MCMLXXX\r
+    MMVI\r
+    """, fullDump=False,\r
+    postParse=verify_value)
\ No newline at end of file
index 24ae0e720fe3784cfd4518d037e255e9e72407bf..4ee62a1457d37f15d635f292946b5a576c042adf 100644 (file)
@@ -28,8 +28,8 @@ ident = Word(alphas, alphanums+"_")
 macroDef = Literal("#define") + ident.setResultsName("name") + "=" + restOfLine.setResultsName("value")\r
 for t,s,e in macroDef.scanString( testData ):\r
     print(t.name,":", t.value)\r
-    \r
-# or a quick way to make a dictionary of the names and values \r
+\r
+# or a quick way to make a dictionary of the names and values\r
 # (return only key and value tokens, and construct dict from key-value pairs)\r
 # - empty ahead of restOfLine advances past leading whitespace, does implicit lstrip during parsing\r
 macroDef = Suppress("#define") + ident + Suppress("=") + empty + restOfLine\r
@@ -48,8 +48,8 @@ scopedIdent.setParseAction(lambda t: "_".join(t))
 \r
 print("(replace namespace-scoped names with C-compatible names)")\r
 print(scopedIdent.transformString( testData ))\r
-    \r
-    \r
+\r
+\r
 # or a crude pre-processor (use parse actions to replace matching text)\r
 def substituteMacro(s,l,t):\r
     if t[0] in macros:\r
index 825c1695051a6692060c7996a42775f9ae932332..9ecb5e9799ebea1f90d29d7c0e5c43bb157fffc0 100644 (file)
@@ -1,7 +1,7 @@
 from pyparsing import makeHTMLTags,SkipTo,htmlComment\r
 import urllib.request, urllib.parse, urllib.error\r
 \r
-serverListPage = urllib.request.urlopen( "http://www.yahoo.com" )\r
+serverListPage = urllib.request.urlopen( "https://www.yahoo.com/" )\r
 htmlText = serverListPage.read()\r
 serverListPage.close()\r
 \r
index 021428d9bf244ee297ce2f79fa433a3a701ae16c..d1bf8bacaf110b0a57d2beacafc4e62a51f217f9 100644 (file)
@@ -3,7 +3,7 @@ from searchparser import SearchQueryParser
 products = [ "grape juice", "grape jelly", "orange juice", "orange jujubees",\r
     "strawberry jam", "prune juice", "prune butter", "orange marmalade",\r
     "grapefruit juice" ]\r
-    \r
+\r
 class FruitSearchParser(SearchQueryParser):\r
     def GetWord(self, word):\r
         return { p for p in products if p.startswith(word + " ") }\r
index 36e3cd75ad859bf46897d02c3c9e98ddfa7a2511..1744448f382cbe682161b4d79d6fba379ac2de0f 100644 (file)
@@ -2,7 +2,7 @@
 \r
 version 2006-03-09\r
 \r
-This search query parser uses the excellent Pyparsing module \r
+This search query parser uses the excellent Pyparsing module\r
 (http://pyparsing.sourceforge.net/) to parse search queries by users.\r
 It handles:\r
 \r
@@ -30,7 +30,7 @@ are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright notice, this\r
   list of conditions and the following disclaimer.\r
 * Redistributions in binary form must reproduce the above copyright notice,\r
-  this list of conditions and the following disclaimer in the documentation \r
+  this list of conditions and the following disclaimer in the documentation\r
   and/or other materials provided with the distribution.\r
 * Neither the name of Estrate nor the names of its contributors may be used\r
   to endorse or promote products derived from this software without specific\r
@@ -41,10 +41,10 @@ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\r
 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; \r
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON \r
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS \r
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
 \r
 CONTRIBUTORS:\r
@@ -57,7 +57,7 @@ TODO:
 - ask someone to check my English texts\r
 - add more kinds of wildcards ('*' at the beginning and '*' inside a word)?\r
 """\r
-from pyparsing import Word, alphanums, Keyword, Group, Combine, Forward, Suppress, Optional, OneOrMore, oneOf\r
+from pyparsing import Word, alphanums, Keyword, Group, Combine, Forward, Suppress, OneOrMore, oneOf\r
 \r
 class SearchQueryParser:\r
 \r
@@ -72,12 +72,12 @@ class SearchQueryParser:
             'wordwildcard': self.evaluateWordWildcard,\r
         }\r
         self._parser = self.parser()\r
-    \r
+\r
     def parser(self):\r
         """\r
         This function returns a parser.\r
         The grammar should be like most full text search engines (Google, Tsearch, Lucene).\r
-        \r
+\r
         Grammar:\r
         - a query consists of alphanumeric words, with an optional '*' wildcard\r
           at the end of a word\r
@@ -89,19 +89,19 @@ class SearchQueryParser:
         - if an operator is missing, use an 'and' operator\r
         """\r
         operatorOr = Forward()\r
-        \r
+\r
         operatorWord = Group(Combine(Word(alphanums) + Suppress('*'))).setResultsName('wordwildcard') | \\r
                             Group(Word(alphanums)).setResultsName('word')\r
-        \r
+\r
         operatorQuotesContent = Forward()\r
         operatorQuotesContent << (\r
             (operatorWord + operatorQuotesContent) | operatorWord\r
         )\r
-        \r
+\r
         operatorQuotes = Group(\r
             Suppress('"') + operatorQuotesContent + Suppress('"')\r
         ).setResultsName("quotes") | operatorWord\r
-        \r
+\r
         operatorParenthesis = Group(\r
             (Suppress("(") + operatorOr + Suppress(")"))\r
         ).setResultsName("parenthesis") | operatorQuotes\r
@@ -117,7 +117,7 @@ class SearchQueryParser:
         ).setResultsName("and") | Group(\r
             operatorNot + OneOrMore(~oneOf("and or") + operatorAnd)\r
         ).setResultsName("and") | operatorNot)\r
-        \r
+\r
         operatorOr << (Group(\r
             operatorAnd + Suppress(Keyword("or", caseless=True)) + operatorOr\r
         ).setResultsName("or") | operatorAnd)\r
@@ -158,7 +158,7 @@ class SearchQueryParser:
 \r
     def evaluateWordWildcard(self, argument):\r
         return self.GetWordWildcard(argument[0])\r
-        \r
+\r
     def evaluate(self, argument):\r
         return self._methods[argument.getName()](argument)\r
 \r
@@ -230,7 +230,7 @@ class ParserTest(SearchQueryParser):
         7: 'nothing',\r
         8: 'helper',\r
     }\r
-        \r
+\r
     index = {\r
         'help': {1, 2, 4, 5},\r
         'me': {2},\r
@@ -264,7 +264,7 @@ class ParserTest(SearchQueryParser):
             if self.docs[item].count(search_string):\r
                 result.add(item)\r
         return result\r
-    \r
+\r
     def GetNot(self, not_set):\r
         all = set(list(self.docs.keys()))\r
         return all.difference(not_set)\r
@@ -284,7 +284,7 @@ class ParserTest(SearchQueryParser):
                 print('>>>>>>>>>>>>>>>>>>>>>>Test ERROR<<<<<<<<<<<<<<<<<<<<<')\r
             print('')\r
         return all_ok\r
-            \r
+\r
 if __name__=='__main__':\r
     if ParserTest().Test():\r
         print('All tests OK')\r
index 5925ad8139382fde0defd3724b130e50c3f9a890..79a336660a60e60b8ca5e5ce5cafe5642fa7d9a5 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright 2010, Paul McGuire\r
 #\r
 # a simple SELECT statement parser, taken from SQLite's SELECT statement\r
-# definition at http://www.sqlite.org/lang_select.html\r
+# definition at https://www.sqlite.org/lang_select.html\r
 #\r
 from pyparsing import *\r
 ParserElement.enablePackrat()\r
@@ -11,22 +11,22 @@ LPAR,RPAR,COMMA = map(Suppress,"(),")
 select_stmt = Forward().setName("select statement")\r
 \r
 # keywords\r
-(UNION, ALL, AND, INTERSECT, EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER, \r
+(UNION, ALL, AND, INTERSECT, EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER,\r
  CROSS, LEFT, OUTER, JOIN, AS, INDEXED, NOT, SELECT, DISTINCT, FROM, WHERE, GROUP, BY,\r
- HAVING, ORDER, BY, LIMIT, OFFSET, OR) =  map(CaselessKeyword, """UNION, ALL, AND, INTERSECT, \r
- EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER, CROSS, LEFT, OUTER, JOIN, AS, INDEXED, NOT, SELECT, \r
+ HAVING, ORDER, BY, LIMIT, OFFSET, OR) =  map(CaselessKeyword, """UNION, ALL, AND, INTERSECT,\r
+ EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER, CROSS, LEFT, OUTER, JOIN, AS, INDEXED, NOT, SELECT,\r
  DISTINCT, FROM, WHERE, GROUP, BY, HAVING, ORDER, BY, LIMIT, OFFSET, OR""".replace(",","").split())\r
 (CAST, ISNULL, NOTNULL, NULL, IS, BETWEEN, ELSE, END, CASE, WHEN, THEN, EXISTS,\r
- COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE, CURRENT_TIME, CURRENT_DATE, \r
- CURRENT_TIMESTAMP) = map(CaselessKeyword, """CAST, ISNULL, NOTNULL, NULL, IS, BETWEEN, ELSE, \r
- END, CASE, WHEN, THEN, EXISTS, COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE, \r
+ COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE, CURRENT_TIME, CURRENT_DATE,\r
+ CURRENT_TIMESTAMP) = map(CaselessKeyword, """CAST, ISNULL, NOTNULL, NULL, IS, BETWEEN, ELSE,\r
+ END, CASE, WHEN, THEN, EXISTS, COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE,\r
  CURRENT_TIME, CURRENT_DATE, CURRENT_TIMESTAMP""".replace(",","").split())\r
-keyword = MatchFirst((UNION, ALL, INTERSECT, EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER, \r
+keyword = MatchFirst((UNION, ALL, INTERSECT, EXCEPT, COLLATE, ASC, DESC, ON, USING, NATURAL, INNER,\r
  CROSS, LEFT, OUTER, JOIN, AS, INDEXED, NOT, SELECT, DISTINCT, FROM, WHERE, GROUP, BY,\r
  HAVING, ORDER, BY, LIMIT, OFFSET, CAST, ISNULL, NOTNULL, NULL, IS, BETWEEN, ELSE, END, CASE, WHEN, THEN, EXISTS,\r
- COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE, CURRENT_TIME, CURRENT_DATE, \r
+ COLLATE, IN, LIKE, GLOB, REGEXP, MATCH, ESCAPE, CURRENT_TIME, CURRENT_DATE,\r
  CURRENT_TIMESTAMP))\r
\r
+\r
 identifier = ~keyword + Word(alphas, alphanums+"_")\r
 collation_name = identifier.copy()\r
 column_name = identifier.copy()\r
@@ -88,20 +88,20 @@ join_constraint = Group(Optional(ON + expr | USING + LPAR + Group(delimitedList(
 join_op = COMMA | Group(Optional(NATURAL) + Optional(INNER | CROSS | LEFT + OUTER | LEFT | OUTER) + JOIN)\r
 \r
 join_source = Forward()\r
-single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) + \r
+single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) +\r
                     Optional(Optional(AS) + table_alias("table_alias*")) +\r
-                    Optional(INDEXED + BY + index_name("name") | NOT + INDEXED)("index") | \r
-                  (LPAR + select_stmt + RPAR + Optional(Optional(AS) + table_alias)) | \r
+                    Optional(INDEXED + BY + index_name("name") | NOT + INDEXED)("index") |\r
+                  (LPAR + select_stmt + RPAR + Optional(Optional(AS) + table_alias)) |\r
                   (LPAR + join_source + RPAR) )\r
 \r
-join_source << (Group(single_source + OneOrMore(join_op + single_source + join_constraint)) | \r
+join_source << (Group(single_source + OneOrMore(join_op + single_source + join_constraint)) |\r
                 single_source)\r
 \r
 result_column = "*" | table_name + "." + "*" | Group(expr + Optional(Optional(AS) + column_alias))\r
 select_core = (SELECT + Optional(DISTINCT | ALL) + Group(delimitedList(result_column))("columns") +\r
                 Optional(FROM + join_source("from*")) +\r
                 Optional(WHERE + expr("where_expr")) +\r
-                Optional(GROUP + BY + Group(delimitedList(ordering_term))("group_by_terms") + \r
+                Optional(GROUP + BY + Group(delimitedList(ordering_term))("group_by_terms") +\r
                         Optional(HAVING + expr("having_expr"))))\r
 \r
 select_stmt << (select_core + ZeroOrMore(compound_operator + select_core) +\r
index 963d1531fc20f73795dd928b6397ba502d712d88..123b401d629b9626bceada9b7f07fb43c35cff33 100644 (file)
@@ -5,8 +5,8 @@
 #\r
 # Updates:\r
 #  November, 2011 - fixed errors in precedence of alternatives in simpleString;\r
-#      fixed exception raised in verifyLen to properly signal the input string \r
-#      and exception location so that markInputline works correctly; fixed \r
+#      fixed exception raised in verifyLen to properly signal the input string\r
+#      and exception location so that markInputline works correctly; fixed\r
 #      definition of decimal to accept a single '0' and optional leading '-'\r
 #      sign; updated tests to improve parser coverage\r
 #\r
@@ -17,7 +17,7 @@ BNF reference: http://theory.lcs.mit.edu/~rivest/sexp.txt
 \r
 <sexp>         :: <string> | <list>\r
 <string>       :: <display>? <simple-string> ;\r
-<simple-string>        :: <raw> | <token> | <base-64> | <hexadecimal> | \r
+<simple-string>        :: <raw> | <token> | <base-64> | <hexadecimal> |\r
                           <quoted-string> ;\r
 <display>      :: "[" <simple-string> "]" ;\r
 <raw>          :: <decimal> ":" <bytes> ;\r
@@ -27,7 +27,7 @@ BNF reference: http://theory.lcs.mit.edu/~rivest/sexp.txt
 <token>        :: <tokenchar>+ ;\r
 <base-64>      :: <decimal>? "|" ( <base-64-char> | <whitespace> )* "|" ;\r
 <hexadecimal>   :: "#" ( <hex-digit> | <white-space> )* "#" ;\r
-<quoted-string> :: <decimal>? <quoted-string-body>  \r
+<quoted-string> :: <decimal>? <quoted-string-body>\r
 <quoted-string-body> :: "\"" <bytes> "\""\r
 <list>         :: "(" ( <sexp> | <whitespace> )* ")" ;\r
 <whitespace>   :: <whitespace-char>* ;\r
@@ -65,11 +65,11 @@ hexadecimal = ("#" + OneOrMore(Word(hexnums)) + "#")\
 bytes = Word(printables)\r
 raw = Group(decimal("len") + Suppress(":") + bytes).setParseAction(verifyLen)\r
 token = Word(alphanums + "-./_:*+=")\r
-base64_ = Group(Optional(decimal|hexadecimal,default=None)("len") + VBAR \r
+base64_ = Group(Optional(decimal|hexadecimal,default=None)("len") + VBAR\r
     + OneOrMore(Word( alphanums +"+/=" )).setParseAction(lambda t: b64decode("".join(t)))\r
     + VBAR).setParseAction(verifyLen)\r
-    \r
-qString = Group(Optional(decimal,default=None)("len") + \r
+\r
+qString = Group(Optional(decimal,default=None)("len") +\r
                         dblQuotedString.setParseAction(removeQuotes)).setParseAction(verifyLen)\r
 simpleString = base64_ | raw | decimal | token | hexadecimal | qString\r
 \r
@@ -86,7 +86,7 @@ string_ = Optional(display) + simpleString
 sexp = Forward()\r
 sexpList = Group(LPAR + ZeroOrMore(sexp) + RPAR)\r
 sexp << ( string_ | sexpList )\r
-    \r
+\r
 ######### Test data ###########\r
 test00 = """(snicker "abc" (#03# |YWJj|))"""\r
 test01 = """(certificate\r
@@ -139,29 +139,20 @@ test07 = """(defun factorial (x)
    (if (zerop x) 1\r
        (* x (factorial (- x 1)))))\r
        """\r
-test51 = """(2:XX "abc" (#30# |YWJj|))"""\r
-test51error = """(3:XX "abc" (#30# |YWJj|))"""\r
+test51 = """(2:XX "abc" (#03# |YWJj|))"""\r
+test51error = """(3:XX "abc" (#03# |YWJj|))"""\r
 \r
-test52 =     """ \r
-    (and \r
-      (or (> uid 1000) \r
-          (!= gid 20) \r
-      ) \r
-      (> quota 5.0e+03) \r
-    ) \r
-    """ \r
+test52 =     """\r
+    (and\r
+      (or (> uid 1000)\r
+          (!= gid 20)\r
+      )\r
+      (> quota 5.0e+03)\r
+    )\r
+    """\r
 \r
 # Run tests\r
 t = None\r
-alltests = [ locals()[t] for t in sorted(locals()) if t.startswith("test") ]\r
+alltests = [ globals()[t] for t in sorted(locals()) if t.startswith("test") ]\r
 \r
-for t in alltests:\r
-    print('-'*50)\r
-    print(t)\r
-    try:\r
-        sexpr = sexp.parseString(t, parseAll=True)\r
-        pprint.pprint(sexpr.asList())\r
-    except ParseFatalException as pfe:\r
-        print("Error:", pfe.msg)\r
-        print(pfe.markInputline('^'))\r
-    print()\r
+sexp.runTests(alltests, fullDump=False)\r
index c5f48678004caa8e327b690a849434753d6c9981..2df857259b1d985eea96712b8a585850e8d45990 100644 (file)
@@ -1,6 +1,6 @@
 # shapes.py\r
 #\r
-#   A sample program showing how parse actions can convert parsed \r
+#   A sample program showing how parse actions can convert parsed\r
 # strings into a data type or object.\r
 #\r
 # Copyright 2012, Paul T. McGuire\r
@@ -13,9 +13,9 @@ class Shape(object):
 \r
     def area(self):\r
         raise NotImplementedException()\r
-    \r
+\r
     def __str__(self):\r
-        return "<{}>: {}".format(self.__class__.__name__, self.__dict__)\r
+        return "<{0}>: {1}".format(self.__class__.__name__, self.__dict__)\r
 \r
 class Square(Shape):\r
     def area(self):\r
index 825956beec96adcd8ada6f3d06bedd4efb55830f..af053731a1bb28f3a91025c81db59aa3fc1803cb 100644 (file)
@@ -34,7 +34,7 @@ factop = Literal('!')
 #       - rightLeftAssoc is the indicator whether the operator is\r
 #          right or left associative, using the pyparsing-defined\r
 #          constants opAssoc.RIGHT and opAssoc.LEFT.\r
-#       - parseAction is the parse action to be associated with \r
+#       - parseAction is the parse action to be associated with\r
 #          expressions matching this operator expression (the\r
 #          parse action tuple member may be omitted)\r
 #   3.  Call infixNotation passing the operand expression and\r
@@ -42,7 +42,7 @@ factop = Literal('!')
 #       as the generated pyparsing expression.  You can then use\r
 #       this expression to parse input strings, or incorporate it\r
 #       into a larger, more complex grammar.\r
-#       \r
+#\r
 expr = infixNotation( operand,\r
     [("!", 1, opAssoc.LEFT),\r
      ("^", 2, opAssoc.RIGHT),\r
@@ -63,5 +63,4 @@ test = ["9 + 2 + 3",
 for t in test:\r
     print(t)\r
     print(expr.parseString(t))\r
-    print('') \r
-\r
+    print('')\r
index 5f355b79694c3cb8346e2f7ef84cbc0fc678b5e5..d1df9a50104eead43b67ecf37f461855794bc97b 100644 (file)
@@ -98,5 +98,3 @@ if __name__ == "__main__":
         res = boolExpr.parseString(t)[0]\r
         success = "PASS" if bool(res) == expected else "FAIL"\r
         print (t,'\n', res, '=', bool(res),'\n', success, '\n')\r
-\r
-\r
index 6cde6cedb983e4a3db7e55b6e9298a89803343eb..c64a022d75c4e62c5889d1c55f9106afda8e0168 100644 (file)
@@ -5,8 +5,8 @@
 #\r
 # Copyright (c) 2003,2016, Paul McGuire\r
 #\r
-from pyparsing import Literal, CaselessLiteral, Word, delimitedList, Optional, \\r
-    Combine, Group, alphas, nums, alphanums, ParseException, Forward, oneOf, quotedString, \\r
+from pyparsing import Word, delimitedList, Optional, \\r
+    Group, alphas, alphanums, Forward, oneOf, quotedString, \\r
     ZeroOrMore, restOfLine, CaselessKeyword, pyparsing_common\r
 \r
 # define SQL tokens\r
@@ -35,11 +35,11 @@ whereCondition = Group(
     ( columnName + in_ + "(" + selectStmt + ")" ) |\r
     ( "(" + whereExpression + ")" )\r
     )\r
-whereExpression << whereCondition + ZeroOrMore( ( and_ | or_ ) + whereExpression ) \r
+whereExpression << whereCondition + ZeroOrMore( ( and_ | or_ ) + whereExpression )\r
 \r
 # define the grammar\r
-selectStmt <<= (SELECT + ('*' | columnNameList)("columns") + \r
-                FROM + tableNameList( "tables" ) + \r
+selectStmt <<= (SELECT + ('*' | columnNameList)("columns") +\r
+                FROM + tableNameList( "tables" ) +\r
                 Optional(Group(WHERE + whereExpression), "")("where"))\r
 \r
 simpleSQL = selectStmt\r
@@ -61,7 +61,7 @@ if __name__ == "__main__":
 \r
         Select A,B,C from Sys.dual\r
 \r
-        Select A, B, C from Sys.dual, Table2   \r
+        Select A, B, C from Sys.dual, Table2\r
 \r
         # FAIL - invalid SELECT keyword\r
         Xelect A, B, C from Sys.dual\r
index 1813432d55e8ca12bc4db016a8f33a9eae0ce452..35346bca2d2de171fdbbf6ccbee2575fab5edb66 100644 (file)
@@ -5,14 +5,14 @@ Here is a simple Wiki input:
   *This is in italics.*\r
   **This is in bold!**\r
   ***This is in bold italics!***\r
-  Here's a URL to {{Pyparsing's Wiki Page->http://pyparsing.wikispaces.com}}\r
+  Here's a URL to {{Pyparsing's Wiki Page->https://site-closed.wikispaces.com}}\r
 """\r
 \r
 def convertToHTML(opening,closing):\r
     def conversionParseAction(s,l,t):\r
         return opening + t[0] + closing\r
     return conversionParseAction\r
-    \r
+\r
 italicized = QuotedString("*").setParseAction(convertToHTML("<I>","</I>"))\r
 bolded = QuotedString("**").setParseAction(convertToHTML("<B>","</B>"))\r
 boldItalicized = QuotedString("***").setParseAction(convertToHTML("<B><I>","</I></B>"))\r
@@ -21,8 +21,8 @@ def convertToHTML_A(s,l,t):
         text,url=t[0].split("->")\r
     except ValueError:\r
         raise ParseFatalException(s,l,"invalid URL link reference: " + t[0])\r
-    return '<A href="{}">{}</A>'.format(url,text)\r
-    \r
+    return '<A href="{0}">{1}</A>'.format(url, text)\r
+\r
 urlRef = QuotedString("{{",endQuoteChar="}}").setParseAction(convertToHTML_A)\r
 \r
 wikiMarkup = urlRef | boldItalicized | bolded | italicized\r
index c3c3da06d637f98aceb131f486d4949f62592ae3..d4604dabf227abe6ba81553657af741db2303b2a 100644 (file)
@@ -2,7 +2,7 @@
 \r
 """\r
 NAME:\r
-    sparser.py  \r
+    sparser.py\r
 \r
 SYNOPSIS:\r
     sparser.py [options] filename\r
@@ -47,8 +47,6 @@ EXAMPLES:
 import sys\r
 import os\r
 import getopt\r
-import re\r
-import gzip\r
 \r
 from pyparsing import *\r
 \r
@@ -64,7 +62,7 @@ debug_p = 0
 \r
 \r
 #---positional args, default is empty---\r
-pargs = []    \r
+pargs = []\r
 \r
 \r
 #---other---\r
@@ -79,14 +77,14 @@ def msg(txt):
 def debug(ftn, txt):\r
     """Used for debugging."""\r
     if debug_p:\r
-        sys.stdout.write("{}.{}:{}\n".format(modname, ftn, txt))\r
+        sys.stdout.write("{0}.{1}:{2}\n".format(modname, ftn, txt))\r
         sys.stdout.flush()\r
 \r
 def fatal(ftn, txt):\r
     """If can't continue."""\r
-    msg = "{}.{}:FATAL:{}\n".format(modname, ftn, txt)\r
+    msg = "{0}.{1}:FATAL:{2}\n".format(modname, ftn, txt)\r
     raise SystemExit(msg)\r
\r
+\r
 def usage():\r
     """Prints the docstring."""\r
     print(__doc__)\r
@@ -118,7 +116,7 @@ class ParseFileLineByLine:
     compressed.  Compression is deduced from the file name suffixes '.Z'\r
     (compress/uncompress), '.gz' (gzip/gunzip), and '.bz2' (bzip2).\r
 \r
-    The parse definition file name is developed based on the input file name.\r
+    The parse definition fi le name is developed based on the input file name.\r
     If the input file name is 'basename.ext', then the definition file is\r
     'basename_def.ext'.  If a definition file specific to the input file is not\r
     found, then the program searches for the file 'sparse.def' which would be\r
@@ -129,10 +127,10 @@ class ParseFileLineByLine:
     or '~user' to indicate a home directory, as well as URLs (for reading\r
     only).\r
 \r
-    Constructor: \r
+    Constructor:\r
     ParseFileLineByLine(|filename|, |mode|='"r"'), where |filename| is the name\r
     of the file (or a URL) and |mode| is one of '"r"' (read), '"w"' (write) or\r
-    '"a"' (append, not supported for .Z files).  \r
+    '"a"' (append, not supported for .Z files).\r
     """\r
 \r
     def __init__(self, filename, mode = 'r'):\r
@@ -154,27 +152,27 @@ class ParseFileLineByLine:
                     raise IOError(2, 'No such file or directory: ' + filename)\r
             filen, file_extension = os.path.splitext(filename)\r
             command_dict = {\r
-              ('.Z', 'r'): \r
+              ('.Z', 'r'):\r
                 "self.file = os.popen('uncompress -c ' + filename, mode)",\r
-              ('.gz', 'r'): \r
+              ('.gz', 'r'):\r
                 "self.file = gzip.GzipFile(filename, 'rb')",\r
-              ('.bz2', 'r'): \r
+              ('.bz2', 'r'):\r
                 "self.file = os.popen('bzip2 -dc ' + filename, mode)",\r
-              ('.Z', 'w'): \r
+              ('.Z', 'w'):\r
                 "self.file = os.popen('compress > ' + filename, mode)",\r
-              ('.gz', 'w'): \r
+              ('.gz', 'w'):\r
                 "self.file = gzip.GzipFile(filename, 'wb')",\r
-              ('.bz2', 'w'): \r
+              ('.bz2', 'w'):\r
                 "self.file = os.popen('bzip2 > ' + filename, mode)",\r
-              ('.Z', 'a'): \r
+              ('.Z', 'a'):\r
                 "raise IOError, (0, 'Can\'t append to .Z files')",\r
-              ('.gz', 'a'): \r
+              ('.gz', 'a'):\r
                 "self.file = gzip.GzipFile(filename, 'ab')",\r
-              ('.bz2', 'a'): \r
+              ('.bz2', 'a'):\r
                 "raise IOError, (0, 'Can\'t append to .bz2 files')",\r
                            }\r
 \r
-            exec(command_dict.get((file_extension, mode), \r
+            exec(command_dict.get((file_extension, mode),\r
                                   'self.file = open(filename, mode)'))\r
 \r
         self.grammar = None\r
@@ -211,54 +209,54 @@ class ParseFileLineByLine:
         decimal_sep = "."\r
         sign = oneOf("+ -")\r
         # part of printables without decimal_sep, +, -\r
-        special_chars = string.replace('!"#$%&\'()*,./:;<=>?@[\\]^_`{|}~', \r
-                                       decimal_sep, "") \r
+        special_chars = string.replace('!"#$%&\'()*,./:;<=>?@[\\]^_`{|}~',\r
+                                       decimal_sep, "")\r
         integer = ToInteger(\r
-                  Combine(Optional(sign) + \r
+                  Combine(Optional(sign) +\r
                           Word(nums))).setName("integer")\r
         positive_integer = ToInteger(\r
-                           Combine(Optional("+") + \r
+                           Combine(Optional("+") +\r
                                    Word(nums))).setName("integer")\r
         negative_integer = ToInteger(\r
-                           Combine("-" + \r
+                           Combine("-" +\r
                                    Word(nums))).setName("integer")\r
         real = ToFloat(\r
-               Combine(Optional(sign) + \r
-                       Word(nums) + \r
-                       decimal_sep + \r
-                       Optional(Word(nums)) + \r
-                       Optional(oneOf("E e") + \r
+               Combine(Optional(sign) +\r
+                       Word(nums) +\r
+                       decimal_sep +\r
+                       Optional(Word(nums)) +\r
+                       Optional(oneOf("E e") +\r
                                 Word(nums)))).setName("real")\r
         positive_real = ToFloat(\r
-                        Combine(Optional("+") + \r
-                                Word(nums) + \r
-                                decimal_sep + \r
-                                Optional(Word(nums)) + \r
-                                Optional(oneOf("E e") + \r
+                        Combine(Optional("+") +\r
+                                Word(nums) +\r
+                                decimal_sep +\r
+                                Optional(Word(nums)) +\r
+                                Optional(oneOf("E e") +\r
                                          Word(nums)))).setName("real")\r
         negative_real = ToFloat(\r
-                        Combine("-" + \r
-                                Word(nums) + \r
-                                decimal_sep + \r
-                                Optional(Word(nums)) + \r
-                                Optional(oneOf("E e") + \r
+                        Combine("-" +\r
+                                Word(nums) +\r
+                                decimal_sep +\r
+                                Optional(Word(nums)) +\r
+                                Optional(oneOf("E e") +\r
                                          Word(nums)))).setName("real")\r
         qString = ( sglQuotedString | dblQuotedString ).setName("qString")\r
-    \r
+\r
         # add other characters we should skip over between interesting fields\r
         integer_junk = Optional(\r
                        Suppress(\r
-                       Word(alphas + \r
-                            special_chars + \r
+                       Word(alphas +\r
+                            special_chars +\r
                             decimal_sep))).setName("integer_junk")\r
         real_junk = Optional(\r
                     Suppress(\r
-                    Word(alphas + \r
+                    Word(alphas +\r
                          special_chars))).setName("real_junk")\r
         qString_junk = SkipTo(qString).setName("qString_junk")\r
 \r
         # Now that 'integer', 'real', and 'qString' have been assigned I can\r
-        # execute the definition file.  \r
+        # execute the definition file.\r
         exec(compile(open(self.parsedef).read(), self.parsedef, 'exec'))\r
 \r
         # Build the grammar, combination of the 'integer', 'real, 'qString',\r
@@ -337,7 +335,7 @@ def main(pargs):
     for i in fp:\r
         print(i)\r
 \r
-    \r
+\r
 #-------------------------\r
 if __name__ == '__main__':\r
     ftn = "main"\r
@@ -361,5 +359,5 @@ if __name__ == '__main__':
 \r
 #===Revision Log===\r
 #Created by mkpythonproj:\r
-#2006-02-06  Tim Cera  \r
+#2006-02-06  Tim Cera\r
 #\r
index 1156207831956f4ec0c401d0fc6c8167d20cacff..cd6717cce6e07d43c70136a22253fb568671b15a 100644 (file)
@@ -2,10 +2,10 @@
 \r
 # sql2dot.py\r
 #\r
-#  Creates table graphics by parsing SQL table DML commands and \r
+#  Creates table graphics by parsing SQL table DML commands and\r
 #  generating DOT language output.\r
 #\r
-#  Adapted from a post at http://energyblog.blogspot.com/2006/04/blog-post_20.html.\r
+#  Adapted from a post at https://energyblog.blogspot.com/2006/04/blog-post_20.html.\r
 #\r
 sampleSQL = """\r
 create table student\r
@@ -38,24 +38,24 @@ class_id integer
 \r
 alter table only student_registrations\r
     add constraint students_link\r
-    foreign key \r
+    foreign key\r
     (student_id) references students(student_id);\r
 \r
 alter table only student_registrations\r
-    add constraint classes_link \r
-    foreign key \r
+    add constraint classes_link\r
+    foreign key\r
     (class_id) references classes(class_id);\r
 """.upper()\r
-    \r
-from pyparsing import Literal, CaselessLiteral, Word, delimitedList \\r
-    ,Optional, Combine, Group, alphas, nums, alphanums, Forward \\r
-    , oneOf, sglQuotedString, OneOrMore, ZeroOrMore, CharsNotIn \\r
+\r
+from pyparsing import Literal, Word, delimitedList \\r
+    , alphas, alphanums \\r
+    , OneOrMore, ZeroOrMore, CharsNotIn \\r
     , replaceWith\r
 \r
 skobki = "(" + ZeroOrMore(CharsNotIn(")")) + ")"\r
 field_def = OneOrMore(Word(alphas,alphanums+"_\"':-") | skobki)\r
 \r
-def field_act(s,loc,tok):    \r
+def field_act(s,loc,tok):\r
     return ("<"+tok[0]+"> " + " ".join(tok)).replace("\"","\\\"")\r
 \r
 field_def.setParseAction(field_act)\r
@@ -75,7 +75,7 @@ create_table_def.setParseAction(create_table_act)
 \r
 add_fkey_def=Literal("ALTER")+"TABLE"+"ONLY" + Word(alphanums+"_").setResultsName("fromtable") + "ADD" \\r
     + "CONSTRAINT" + Word(alphanums+"_") + "FOREIGN"+"KEY"+"("+Word(alphanums+"_").setResultsName("fromcolumn")+")" \\r
-    +"REFERENCES"+Word(alphanums+"_").setResultsName("totable")+"("+Word(alphanums+"_").setResultsName("tocolumn")+")"+";"    \r
+    +"REFERENCES"+Word(alphanums+"_").setResultsName("totable")+"("+Word(alphanums+"_").setResultsName("tocolumn")+")"+";"\r
 \r
 def add_fkey_act(toks):\r
     return """ "%(fromtable)s":%(fromcolumn)s -> "%(totable)s":%(tocolumn)s """ % toks\r
@@ -90,7 +90,7 @@ statement_def =  comment_def | create_table_def | add_fkey_def | other_statement
 defs =  OneOrMore(statement_def)\r
 \r
 print("""digraph g { graph [ rankdir = "LR" ]; """)\r
-for i in defs.parseString(sampleSQL):    \r
-    if i!="":        \r
+for i in defs.parseString(sampleSQL):\r
+    if i!="":\r
         print(i)\r
-print("}")
\ No newline at end of file
+print("}")\r
index f80b4d670e0466915d039dae5c655df9588699cf..d33d4dee49a3e431c7dbc7d265573501516e5f91 100644 (file)
@@ -1,35 +1,35 @@
 # stackish.py\r
 #\r
-# Stackish is a data representation syntax, similar to JSON or YAML.  For more info on \r
+# Stackish is a data representation syntax, similar to JSON or YAML.  For more info on\r
 # stackish, see http://www.savingtheinternetwithhate.com/stackish.html\r
 #\r
 # Copyright 2008, Paul McGuire\r
 #\r
 \r
 """\r
-NUMBER A simple integer type that's just any series of digits. \r
-FLOAT A simple floating point type. \r
-STRING A string is double quotes with anything inside that's not a " or \r
-    newline character. You can include \n and \" to include these \r
-    characters. \r
-MARK Marks a point in the stack that demarcates the boundary for a nested \r
-    group. \r
-WORD Marks the root node of a group, with the other end being the nearest \r
-    MARK. \r
-GROUP Acts as the root node of an anonymous group. \r
-ATTRIBUTE Assigns an attribute name to the previously processed node. \r
-    This means that just about anything can be an attribute, unlike in XML. \r
-BLOB A BLOB is unique to Stackish and allows you to record any content \r
+NUMBER A simple integer type that's just any series of digits.\r
+FLOAT A simple floating point type.\r
+STRING A string is double quotes with anything inside that's not a " or\r
+    newline character. You can include \n and \" to include these\r
+    characters.\r
+MARK Marks a point in the stack that demarcates the boundary for a nested\r
+    group.\r
+WORD Marks the root node of a group, with the other end being the nearest\r
+    MARK.\r
+GROUP Acts as the root node of an anonymous group.\r
+ATTRIBUTE Assigns an attribute name to the previously processed node.\r
+    This means that just about anything can be an attribute, unlike in XML.\r
+BLOB A BLOB is unique to Stackish and allows you to record any content\r
     (even binary content) inside the structure. This is done by pre-\r
-    sizing the data with the NUMBER similar to Dan Bernstein's netstrings \r
-    setup. \r
-SPACE White space is basically ignored. This is interesting because since \r
-    Stackish is serialized consistently this means you can use \n as the \r
-    separation character and perform reasonable diffs on two structures. \r
+    sizing the data with the NUMBER similar to Dan Bernstein's netstrings\r
+    setup.\r
+SPACE White space is basically ignored. This is interesting because since\r
+    Stackish is serialized consistently this means you can use \n as the\r
+    separation character and perform reasonable diffs on two structures.\r
 """\r
 \r
 from pyparsing import Suppress,Word,nums,alphas,alphanums,Combine,oneOf,\\r
-        Optional,QuotedString,Forward,Group,ZeroOrMore,printables,srange\r
+        Optional,QuotedString,Forward,Group,ZeroOrMore,srange\r
 \r
 MARK,UNMARK,AT,COLON,QUOTE = map(Suppress,"[]@:'")\r
 \r
@@ -45,7 +45,7 @@ strBody = Forward()
 def setBodyLength(tokens):\r
     strBody << Word(srange(r'[\0x00-\0xffff]'), exact=int(tokens[0]))\r
     return ""\r
-BLOB = Combine(QUOTE + Word(nums).setParseAction(setBodyLength) + \r
+BLOB = Combine(QUOTE + Word(nums).setParseAction(setBodyLength) +\r
                                 COLON + strBody + QUOTE)\r
 \r
 item = Forward()\r
@@ -55,13 +55,13 @@ def assignUsing(s):
             tokens[tokens[s]] = tokens[0]\r
             del tokens[s]\r
     return assignPA\r
-GROUP = (MARK + \r
-         Group( ZeroOrMore( \r
-                    (item + \r
+GROUP = (MARK +\r
+         Group( ZeroOrMore(\r
+                    (item +\r
                      Optional(ATTRIBUTE)("attr")\r
                     ).setParseAction(assignUsing("attr"))\r
                 )\r
-               ) + \r
+               ) +\r
          ( WORD("name") | UNMARK )\r
         ).setParseAction(assignUsing("name"))\r
 item << (NUMBER | FLOAT | STRING | BLOB | GROUP )\r
diff --git a/examples/stateMachine2.py b/examples/stateMachine2.py
deleted file mode 100644 (file)
index 748bb8b..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-# stateMachine.py\r
-# \r
-# module to define .pystate import handler\r
-#\r
-#import imputil\r
-import sys\r
-import os\r
-import types\r
-import urllib.parse\r
-\r
-DEBUG = False\r
-\r
-from pyparsing import Word, Group, ZeroOrMore, alphas, \\r
-    alphanums, ParserElement, ParseException, ParseSyntaxException, \\r
-    Empty, LineEnd, OneOrMore, col, Keyword, pythonStyleComment, \\r
-    StringEnd, traceParseAction\r
-\r
-\r
-ident = Word(alphas+"_", alphanums+"_$")\r
-\r
-pythonKeywords = """and as assert break class continue def \r
-    del elif else except exec finally for from global if import \r
-    in is lambda None not or pass print raise return try while with \r
-    yield True False"""\r
-pythonKeywords = set(pythonKeywords.split())\r
-def no_keywords_allowed(s,l,t):\r
-    wd = t[0]\r
-    if wd in pythonKeywords:\r
-        errmsg = "cannot not use keyword '%s' " \\r
-                                "as an identifier" % wd\r
-        raise ParseException(s,l,errmsg)\r
-ident.setParseAction(no_keywords_allowed)\r
-\r
-stateTransition = ident("fromState") + "->" + ident("toState")\r
-stateMachine = Keyword("statemachine") + \\r
-    ident("name") + ":" + \\r
-    OneOrMore(Group(stateTransition))("transitions")\r
-\r
-namedStateTransition = (ident("fromState") + \\r
-    "-(" + ident("transition") + ")->" + \\r
-    ident("toState"))\r
-namedStateMachine = Keyword("statemachine") + \\r
-    ident("name") + ":" + \\r
-    OneOrMore(Group(namedStateTransition))("transitions")\r
-\r
-def expand_state_definition(source, loc, tokens):\r
-    indent = " " * (col(loc,source)-1)\r
-    statedef = []\r
-    \r
-    # build list of states\r
-    states = set()\r
-    fromTo = {}\r
-    for tn in tokens.transitions:\r
-        states.add(tn.fromState)\r
-        states.add(tn.toState)\r
-        fromTo[tn.fromState] = tn.toState\r
-    \r
-    # define base class for state classes\r
-    baseStateClass = tokens.name + "State"\r
-    statedef.extend([\r
-        "class %s(object):" % baseStateClass,\r
-        "    def __str__(self):",\r
-        "        return self.__class__.__name__",\r
-        "    def next_state(self):",\r
-        "        return self._next_state_class()" ])\r
-    \r
-    # define all state classes\r
-    statedef.extend(\r
-        "class {}({}): pass".format(s,baseStateClass) \r
-            for s in states )\r
-    statedef.extend(\r
-        "{}._next_state_class = {}".format(s,fromTo[s]) \r
-            for s in states if s in fromTo )\r
-           \r
-    return indent + ("\n"+indent).join(statedef)+"\n"\r
-    \r
-stateMachine.setParseAction(expand_state_definition)\r
-\r
-def expand_named_state_definition(source,loc,tokens):\r
-    indent = " " * (col(loc,source)-1)\r
-    statedef = []\r
-    # build list of states and transitions\r
-    states = set()\r
-    transitions = set()\r
-    \r
-    baseStateClass = tokens.name + "State"\r
-    \r
-    fromTo = {}\r
-    for tn in tokens.transitions:\r
-        states.add(tn.fromState)\r
-        states.add(tn.toState)\r
-        transitions.add(tn.transition)\r
-        if tn.fromState in fromTo:\r
-            fromTo[tn.fromState][tn.transition] = tn.toState\r
-        else:\r
-            fromTo[tn.fromState] = {tn.transition:tn.toState}\r
-\r
-    # add entries for terminal states\r
-    for s in states:\r
-        if s not in fromTo:\r
-            fromTo[s] = {}\r
-    \r
-    # define state transition class\r
-    statedef.extend([\r
-        "class %sTransition:" % baseStateClass,\r
-        "    def __str__(self):",\r
-        "        return self.transitionName",\r
-        ])\r
-    statedef.extend(\r
-        "{} = {}Transition()".format(tn,baseStateClass) \r
-            for tn in transitions)\r
-    statedef.extend("{}.transitionName = '{}'".format(tn,tn) \r
-            for tn in transitions)\r
-\r
-    # define base class for state classes\r
-    excmsg = "'" + tokens.name + \\r
-        '.%s does not support transition "%s"' \\r
-        "'% (self, tn)"\r
-    statedef.extend([\r
-        "class %s(object):" % baseStateClass,\r
-        "    def __str__(self):",\r
-        "        return self.__class__.__name__",\r
-        "    def next_state(self,tn):",\r
-        "        try:",\r
-        "            return self.tnmap[tn]()",\r
-        "        except KeyError:",\r
-        "            raise Exception(%s)" % excmsg,\r
-        "    def __getattr__(self,name):",\r
-        "        raise Exception(%s)" % excmsg,\r
-        ])\r
-    \r
-    # define all state classes\r
-    for s in states:\r
-        statedef.append("class %s(%s): pass" % \r
-                                    (s,baseStateClass))\r
-\r
-    # define state transition maps and transition methods\r
-    for s in states:\r
-        trns = list(fromTo[s].items())\r
-        statedef.append("%s.tnmap = {%s}" % \r
-            (s, ",".join("%s:%s" % tn for tn in trns)) )\r
-        statedef.extend([\r
-            "%s.%s = staticmethod(lambda : %s())" % \r
-                                            (s,tn_,to_)\r
-                for tn_,to_ in trns\r
-            ])\r
-\r
-    return indent + ("\n"+indent).join(statedef) + "\n"\r
-\r
-namedStateMachine.setParseAction(\r
-            expand_named_state_definition)\r
-\r
-#======================================================================\r
-# NEW STUFF - Matt Anderson, 2009-11-26\r
-#======================================================================\r
-class SuffixImporter(object):\r
-\r
-    """An importer designed using the mechanism defined in :pep:`302`. I read\r
-    the PEP, and also used Doug Hellmann's PyMOTW article `Modules and\r
-    Imports`_, as a pattern.\r
-\r
-    .. _`Modules and Imports`: http://www.doughellmann.com/PyMOTW/sys/imports.html   \r
-\r
-    Define a subclass that specifies a :attr:`suffix` attribute, and\r
-    implements a :meth:`process_filedata` method. Then call the classmethod\r
-    :meth:`register` on your class to actually install it in the appropriate\r
-    places in :mod:`sys`. """\r
-\r
-    scheme = 'suffix'\r
-    suffix = None\r
-    path_entry = None\r
-\r
-    @classmethod\r
-    def trigger_url(cls):\r
-        if cls.suffix is None:\r
-            raise ValueError('%s.suffix is not set' % cls.__name__)\r
-        return 'suffix:%s' % cls.suffix\r
-\r
-    @classmethod\r
-    def register(cls):\r
-        sys.path_hooks.append(cls)\r
-        sys.path.append(cls.trigger_url())\r
-\r
-    def __init__(self, path_entry):\r
-        pr = urllib.parse.urlparse(str(path_entry))\r
-        if pr.scheme != self.scheme or pr.path != self.suffix:\r
-            raise ImportError()\r
-        self.path_entry = path_entry\r
-        self._found = {}\r
-\r
-    def checkpath_iter(self, fullname):\r
-        for dirpath in sys.path:\r
-            # if the value in sys.path_importer_cache is None, then this\r
-            # path *should* be imported by the builtin mechanism, and the\r
-            # entry is thus a path to a directory on the filesystem;\r
-            # if it's not None, then some other importer is in charge, and\r
-            # it probably isn't even a filesystem path\r
-            if sys.path_importer_cache.get(dirpath,False) is None:\r
-                checkpath = os.path.join(\r
-                        dirpath,'{}.{}'.format(fullname,self.suffix))\r
-                yield checkpath\r
-    \r
-    def find_module(self, fullname, path=None):\r
-        for checkpath in self.checkpath_iter(fullname):\r
-            if os.path.isfile(checkpath):\r
-                self._found[fullname] = checkpath\r
-                return self\r
-        return None\r
-\r
-    def load_module(self, fullname):\r
-        assert fullname in self._found\r
-        if fullname in sys.modules:\r
-            module = sys.modules[fullname]\r
-        else:\r
-            sys.modules[fullname] = module = types.ModuleType(fullname)\r
-        data = None\r
-        f = open(self._found[fullname])\r
-        try:\r
-            data = f.read()\r
-        finally:\r
-            f.close()\r
-\r
-        module.__dict__.clear()\r
-        module.__file__ = self._found[fullname]\r
-        module.__name__ = fullname\r
-        module.__loader__ = self\r
-        self.process_filedata(module, data)\r
-        return module\r
-\r
-    def process_filedata(self, module, data):\r
-        pass\r
-\r
-class PystateImporter(SuffixImporter):\r
-    suffix = 'pystate'\r
-\r
-    def process_filedata(self, module, data):\r
-        # MATT-NOTE: re-worked :func:`get_state_machine`\r
-\r
-        # convert any statemachine expressions\r
-        stateMachineExpr = (stateMachine | \r
-                            namedStateMachine).ignore(\r
-                                            pythonStyleComment)\r
-        generated_code = stateMachineExpr.transformString(data)\r
-\r
-        if DEBUG: print(generated_code)\r
-\r
-        # compile code object from generated code \r
-        # (strip trailing spaces and tabs, compile doesn't like \r
-        # dangling whitespace)\r
-        COMPILE_MODE = 'exec'\r
-\r
-        codeobj = compile(generated_code.rstrip(" \t"), \r
-                            module.__file__, \r
-                            COMPILE_MODE)\r
-\r
-        exec(codeobj, module.__dict__)\r
-\r
-PystateImporter.register()\r
index 7440a66404468ba429027d91d34804ba5d09316c..12e416ee2d24d73b4854ee10d86e7436a19e1a4a 100644 (file)
-""" Test for bibparse grammar """\r
-\r
-from os.path import join as pjoin, dirname\r
-\r
-from pyparsing import ParseException\r
-from btpyparse import Macro\r
-import btpyparse as bp\r
-\r
-from nose.tools import assert_true, assert_false, assert_equal, assert_raises\r
-\r
-\r
-def test_names():\r
-    # check various types of names\r
-    # All names can contains alphas, but not some special chars\r
-    bad_chars = '"#%\'(),={}'\r
-    for name_type, dig1f in ((bp.macro_def, False),\r
-                             (bp.field_name, False),\r
-                             (bp.entry_type, False),\r
-                             (bp.cite_key, True)):\r
-        if dig1f: # can start with digit\r
-            assert_equal(name_type.parseString('2t')[0], '2t')\r
-        else:\r
-            assert_raises(ParseException, name_type.parseString, '2t')\r
-        # All of the names cannot contain some characters\r
-        for char in bad_chars:\r
-            assert_raises(ParseException, name_type.parseString, char)\r
-        # standard strings all OK\r
-        assert_equal(name_type.parseString('simple_test')[0], 'simple_test')\r
-    # Test macro ref\r
-    mr = bp.macro_ref\r
-    # can't start with digit\r
-    assert_raises(ParseException, mr.parseString, '2t')\r
-    for char in bad_chars:\r
-        assert_raises(ParseException, mr.parseString, char)\r
-    assert_equal(mr.parseString('simple_test')[0].name, 'simple_test')\r
-\r
-\r
-def test_numbers():\r
-    assert_equal(bp.number.parseString('1066')[0], '1066')\r
-    assert_equal(bp.number.parseString('0')[0], '0')\r
-    assert_raises(ParseException, bp.number.parseString, '-4')\r
-    assert_raises(ParseException, bp.number.parseString, '+4')\r
-    assert_raises(ParseException, bp.number.parseString, '.4')\r
-    # something point something leaves a trailing .4 unmatched\r
-    assert_equal(bp.number.parseString('0.4')[0], '0')\r
-\r
-\r
-def test_parse_string():\r
-    # test string building blocks\r
-    assert_equal(bp.chars_no_quotecurly.parseString('x')[0], 'x')\r
-    assert_equal(bp.chars_no_quotecurly.parseString("a string")[0], 'a string')\r
-    assert_equal(bp.chars_no_quotecurly.parseString('a "string')[0], 'a ')\r
-    assert_equal(bp.chars_no_curly.parseString('x')[0], 'x')\r
-    assert_equal(bp.chars_no_curly.parseString("a string")[0], 'a string')\r
-    assert_equal(bp.chars_no_curly.parseString('a {string')[0], 'a ')\r
-    assert_equal(bp.chars_no_curly.parseString('a }string')[0], 'a ')\r
-    # test more general strings together\r
-    for obj in (bp.curly_string, bp.string, bp.field_value):\r
-        assert_equal(obj.parseString('{}').asList(), [])\r
-        assert_equal(obj.parseString('{a "string}')[0], 'a "string')\r
-        assert_equal(obj.parseString('{a {nested} string}').asList(),\r
-                    ['a ', ['nested'], ' string'])\r
-        assert_equal(obj.parseString('{a {double {nested}} string}').asList(),\r
-                    ['a ', ['double ', ['nested']], ' string'])\r
-    for obj in (bp.quoted_string, bp.string, bp.field_value):\r
-        assert_equal(obj.parseString('""').asList(), [])\r
-        assert_equal(obj.parseString('"a string"')[0], 'a string')\r
-        assert_equal(obj.parseString('"a {nested} string"').asList(),\r
-                    ['a ', ['nested'], ' string'])\r
-        assert_equal(obj.parseString('"a {double {nested}} string"').asList(),\r
-                    ['a ', ['double ', ['nested']], ' string'])\r
-    # check macro def in string\r
-    assert_equal(bp.string.parseString('someascii')[0], Macro('someascii'))\r
-    assert_raises(ParseException, bp.string.parseString, '%#= validstring')\r
-    # check number in string\r
-    assert_equal(bp.string.parseString('1994')[0], '1994')\r
-\r
-\r
-def test_parse_field():\r
-    # test field value - hashes included\r
-    fv = bp.field_value\r
-    # Macro\r
-    assert_equal(fv.parseString('aname')[0], Macro('aname'))\r
-    assert_equal(fv.parseString('ANAME')[0], Macro('aname'))\r
-    # String and macro\r
-    assert_equal(fv.parseString('aname # "some string"').asList(),\r
-                 [Macro('aname'), 'some string'])\r
-    # Nested string\r
-    assert_equal(fv.parseString('aname # {some {string}}').asList(),\r
-                 [Macro('aname'), 'some ', ['string']])\r
-    # String and number\r
-    assert_equal(fv.parseString('"a string" # 1994').asList(),\r
-                 ['a string', '1994'])\r
-    # String and number and macro\r
-    assert_equal(fv.parseString('"a string" # 1994 # a_macro').asList(),\r
-                 ['a string', '1994', Macro('a_macro')])\r
-\r
-\r
-def test_comments():\r
-    res = bp.comment.parseString('@Comment{about something}')\r
-    assert_equal(res.asList(), ['comment', '{about something}'])\r
-    assert_equal(\r
-        bp.comment.parseString('@COMMENT{about something').asList(),\r
-        ['comment', '{about something'])\r
-    assert_equal(\r
-        bp.comment.parseString('@comment(about something').asList(),\r
-        ['comment', '(about something'])\r
-    assert_equal(\r
-        bp.comment.parseString('@COMment about something').asList(),\r
-        ['comment', ' about something'])\r
-    assert_raises(ParseException, bp.comment.parseString,\r
-                  '@commentabout something')\r
-    assert_raises(ParseException, bp.comment.parseString,\r
-                  '@comment+about something')\r
-    assert_raises(ParseException, bp.comment.parseString,\r
-                  '@comment"about something')\r
-\r
-\r
-def test_preamble():\r
-    res = bp.preamble.parseString('@preamble{"about something"}')\r
-    assert_equal(res.asList(), ['preamble', 'about something'])\r
-    assert_equal(bp.preamble.parseString(\r
-        '@PREamble{{about something}}').asList(),\r
-        ['preamble', 'about something'])\r
-    assert_equal(bp.preamble.parseString("""@PREamble{\r
-        {about something}\r
-    }""").asList(),\r
-        ['preamble', 'about something'])\r
-\r
-\r
-def test_macro():\r
-    res = bp.macro.parseString('@string{ANAME = "about something"}')\r
-    assert_equal(res.asList(), ['string', 'aname', 'about something'])\r
-    assert_equal(\r
-        bp.macro.parseString('@string{aname = {about something}}').asList(),\r
-        ['string', 'aname', 'about something'])\r
-\r
-\r
-def test_entry():\r
-    txt = """@some_entry{akey, aname = "about something",\r
-    another={something else}}"""\r
-    res = bp.entry.parseString(txt)\r
-    assert_equal(res.asList(),\r
-                 ['some_entry', 'akey',\r
-                  ['aname', 'about something'], ['another', 'something else']])\r
-    # Case conversion\r
-    txt = """@SOME_ENTRY{akey, ANAME = "about something",\r
-    another={something else}}"""\r
-    res = bp.entry.parseString(txt)\r
-    assert_equal(res.asList(),\r
-                 ['some_entry', 'akey',\r
-                  ['aname', 'about something'], ['another', 'something else']])\r
-\r
-\r
-def test_bibfile():\r
-    txt = """@some_entry{akey, aname = "about something",\r
-    another={something else}}"""\r
-    res = bp.bibfile.parseString(txt)\r
-    assert_equal(res.asList(),\r
-                 [['some_entry', 'akey',\r
-                   ['aname', 'about something'],\r
-                   ['another', 'something else']]])\r
-\r
-\r
-def test_bib1():\r
-    # First pass whole bib-like tests\r
-    txt = """\r
-Some introductory text\r
-(implicit comment)\r
-\r
-    @ARTICLE{Brett2002marsbar,\r
-  author = {Matthew Brett and Jean-Luc Anton and Romain Valabregue and Jean-Baptise\r
-            Poline},\r
-  title = {{Region of interest analysis using an SPM toolbox}},\r
-  journal = {Neuroimage},\r
-  year = {2002},\r
-  volume = {16},\r
-  pages = {1140--1141},\r
-  number = {2}\r
-}\r
-\r
-@some_entry{akey, aname = "about something",\r
-another={something else}}\r
-"""\r
-    res = bp.bibfile.parseString(txt)\r
-    assert_equal(len(res), 3)\r
-    res2 = bp.parse_str(txt)\r
-    assert_equal(res.asList(), res2.asList())\r
-    res3 = [r.asList()[0] for r, start, end in bp.definitions.scanString(txt)]\r
-    assert_equal(res.asList(), res3)\r
-\r
-\r
-if __name__ == '__main__':\r
-    import nose\r
-    nose.main()\r
+""" Test for bibparse grammar """
+
+import unittest
+from pyparsing import ParseException
+from .btpyparse import Macro
+from . import btpyparse as bp
+
+class TestBibparse(unittest.TestCase):
+    def test_names(self):
+        # check various types of names
+        # All names can contains alphas, but not some special chars
+        bad_chars = '"#%\'(),={}'
+        for name_type, dig1f in ((bp.macro_def, False),
+                                 (bp.field_name, False),
+                                 (bp.entry_type, False),
+                                 (bp.cite_key, True)):
+            if dig1f: # can start with digit
+                self.assertEqual(name_type.parseString('2t')[0], '2t')
+            else:
+                self.assertRaises(ParseException, name_type.parseString, '2t')
+            # All of the names cannot contain some characters
+            for char in bad_chars:
+                self.assertRaises(ParseException, name_type.parseString, char)
+            # standard strings all OK
+            self.assertEqual(name_type.parseString('simple_test')[0], 'simple_test')
+        # Test macro ref
+        mr = bp.macro_ref
+        # can't start with digit
+        self.assertRaises(ParseException, mr.parseString, '2t')
+        for char in bad_chars:
+            self.assertRaises(ParseException, mr.parseString, char)
+        self.assertEqual(mr.parseString('simple_test')[0].name, 'simple_test')
+
+    def test_numbers(self):
+        self.assertEqual(bp.number.parseString('1066')[0], '1066')
+        self.assertEqual(bp.number.parseString('0')[0], '0')
+        self.assertRaises(ParseException, bp.number.parseString, '-4')
+        self.assertRaises(ParseException, bp.number.parseString, '+4')
+        self.assertRaises(ParseException, bp.number.parseString, '.4')
+        # something point something leaves a trailing .4 unmatched
+        self.assertEqual(bp.number.parseString('0.4')[0], '0')
+
+
+    def test_parse_string(self):
+        # test string building blocks
+        self.assertEqual(bp.chars_no_quotecurly.parseString('x')[0], 'x')
+        self.assertEqual(bp.chars_no_quotecurly.parseString("a string")[0], 'a string')
+        self.assertEqual(bp.chars_no_quotecurly.parseString('a "string')[0], 'a ')
+        self.assertEqual(bp.chars_no_curly.parseString('x')[0], 'x')
+        self.assertEqual(bp.chars_no_curly.parseString("a string")[0], 'a string')
+        self.assertEqual(bp.chars_no_curly.parseString('a {string')[0], 'a ')
+        self.assertEqual(bp.chars_no_curly.parseString('a }string')[0], 'a ')
+        # test more general strings together
+        for obj in (bp.curly_string, bp.string, bp.field_value):
+            self.assertEqual(obj.parseString('{}').asList(), [])
+            self.assertEqual(obj.parseString('{a "string}')[0], 'a "string')
+            self.assertEqual(obj.parseString('{a {nested} string}').asList(),
+                        ['a ', ['nested'], ' string'])
+            self.assertEqual(obj.parseString('{a {double {nested}} string}').asList(),
+                        ['a ', ['double ', ['nested']], ' string'])
+        for obj in (bp.quoted_string, bp.string, bp.field_value):
+            self.assertEqual(obj.parseString('""').asList(), [])
+            self.assertEqual(obj.parseString('"a string"')[0], 'a string')
+            self.assertEqual(obj.parseString('"a {nested} string"').asList(),
+                        ['a ', ['nested'], ' string'])
+            self.assertEqual(obj.parseString('"a {double {nested}} string"').asList(),
+                        ['a ', ['double ', ['nested']], ' string'])
+        # check macro def in string
+        self.assertEqual(bp.string.parseString('someascii')[0], Macro('someascii'))
+        self.assertRaises(ParseException, bp.string.parseString, '%#= validstring')
+        # check number in string
+        self.assertEqual(bp.string.parseString('1994')[0], '1994')
+
+
+    def test_parse_field(self):
+        # test field value - hashes included
+        fv = bp.field_value
+        # Macro
+        self.assertEqual(fv.parseString('aname')[0], Macro('aname'))
+        self.assertEqual(fv.parseString('ANAME')[0], Macro('aname'))
+        # String and macro
+        self.assertEqual(fv.parseString('aname # "some string"').asList(),
+                     [Macro('aname'), 'some string'])
+        # Nested string
+        self.assertEqual(fv.parseString('aname # {some {string}}').asList(),
+                     [Macro('aname'), 'some ', ['string']])
+        # String and number
+        self.assertEqual(fv.parseString('"a string" # 1994').asList(),
+                     ['a string', '1994'])
+        # String and number and macro
+        self.assertEqual(fv.parseString('"a string" # 1994 # a_macro').asList(),
+                     ['a string', '1994', Macro('a_macro')])
+
+
+    def test_comments(self):
+        res = bp.comment.parseString('@Comment{about something}')
+        self.assertEqual(res.asList(), ['comment', '{about something}'])
+        self.assertEqual(
+            bp.comment.parseString('@COMMENT{about something').asList(),
+            ['comment', '{about something'])
+        self.assertEqual(
+            bp.comment.parseString('@comment(about something').asList(),
+            ['comment', '(about something'])
+        self.assertEqual(
+            bp.comment.parseString('@COMment about something').asList(),
+            ['comment', ' about something'])
+        self.assertRaises(ParseException, bp.comment.parseString,
+                      '@commentabout something')
+        self.assertRaises(ParseException, bp.comment.parseString,
+                      '@comment+about something')
+        self.assertRaises(ParseException, bp.comment.parseString,
+                      '@comment"about something')
+
+
+    def test_preamble(self):
+        res = bp.preamble.parseString('@preamble{"about something"}')
+        self.assertEqual(res.asList(), ['preamble', 'about something'])
+        self.assertEqual(bp.preamble.parseString(
+            '@PREamble{{about something}}').asList(),
+            ['preamble', 'about something'])
+        self.assertEqual(bp.preamble.parseString("""@PREamble{
+            {about something}
+        }""").asList(),
+            ['preamble', 'about something'])
+
+
+    def test_macro(self):
+        res = bp.macro.parseString('@string{ANAME = "about something"}')
+        self.assertEqual(res.asList(), ['string', 'aname', 'about something'])
+        self.assertEqual(
+            bp.macro.parseString('@string{aname = {about something}}').asList(),
+            ['string', 'aname', 'about something'])
+
+
+    def test_entry(self):
+        txt = """@some_entry{akey, aname = "about something",
+        another={something else}}"""
+        res = bp.entry.parseString(txt)
+        self.assertEqual(res.asList(),
+                     ['some_entry', 'akey',
+                      ['aname', 'about something'], ['another', 'something else']])
+        # Case conversion
+        txt = """@SOME_ENTRY{akey, ANAME = "about something",
+        another={something else}}"""
+        res = bp.entry.parseString(txt)
+        self.assertEqual(res.asList(),
+                     ['some_entry', 'akey',
+                      ['aname', 'about something'], ['another', 'something else']])
+
+
+    def test_bibfile(self):
+        txt = """@some_entry{akey, aname = "about something",
+        another={something else}}"""
+        res = bp.bibfile.parseString(txt)
+        self.assertEqual(res.asList(),
+                     [['some_entry', 'akey',
+                       ['aname', 'about something'],
+                       ['another', 'something else']]])
+
+
+    def test_bib1(self):
+        # First pass whole bib-like tests
+        txt = """
+    Some introductory text
+    (implicit comment)
+
+        @ARTICLE{Brett2002marsbar,
+      author = {Matthew Brett and Jean-Luc Anton and Romain Valabregue and Jean-Baptise
+                Poline},
+      title = {{Region of interest analysis using an SPM toolbox}},
+      journal = {Neuroimage},
+      year = {2002},
+      volume = {16},
+      pages = {1140--1141},
+      number = {2}
+    }
+
+    @some_entry{akey, aname = "about something",
+    another={something else}}
+    """
+        res = bp.bibfile.parseString(txt)
+        self.assertEqual(len(res), 3)
+        res2 = bp.parse_str(txt)
+        self.assertEqual(res.asList(), res2.asList())
+        res3 = [r.asList()[0] for r, start, end in bp.definitions.scanString(txt)]
+        self.assertEqual(res.asList(), res3)
+
+
+if __name__ == '__main__':
+    unittest.main()
index 10783decf4119751d292a91741f0ad479daf86e4..dc8860813c629695468f7f0bebb0385dfa6a9e95 100644 (file)
@@ -14,7 +14,7 @@ linkBody.addParseAction(lambda toks: ' '.join(toks[0].strip().split()))
 link = linkOpenTag + linkBody("body") + linkCloseTag.suppress()\r
 \r
 # Go get some HTML with some links in it.\r
-with closing(urllib.request.urlopen("http://www.yahoo.com")) as serverListPage:\r
+with closing(urllib.request.urlopen("https://www.yahoo.com/")) as serverListPage:\r
     htmlText = serverListPage.read().decode("UTF-8")\r
 \r
 # scanString is a generator that loops through the input htmlText, and for each\r
@@ -23,11 +23,8 @@ with closing(urllib.request.urlopen("http://www.yahoo.com")) as serverListPage:
 for toks,strt,end in link.scanString(htmlText):\r
     print(toks.asList())\r
 \r
-# Create dictionary from list comprehension, assembled from each pair of tokens returned \r
+# Create dictionary from list comprehension, assembled from each pair of tokens returned\r
 # from a matched URL.\r
-pprint.pprint( \r
+pprint.pprint(\r
     {toks.body: toks.href for toks,strt,end in link.scanString(htmlText)}\r
     )\r
-\r
-\r
-\r
index 7d6a1b5e619f470c461ca86fe912388d85220269..a21b2abf40d94f3e4baaca871062a1a99fae9a7f 100644 (file)
@@ -1,7 +1,6 @@
 # URL extractor\r
 # Copyright 2004, Paul McGuire\r
-from pyparsing import Literal,Suppress,CharsNotIn,CaselessLiteral,\\r
-        Word,dblQuotedString,alphanums,SkipTo,makeHTMLTags\r
+from pyparsing import SkipTo, makeHTMLTags\r
 import urllib.request, urllib.parse, urllib.error\r
 import pprint\r
 \r
@@ -15,7 +14,7 @@ linkOpenTag,linkCloseTag = makeHTMLTags("a")
 link = linkOpenTag + SkipTo(linkCloseTag)("body") + linkCloseTag.suppress()\r
 \r
 # Go get some HTML with some links in it.\r
-serverListPage = urllib.request.urlopen( "http://www.google.com" )\r
+serverListPage = urllib.request.urlopen( "https://www.google.com/" )\r
 htmlText = serverListPage.read()\r
 serverListPage.close()\r
 \r
@@ -25,11 +24,8 @@ serverListPage.close()
 for toks,strt,end in link.scanString(htmlText):\r
     print(toks.startA.href,"->",toks.body)\r
 \r
-# Create dictionary from list comprehension, assembled from each pair of tokens returned \r
+# Create dictionary from list comprehension, assembled from each pair of tokens returned\r
 # from a matched URL.\r
-pprint.pprint( \r
+pprint.pprint(\r
     {  toks.body:toks.startA.href for toks,strt,end in link.scanString(htmlText)  }\r
     )\r
-\r
-\r
-\r
index 05650dfa7fa9ebb15f65f80da64ad972b6f5bb19..f39883f813cc8694ea12f1c709ec5a200b5557ed 100644 (file)
-#\r
-# verilogParse.py\r
-#\r
-# an example of using the pyparsing module to be able to process Verilog files\r
-# uses BNF defined at http://www.verilog.com/VerilogBNF.html\r
-#\r
-#    Copyright (c) 2004-2011 Paul T. McGuire.  All rights reserved.\r
-#\r
-# Permission is hereby granted, free of charge, to any person obtaining\r
-# a copy of this software and associated documentation files (the\r
-# "Software"), to deal in the Software without restriction, including\r
-# without limitation the rights to use, copy, modify, merge, publish,\r
-# distribute, sublicense, and/or sell copies of the Software, and to\r
-# permit persons to whom the Software is furnished to do so, subject to\r
-# the following conditions:\r
-#\r
-# The above copyright notice and this permission notice shall be\r
-# included in all copies or substantial portions of the Software.\r
-#\r
-# If you find this software to be useful, please make a donation to one\r
-# of the following charities:\r
-# - the Red Cross (http://www.redcross.org)\r
-# - Hospice Austin (http://www.hospiceaustin.org)\r
-#\r
-#    DISCLAIMER:\r
-#    THIS SOFTWARE IS PROVIDED BY PAUL T. McGUIRE ``AS IS'' AND ANY EXPRESS OR\r
-#    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
-#    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO\r
-#    EVENT SHALL PAUL T. McGUIRE OR CO-CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
-#    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
-#    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OFUSE,\r
-#    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
-#    OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
-#    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
-#    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
-#\r
-#    For questions or inquiries regarding this license, or commercial use of\r
-#    this software, contact the author via e-mail: ptmcg@users.sourceforge.net\r
-#\r
-# Todo:\r
-#  - add pre-process pass to implement compilerDirectives (ifdef, include, etc.)\r
-#\r
-# Revision History:\r
-#\r
-#   1.0   - Initial release\r
-#   1.0.1 - Fixed grammar errors:\r
-#           . real declaration was incorrect\r
-#           . tolerant of '=>' for '*>' operator\r
-#           . tolerant of '?' as hex character\r
-#           . proper handling of mintypmax_expr within path delays\r
-#   1.0.2 - Performance tuning (requires pyparsing 1.3)\r
-#   1.0.3 - Performance updates, using Regex (requires pyparsing 1.4)\r
-#   1.0.4 - Performance updates, enable packrat parsing (requires pyparsing 1.4.2)\r
-#   1.0.5 - Converted keyword Literals to Keywords, added more use of Group to\r
-#           group parsed results tokens\r
-#   1.0.6 - Added support for module header with no ports list (thanks, Thomas Dejanovic!)\r
-#   1.0.7 - Fixed erroneous '<<' Forward definition in timCheckCond, omitting ()'s\r
-#   1.0.8 - Re-released under MIT license\r
-#   1.0.9 - Enhanced udpInstance to handle identifiers with leading '\' and subscripting\r
-#   1.0.10 - Fixed change added in 1.0.9 to work for all identifiers, not just those used\r
-#           for udpInstance.\r
-#   1.0.11 - Fixed bug in inst_args, content alternatives were reversed\r
-#\r
-import pdb\r
-import time\r
-import pprint\r
-import sys\r
-\r
-__version__ = "1.0.11"\r
-\r
-from pyparsing import Literal, CaselessLiteral, Keyword, Word, OneOrMore, ZeroOrMore, \\r
-        Forward, NotAny, delimitedList, Group, Optional, Combine, alphas, nums, restOfLine, cStyleComment, \\r
-        alphanums, printables, dblQuotedString, empty, ParseException, ParseResults, MatchFirst, oneOf, GoToColumn, \\r
-        ParseResults,StringEnd, FollowedBy, ParserElement, And, Regex, cppStyleComment#,__version__\r
-import pyparsing\r
-usePackrat = False\r
-usePsyco = False\r
-\r
-packratOn = False\r
-psycoOn = False\r
-\r
-if usePackrat:\r
-    try:\r
-        ParserElement.enablePackrat()\r
-    except:\r
-        pass\r
-    else:\r
-        packratOn = True\r
-\r
-# comment out this section to disable psyco function compilation\r
-if usePsyco:\r
-    try:\r
-        import psyco\r
-        psyco.full()\r
-    except:\r
-        print("failed to import psyco Python optimizer")\r
-    else:\r
-        psycoOn = True\r
-\r
-\r
-def dumpTokens(s,l,t):\r
-    import pprint\r
-    pprint.pprint( t.asList() )\r
-\r
-verilogbnf = None\r
-def Verilog_BNF():\r
-    global verilogbnf\r
-\r
-    if verilogbnf is None:\r
-\r
-        # compiler directives\r
-        compilerDirective = Combine( "`" + \\r
-            oneOf("define undef ifdef else endif default_nettype "\r
-                  "include resetall timescale unconnected_drive "\r
-                  "nounconnected_drive celldefine endcelldefine") + \\r
-            restOfLine ).setName("compilerDirective")\r
-\r
-        # primitives\r
-        SEMI,COLON,LPAR,RPAR,LBRACE,RBRACE,LBRACK,RBRACK,DOT,COMMA,EQ = map(Literal,";:(){}[].,=")\r
-\r
-        identLead = alphas+"$_"\r
-        identBody = alphanums+"$_"\r
-        identifier1 = Regex( r"\.?["+identLead+"]["+identBody+r"]*(\.["+identLead+"]["+identBody+"]*)*"\r
-                            ).setName("baseIdent")\r
-        identifier2 = Regex(r"\\\S+").setParseAction(lambda t:t[0][1:]).setName("escapedIdent")#.setDebug()\r
-        identifier = identifier1 | identifier2\r
-        assert(identifier2 == r'\abc')\r
-        \r
-        hexnums = nums + "abcdefABCDEF" + "_?"\r
-        base = Regex("'[bBoOdDhH]").setName("base")\r
-        basedNumber = Combine( Optional( Word(nums + "_") ) + base + Word(hexnums+"xXzZ"),\r
-                               joinString=" ", adjacent=False ).setName("basedNumber")\r
-        #~ number = ( basedNumber | Combine( Word( "+-"+spacedNums, spacedNums ) +\r
-                           #~ Optional( DOT + Optional( Word( spacedNums ) ) ) +\r
-                           #~ Optional( e + Word( "+-"+spacedNums, spacedNums ) ) ).setName("numeric") )\r
-        number = ( basedNumber | \\r
-                   Regex(r"[+-]?[0-9_]+(\.[0-9_]*)?([Ee][+-]?[0-9_]+)?") \\r
-                  ).setName("numeric")\r
-        #~ decnums = nums + "_"\r
-        #~ octnums = "01234567" + "_"\r
-        expr = Forward().setName("expr")\r
-        concat = Group( LBRACE + delimitedList( expr ) + RBRACE )\r
-        multiConcat = Group("{" + expr + concat + "}").setName("multiConcat")\r
-        funcCall = Group(identifier + LPAR + Optional( delimitedList( expr ) ) + RPAR).setName("funcCall")\r
-\r
-        subscrRef = Group(LBRACK + delimitedList( expr, COLON ) + RBRACK)\r
-        subscrIdentifier = Group( identifier + Optional( subscrRef ) )\r
-        #~ scalarConst = "0" | (( FollowedBy('1') + oneOf("1'b0 1'b1 1'bx 1'bX 1'B0 1'B1 1'Bx 1'BX 1") ))\r
-        scalarConst = Regex("0|1('[Bb][01xX])?")\r
-        mintypmaxExpr = Group( expr + COLON + expr + COLON + expr ).setName("mintypmax")\r
-        primary = (\r
-                  number |\r
-                  (LPAR + mintypmaxExpr + RPAR ) |\r
-                  ( LPAR + Group(expr) + RPAR ).setName("nestedExpr") |\r
-                  multiConcat |\r
-                  concat |\r
-                  dblQuotedString |\r
-                  funcCall |\r
-                  subscrIdentifier\r
-                  )\r
-\r
-        unop  = oneOf( "+  -  !  ~  &  ~&  |  ^|  ^  ~^" ).setName("unop")\r
-        binop = oneOf( "+  -  *  /  %  ==  !=  ===  !==  &&  "\r
-                       "||  <  <=  >  >=  &  |  ^  ^~  >>  << ** <<< >>>" ).setName("binop")\r
-\r
-        expr << (\r
-                ( unop + expr ) |  # must be first!\r
-                ( primary + "?" + expr + COLON + expr ) |\r
-                ( primary + Optional( binop + expr ) )\r
-                )\r
-\r
-        lvalue = subscrIdentifier | concat\r
-\r
-        # keywords\r
-        if_        = Keyword("if")\r
-        else_      = Keyword("else")\r
-        edge       = Keyword("edge")\r
-        posedge    = Keyword("posedge")\r
-        negedge    = Keyword("negedge")\r
-        specify    = Keyword("specify")\r
-        endspecify = Keyword("endspecify")\r
-        fork       = Keyword("fork")\r
-        join       = Keyword("join")\r
-        begin      = Keyword("begin")\r
-        end        = Keyword("end")\r
-        default    = Keyword("default")\r
-        forever    = Keyword("forever")\r
-        repeat     = Keyword("repeat")\r
-        while_     = Keyword("while")\r
-        for_       = Keyword("for")\r
-        case       = oneOf( "case casez casex" )\r
-        endcase    = Keyword("endcase")\r
-        wait       = Keyword("wait")\r
-        disable    = Keyword("disable")\r
-        deassign   = Keyword("deassign")\r
-        force      = Keyword("force")\r
-        release    = Keyword("release")\r
-        assign     = Keyword("assign")\r
-\r
-        eventExpr = Forward()\r
-        eventTerm = ( posedge + expr ) | ( negedge + expr ) | expr | ( LPAR + eventExpr + RPAR )\r
-        eventExpr << (\r
-            Group( delimitedList( eventTerm, Keyword("or") ) )\r
-            )\r
-        eventControl = Group( "@" + ( ( LPAR + eventExpr + RPAR ) | identifier | "*" ) ).setName("eventCtrl")\r
-\r
-        delayArg = ( number |\r
-                     Word(alphanums+"$_") | #identifier |\r
-                     ( LPAR + Group( delimitedList( mintypmaxExpr | expr ) ) + RPAR )\r
-                   ).setName("delayArg")#.setDebug()\r
-        delay = Group( "#" + delayArg ).setName("delay")#.setDebug()\r
-        delayOrEventControl = delay | eventControl\r
-\r
-        assgnmt   = Group( lvalue + EQ + Optional( delayOrEventControl ) + expr ).setName( "assgnmt" )\r
-        nbAssgnmt = Group(( lvalue + "<=" + Optional( delay ) + expr ) |\r
-                     ( lvalue + "<=" + Optional( eventControl ) + expr )).setName( "nbassgnmt" )\r
-\r
-        range = LBRACK + expr + COLON + expr + RBRACK\r
-\r
-        paramAssgnmt = Group( identifier + EQ + expr ).setName("paramAssgnmt")\r
-        parameterDecl = Group( "parameter" + Optional( range ) + delimitedList( paramAssgnmt ) + SEMI).setName("paramDecl")\r
-\r
-        inputDecl = Group( "input" + Optional( range ) + delimitedList( identifier ) + SEMI )\r
-        outputDecl = Group( "output" + Optional( range ) + delimitedList( identifier ) + SEMI )\r
-        inoutDecl = Group( "inout" + Optional( range ) + delimitedList( identifier ) + SEMI )\r
-\r
-        regIdentifier = Group( identifier + Optional( LBRACK + expr + COLON + expr + RBRACK ) )\r
-        regDecl = Group( "reg" + Optional("signed") + Optional( range ) + delimitedList( regIdentifier ) + SEMI ).setName("regDecl")\r
-        timeDecl = Group( "time" + delimitedList( regIdentifier ) + SEMI )\r
-        integerDecl = Group( "integer" + delimitedList( regIdentifier ) + SEMI )\r
-\r
-        strength0 = oneOf("supply0  strong0  pull0  weak0  highz0")\r
-        strength1 = oneOf("supply1  strong1  pull1  weak1  highz1")\r
-        driveStrength = Group( LPAR + ( ( strength0 + COMMA + strength1 ) |\r
-                                       ( strength1 + COMMA + strength0 ) ) + RPAR ).setName("driveStrength")\r
-        nettype = oneOf("wire  tri  tri1  supply0  wand  triand  tri0  supply1  wor  trior  trireg")\r
-        expandRange = Optional( oneOf("scalared vectored") ) + range\r
-        realDecl = Group( "real" + delimitedList( identifier ) + SEMI )\r
-\r
-        eventDecl = Group( "event" + delimitedList( identifier ) + SEMI )\r
-\r
-        blockDecl = (\r
-            parameterDecl |\r
-            regDecl |\r
-            integerDecl |\r
-            realDecl |\r
-            timeDecl |\r
-            eventDecl\r
-            )\r
-\r
-        stmt = Forward().setName("stmt")#.setDebug()\r
-        stmtOrNull = stmt | SEMI\r
-        caseItem = ( delimitedList( expr ) + COLON + stmtOrNull ) | \\r
-                   ( default + Optional(":") + stmtOrNull )\r
-        stmt << Group(\r
-            ( begin + Group( ZeroOrMore( stmt ) ) + end ).setName("begin-end") |\r
-            ( if_ + Group(LPAR + expr + RPAR) + stmtOrNull + Optional( else_ + stmtOrNull ) ).setName("if") |\r
-            ( delayOrEventControl + stmtOrNull ) |\r
-            ( case + LPAR + expr + RPAR + OneOrMore( caseItem ) + endcase ) |\r
-            ( forever + stmt ) |\r
-            ( repeat + LPAR + expr + RPAR + stmt ) |\r
-            ( while_ + LPAR + expr + RPAR + stmt ) |\r
-            ( for_ + LPAR + assgnmt + SEMI + Group( expr ) + SEMI + assgnmt + RPAR + stmt ) |\r
-            ( fork + ZeroOrMore( stmt ) + join ) |\r
-            ( fork + COLON + identifier + ZeroOrMore( blockDecl ) + ZeroOrMore( stmt ) + end ) |\r
-            ( wait + LPAR + expr + RPAR + stmtOrNull ) |\r
-            ( "->" + identifier + SEMI ) |\r
-            ( disable + identifier + SEMI ) |\r
-            ( assign + assgnmt + SEMI ) |\r
-            ( deassign + lvalue + SEMI ) |\r
-            ( force + assgnmt + SEMI ) |\r
-            ( release + lvalue + SEMI ) |\r
-            ( begin + COLON + identifier + ZeroOrMore( blockDecl ) + ZeroOrMore( stmt ) + end ).setName("begin:label-end") |\r
-            # these  *have* to go at the end of the list!!!\r
-            ( assgnmt + SEMI ) |\r
-            ( nbAssgnmt + SEMI ) |\r
-            ( Combine( Optional("$") + identifier ) + Optional( LPAR + delimitedList(expr|empty) + RPAR ) + SEMI )\r
-            ).setName("stmtBody")\r
-        """\r
-        x::=<blocking_assignment> ;\r
-        x||= <non_blocking_assignment> ;\r
-        x||= if ( <expression> ) <statement_or_null>\r
-        x||= if ( <expression> ) <statement_or_null> else <statement_or_null>\r
-        x||= case ( <expression> ) <case_item>+ endcase\r
-        x||= casez ( <expression> ) <case_item>+ endcase\r
-        x||= casex ( <expression> ) <case_item>+ endcase\r
-        x||= forever <statement>\r
-        x||= repeat ( <expression> ) <statement>\r
-        x||= while ( <expression> ) <statement>\r
-        x||= for ( <assignment> ; <expression> ; <assignment> ) <statement>\r
-        x||= <delay_or_event_control> <statement_or_null>\r
-        x||= wait ( <expression> ) <statement_or_null>\r
-        x||= -> <name_of_event> ;\r
-        x||= <seq_block>\r
-        x||= <par_block>\r
-        x||= <task_enable>\r
-        x||= <system_task_enable>\r
-        x||= disable <name_of_task> ;\r
-        x||= disable <name_of_block> ;\r
-        x||= assign <assignment> ;\r
-        x||= deassign <lvalue> ;\r
-        x||= force <assignment> ;\r
-        x||= release <lvalue> ;\r
-        """\r
-        alwaysStmt = Group( "always" + Optional(eventControl) + stmt ).setName("alwaysStmt")\r
-        initialStmt = Group( "initial" + stmt ).setName("initialStmt")\r
-\r
-        chargeStrength = Group( LPAR + oneOf( "small medium large" ) + RPAR ).setName("chargeStrength")\r
-\r
-        continuousAssign = Group(\r
-            assign + Optional( driveStrength ) + Optional( delay ) + delimitedList( assgnmt ) + SEMI\r
-            ).setName("continuousAssign")\r
-\r
-\r
-        tfDecl = (\r
-            parameterDecl |\r
-            inputDecl |\r
-            outputDecl |\r
-            inoutDecl |\r
-            regDecl |\r
-            timeDecl |\r
-            integerDecl |\r
-            realDecl\r
-            )\r
-\r
-        functionDecl = Group(\r
-            "function" + Optional( range | "integer" | "real" ) + identifier + SEMI +\r
-            Group( OneOrMore( tfDecl ) ) +\r
-            Group( ZeroOrMore( stmt ) ) +\r
-            "endfunction"\r
-            )\r
-\r
-        inputOutput = oneOf("input output")\r
-        netDecl1Arg = ( nettype +\r
-            Optional( expandRange ) +\r
-            Optional( delay ) +\r
-            Group( delimitedList( ~inputOutput + identifier ) ) )\r
-        netDecl2Arg = ( "trireg" +\r
-            Optional( chargeStrength ) +\r
-            Optional( expandRange ) +\r
-            Optional( delay ) +\r
-            Group( delimitedList( ~inputOutput + identifier ) ) )\r
-        netDecl3Arg = ( nettype +\r
-            Optional( driveStrength ) +\r
-            Optional( expandRange ) +\r
-            Optional( delay ) +\r
-            Group( delimitedList( assgnmt ) ) )\r
-        netDecl1 = Group(netDecl1Arg + SEMI).setName("netDecl1")\r
-        netDecl2 = Group(netDecl2Arg + SEMI).setName("netDecl2")\r
-        netDecl3 = Group(netDecl3Arg + SEMI).setName("netDecl3")\r
-\r
-        gateType = oneOf("and  nand  or  nor xor  xnor buf  bufif0 bufif1 "\r
-                         "not  notif0 notif1  pulldown pullup nmos  rnmos "\r
-                         "pmos rpmos cmos rcmos   tran rtran  tranif0  "\r
-                         "rtranif0  tranif1 rtranif1"  )\r
-        gateInstance = Optional( Group( identifier + Optional( range ) ) ) + \\r
-                        LPAR + Group( delimitedList( expr ) ) + RPAR\r
-        gateDecl = Group( gateType +\r
-            Optional( driveStrength ) +\r
-            Optional( delay ) +\r
-            delimitedList( gateInstance) +\r
-            SEMI )\r
-\r
-        udpInstance = Group( Group( identifier + Optional(range | subscrRef) ) +\r
-            LPAR + Group( delimitedList( expr ) ) + RPAR )\r
-        udpInstantiation = Group( identifier -\r
-            Optional( driveStrength ) +\r
-            Optional( delay ) +\r
-            delimitedList( udpInstance ) +\r
-            SEMI ).setName("udpInstantiation")\r
-\r
-        parameterValueAssignment = Group( Literal("#") + LPAR + Group( delimitedList( expr ) ) + RPAR )\r
-        namedPortConnection = Group( DOT + identifier + LPAR + expr + RPAR ).setName("namedPortConnection")#.setDebug()\r
-        assert(r'.\abc (abc )' == namedPortConnection)\r
-        modulePortConnection = expr | empty\r
-        #~ moduleInstance = Group( Group ( identifier + Optional(range) ) +\r
-            #~ ( delimitedList( modulePortConnection ) |\r
-              #~ delimitedList( namedPortConnection ) ) )\r
-        inst_args = Group( LPAR + (delimitedList( namedPortConnection ) |\r
-                    delimitedList( modulePortConnection )) + RPAR).setName("inst_args")\r
-        moduleInstance = Group( Group ( identifier + Optional(range) ) + inst_args ).setName("moduleInstance")#.setDebug()\r
-\r
-        moduleInstantiation = Group( identifier +\r
-            Optional( parameterValueAssignment ) +\r
-            delimitedList( moduleInstance ).setName("moduleInstanceList") +\r
-            SEMI ).setName("moduleInstantiation")\r
-\r
-        parameterOverride = Group( "defparam" + delimitedList( paramAssgnmt ) + SEMI )\r
-        task = Group( "task" + identifier + SEMI +\r
-            ZeroOrMore( tfDecl ) +\r
-            stmtOrNull +\r
-            "endtask" )\r
-\r
-        specparamDecl = Group( "specparam" + delimitedList( paramAssgnmt ) + SEMI )\r
-\r
-        pathDescr1 = Group( LPAR + subscrIdentifier + "=>" + subscrIdentifier + RPAR )\r
-        pathDescr2 = Group( LPAR + Group( delimitedList( subscrIdentifier ) ) + "*>" +\r
-                                  Group( delimitedList( subscrIdentifier ) ) + RPAR )\r
-        pathDescr3 = Group( LPAR + Group( delimitedList( subscrIdentifier ) ) + "=>" +\r
-                                  Group( delimitedList( subscrIdentifier ) ) + RPAR )\r
-        pathDelayValue = Group( ( LPAR + Group( delimitedList( mintypmaxExpr | expr ) ) + RPAR ) |\r
-                                 mintypmaxExpr |\r
-                                 expr )\r
-        pathDecl = Group( ( pathDescr1 | pathDescr2 | pathDescr3 ) + EQ + pathDelayValue + SEMI ).setName("pathDecl")\r
-\r
-        portConditionExpr = Forward()\r
-        portConditionTerm = Optional(unop) + subscrIdentifier\r
-        portConditionExpr << portConditionTerm + Optional( binop + portConditionExpr )\r
-        polarityOp = oneOf("+ -")\r
-        levelSensitivePathDecl1 = Group(\r
-            if_ + Group(LPAR + portConditionExpr + RPAR) +\r
-            subscrIdentifier + Optional( polarityOp ) + "=>" + subscrIdentifier + EQ +\r
-            pathDelayValue +\r
-            SEMI )\r
-        levelSensitivePathDecl2 = Group(\r
-            if_ + Group(LPAR + portConditionExpr + RPAR) +\r
-            LPAR + Group( delimitedList( subscrIdentifier ) ) + Optional( polarityOp ) + "*>" +\r
-                Group( delimitedList( subscrIdentifier ) ) + RPAR + EQ +\r
-            pathDelayValue +\r
-            SEMI )\r
-        levelSensitivePathDecl = levelSensitivePathDecl1 | levelSensitivePathDecl2\r
-\r
-        edgeIdentifier = posedge | negedge\r
-        edgeSensitivePathDecl1 = Group(\r
-            Optional( if_ + Group(LPAR + expr + RPAR) ) +\r
-            LPAR + Optional( edgeIdentifier ) +\r
-            subscrIdentifier + "=>" +\r
-            LPAR + subscrIdentifier + Optional( polarityOp ) + COLON + expr + RPAR + RPAR +\r
-            EQ +\r
-            pathDelayValue +\r
-            SEMI )\r
-        edgeSensitivePathDecl2 = Group(\r
-            Optional( if_ + Group(LPAR + expr + RPAR) ) +\r
-            LPAR + Optional( edgeIdentifier ) +\r
-            subscrIdentifier + "*>" +\r
-            LPAR + delimitedList( subscrIdentifier ) + Optional( polarityOp ) + COLON + expr + RPAR + RPAR +\r
-            EQ +\r
-            pathDelayValue +\r
-            SEMI )\r
-        edgeSensitivePathDecl = edgeSensitivePathDecl1 | edgeSensitivePathDecl2\r
-\r
-        edgeDescr = oneOf("01 10 0x x1 1x x0").setName("edgeDescr")\r
-\r
-        timCheckEventControl = Group( posedge | negedge | (edge + LBRACK + delimitedList( edgeDescr ) + RBRACK ))\r
-        timCheckCond = Forward()\r
-        timCondBinop = oneOf("== === != !==")\r
-        timCheckCondTerm = ( expr + timCondBinop + scalarConst ) | ( Optional("~") + expr )\r
-        timCheckCond << ( ( LPAR + timCheckCond + RPAR ) | timCheckCondTerm )\r
-        timCheckEvent = Group( Optional( timCheckEventControl ) +\r
-                                subscrIdentifier +\r
-                                Optional( "&&&" + timCheckCond ) )\r
-        timCheckLimit = expr\r
-        controlledTimingCheckEvent = Group( timCheckEventControl + subscrIdentifier +\r
-                                            Optional( "&&&" + timCheckCond ) )\r
-        notifyRegister = identifier\r
-\r
-        systemTimingCheck1 = Group( "$setup" +\r
-            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck2 = Group( "$hold" +\r
-            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck3 = Group( "$period" +\r
-            LPAR + controlledTimingCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck4 = Group( "$width" +\r
-            LPAR + controlledTimingCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + expr + COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck5 = Group( "$skew" +\r
-            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck6 = Group( "$recovery" +\r
-            LPAR + controlledTimingCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck7 = Group( "$setuphold" +\r
-            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit + COMMA + timCheckLimit +\r
-            Optional( COMMA + notifyRegister ) + RPAR +\r
-            SEMI )\r
-        systemTimingCheck = (FollowedBy('$') + ( systemTimingCheck1 | systemTimingCheck2 | systemTimingCheck3 |\r
-            systemTimingCheck4 | systemTimingCheck5 | systemTimingCheck6 | systemTimingCheck7 )).setName("systemTimingCheck")\r
-        sdpd = if_ + Group(LPAR + expr + RPAR) + \\r
-            ( pathDescr1 | pathDescr2 ) + EQ + pathDelayValue + SEMI\r
-\r
-        specifyItem = ~Keyword("endspecify") +(\r
-            specparamDecl |\r
-            pathDecl |\r
-            levelSensitivePathDecl |\r
-            edgeSensitivePathDecl |\r
-            systemTimingCheck |\r
-            sdpd\r
-            )\r
-        """\r
-        x::= <specparam_declaration>\r
-        x||= <path_declaration>\r
-        x||= <level_sensitive_path_declaration>\r
-        x||= <edge_sensitive_path_declaration>\r
-        x||= <system_timing_check>\r
-        x||= <sdpd>\r
-        """\r
-        specifyBlock = Group( "specify" + ZeroOrMore( specifyItem ) + "endspecify" ).setName("specifyBlock")\r
-\r
-        moduleItem = ~Keyword("endmodule") + (\r
-            parameterDecl |\r
-            inputDecl |\r
-            outputDecl |\r
-            inoutDecl |\r
-            regDecl |\r
-            netDecl3 |\r
-            netDecl1 |\r
-            netDecl2 |\r
-            timeDecl |\r
-            integerDecl |\r
-            realDecl |\r
-            eventDecl |\r
-            gateDecl |\r
-            parameterOverride |\r
-            continuousAssign |\r
-            specifyBlock |\r
-            initialStmt |\r
-            alwaysStmt |\r
-            task |\r
-            functionDecl |\r
-            # these have to be at the end - they start with identifiers\r
-            moduleInstantiation |\r
-            udpInstantiation\r
-            )\r
-        """  All possible moduleItems, from Verilog grammar spec\r
-        x::= <parameter_declaration>\r
-        x||= <input_declaration>\r
-        x||= <output_declaration>\r
-        x||= <inout_declaration>\r
-        ?||= <net_declaration>  (spec does not seem consistent for this item)\r
-        x||= <reg_declaration>\r
-        x||= <time_declaration>\r
-        x||= <integer_declaration>\r
-        x||= <real_declaration>\r
-        x||= <event_declaration>\r
-        x||= <gate_declaration>\r
-        x||= <UDP_instantiation>\r
-        x||= <module_instantiation>\r
-        x||= <parameter_override>\r
-        x||= <continuous_assign>\r
-        x||= <specify_block>\r
-        x||= <initial_statement>\r
-        x||= <always_statement>\r
-        x||= <task>\r
-        x||= <function>\r
-        """\r
-        portRef = subscrIdentifier\r
-        portExpr = portRef | Group( LBRACE + delimitedList( portRef ) + RBRACE )\r
-        port = portExpr | Group( ( DOT + identifier + LPAR + portExpr + RPAR ) )\r
-\r
-        moduleHdr = Group ( oneOf("module macromodule") + identifier +\r
-                 Optional( LPAR + Group( Optional( delimitedList( \r
-                                    Group(oneOf("input output") + \r
-                                            (netDecl1Arg | netDecl2Arg | netDecl3Arg) ) |\r
-                                    port ) ) ) + \r
-                            RPAR ) + SEMI ).setName("moduleHdr")\r
-\r
-        module = Group(  moduleHdr +\r
-                 Group( ZeroOrMore( moduleItem ) ) +\r
-                 "endmodule" ).setName("module")#.setDebug()\r
-\r
-        udpDecl = outputDecl | inputDecl | regDecl\r
-        #~ udpInitVal = oneOf("1'b0 1'b1 1'bx 1'bX 1'B0 1'B1 1'Bx 1'BX 1 0 x X")\r
-        udpInitVal = (Regex("1'[bB][01xX]") | Regex("[01xX]")).setName("udpInitVal")\r
-        udpInitialStmt = Group( "initial" +\r
-            identifier + EQ + udpInitVal + SEMI ).setName("udpInitialStmt")\r
-\r
-        levelSymbol = oneOf("0   1   x   X   ?   b   B")\r
-        levelInputList = Group( OneOrMore( levelSymbol ).setName("levelInpList") )\r
-        outputSymbol = oneOf("0   1   x   X")\r
-        combEntry = Group( levelInputList + COLON + outputSymbol + SEMI )\r
-        edgeSymbol = oneOf("r   R   f   F   p   P   n   N   *")\r
-        edge = Group( LPAR + levelSymbol + levelSymbol + RPAR ) | \\r
-               Group( edgeSymbol )\r
-        edgeInputList = Group( ZeroOrMore( levelSymbol ) + edge + ZeroOrMore( levelSymbol ) )\r
-        inputList = levelInputList | edgeInputList\r
-        seqEntry = Group( inputList + COLON + levelSymbol + COLON + ( outputSymbol | "-" ) + SEMI ).setName("seqEntry")\r
-        udpTableDefn = Group( "table" +\r
-            OneOrMore( combEntry | seqEntry ) +\r
-            "endtable" ).setName("table")\r
-\r
-        """\r
-        <UDP>\r
-        ::= primitive <name_of_UDP> ( <name_of_variable> <,<name_of_variable>>* ) ;\r
-                <UDP_declaration>+\r
-                <UDP_initial_statement>?\r
-                <table_definition>\r
-                endprimitive\r
-        """\r
-        udp = Group( "primitive" + identifier +\r
-            LPAR + Group( delimitedList( identifier ) ) + RPAR + SEMI +\r
-            OneOrMore( udpDecl ) +\r
-            Optional( udpInitialStmt ) +\r
-            udpTableDefn +\r
-            "endprimitive" )\r
-\r
-        verilogbnf = OneOrMore( module | udp ) + StringEnd()\r
-\r
-        verilogbnf.ignore( cppStyleComment )\r
-        verilogbnf.ignore( compilerDirective )\r
-\r
-    return verilogbnf\r
-\r
-\r
-def test( strng ):\r
-    tokens = []\r
-    try:\r
-        tokens = Verilog_BNF().parseString( strng )\r
-    except ParseException as err:\r
-        print(err.line)\r
-        print(" "*(err.column-1) + "^")\r
-        print(err)\r
-    return tokens\r
-\r
-\r
-#~ if __name__ == "__main__":\r
-if 0:\r
-    import pprint\r
-    toptest = """\r
-        module TOP( in, out );\r
-        input [7:0] in;\r
-        output [5:0] out;\r
-        COUNT_BITS8 count_bits( .IN( in ), .C( out ) );\r
-        endmodule"""\r
-    pprint.pprint( test(toptest).asList() )\r
-\r
-else:\r
-    def main():\r
-        print("Verilog parser test (V %s)" % __version__)\r
-        print(" - using pyparsing version", pyparsing.__version__)\r
-        print(" - using Python version", sys.version)\r
-        if packratOn: print(" - using packrat parsing")\r
-        if psycoOn: print(" - using psyco runtime optimization")\r
-        print()\r
-\r
-        import os\r
-        import gc\r
-\r
-        failCount = 0\r
-        Verilog_BNF()\r
-        numlines = 0\r
-        startTime = time.clock()\r
-        fileDir = "verilog"\r
-        #~ fileDir = "verilog/new"\r
-        #~ fileDir = "verilog/new2"\r
-        #~ fileDir = "verilog/new3"\r
-        allFiles = [f for f in os.listdir(fileDir) if f.endswith(".v")]\r
-        #~ allFiles = [ "list_path_delays_test.v" ]\r
-        #~ allFiles = [ "escapedIdent.v" ]\r
-        #~ allFiles = filter( lambda f : f.startswith("a") and f.endswith(".v"), os.listdir(fileDir) )\r
-        #~ allFiles = filter( lambda f : f.startswith("c") and f.endswith(".v"), os.listdir(fileDir) )\r
-        #~ allFiles = [ "ff.v" ]\r
-\r
-        pp = pprint.PrettyPrinter( indent=2 )\r
-        totalTime = 0\r
-        for vfile in allFiles:\r
-            gc.collect()\r
-            fnam = fileDir + "/"+vfile\r
-            infile = open(fnam)\r
-            filelines = infile.readlines()\r
-            infile.close()\r
-            print(fnam, len(filelines), end=' ')\r
-            numlines += len(filelines)\r
-            teststr = "".join(filelines)\r
-            time1 = time.clock()\r
-            tokens = test( teststr )\r
-            time2 = time.clock()\r
-            elapsed = time2-time1\r
-            totalTime += elapsed\r
-            if ( len( tokens ) ):\r
-                print("OK", elapsed)\r
-                #~ print "tokens="\r
-                #~ pp.pprint( tokens.asList() )\r
-                #~ print\r
-\r
-                ofnam = fileDir + "/parseOutput/" + vfile + ".parsed.txt"\r
-                outfile = open(ofnam,"w")\r
-                outfile.write( teststr )\r
-                outfile.write("\n")\r
-                outfile.write("\n")\r
-                outfile.write(pp.pformat(tokens.asList()))\r
-                outfile.write("\n")\r
-                outfile.close()\r
-            else:\r
-                print("failed", elapsed)\r
-                failCount += 1\r
-                for i,line in enumerate(filelines,1):\r
-                    print("%4d: %s" % (i,line.rstrip()))\r
-        endTime = time.clock()\r
-        print("Total parse time:", totalTime)\r
-        print("Total source lines:", numlines)\r
-        print("Average lines/sec:", ( "%.1f" % (float(numlines)/(totalTime+.05 ) ) ))\r
-        if failCount:\r
-            print("FAIL - %d files failed to parse" % failCount)\r
-        else:\r
-            print("SUCCESS - all files parsed")\r
-\r
-        return 0\r
-\r
-    #~ from line_profiler import LineProfiler\r
-    #~ from pyparsing import ParseResults\r
-    #~ lp = LineProfiler(ParseResults.__init__)\r
-\r
-    main()\r
-    \r
-    #~ lp.print_stats()\r
-    #~ import hotshot\r
-    #~ p = hotshot.Profile("vparse.prof",1,1)\r
-    #~ p.start()\r
-    #~ main()\r
-    #~ p.stop()\r
-    #~ p.close()\r
+#
+# verilogParse.py
+#
+# an example of using the pyparsing module to be able to process Verilog files
+# uses BNF defined at http://www.verilog.com/VerilogBNF.html
+#
+#    Copyright (c) 2004-2011 Paul T. McGuire.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# If you find this software to be useful, please make a donation to one
+# of the following charities:
+# - the Red Cross (https://www.redcross.org/)
+# - Hospice Austin (https://www.hospiceaustin.org/)
+#
+#    DISCLAIMER:
+#    THIS SOFTWARE IS PROVIDED BY PAUL T. McGUIRE ``AS IS'' AND ANY EXPRESS OR
+#    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+#    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+#    EVENT SHALL PAUL T. McGUIRE OR CO-CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+#    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+#    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OFUSE,
+#    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+#    OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+#    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+#    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#    For questions or inquiries regarding this license, or commercial use of
+#    this software, contact the author via e-mail: ptmcg@users.sourceforge.net
+#
+# Todo:
+#  - add pre-process pass to implement compilerDirectives (ifdef, include, etc.)
+#
+# Revision History:
+#
+#   1.0   - Initial release
+#   1.0.1 - Fixed grammar errors:
+#           . real declaration was incorrect
+#           . tolerant of '=>' for '*>' operator
+#           . tolerant of '?' as hex character
+#           . proper handling of mintypmax_expr within path delays
+#   1.0.2 - Performance tuning (requires pyparsing 1.3)
+#   1.0.3 - Performance updates, using Regex (requires pyparsing 1.4)
+#   1.0.4 - Performance updates, enable packrat parsing (requires pyparsing 1.4.2)
+#   1.0.5 - Converted keyword Literals to Keywords, added more use of Group to
+#           group parsed results tokens
+#   1.0.6 - Added support for module header with no ports list (thanks, Thomas Dejanovic!)
+#   1.0.7 - Fixed erroneous '<<' Forward definition in timCheckCond, omitting ()'s
+#   1.0.8 - Re-released under MIT license
+#   1.0.9 - Enhanced udpInstance to handle identifiers with leading '\' and subscripting
+#   1.0.10 - Fixed change added in 1.0.9 to work for all identifiers, not just those used
+#           for udpInstance.
+#   1.0.11 - Fixed bug in inst_args, content alternatives were reversed
+#
+import time
+import pprint
+import sys
+
+__version__ = "1.0.11"
+
+from pyparsing import Literal, Keyword, Word, OneOrMore, ZeroOrMore, \
+        Forward, delimitedList, Group, Optional, Combine, alphas, nums, restOfLine, \
+        alphanums, dblQuotedString, empty, ParseException, oneOf, \
+        StringEnd, FollowedBy, ParserElement, Regex, cppStyleComment
+import pyparsing
+usePackrat = False
+
+packratOn = False
+
+if usePackrat:
+    try:
+        ParserElement.enablePackrat()
+    except Exception:
+        pass
+    else:
+        packratOn = True
+
+def dumpTokens(s,l,t):
+    import pprint
+    pprint.pprint( t.asList() )
+
+verilogbnf = None
+def Verilog_BNF():
+    global verilogbnf
+
+    if verilogbnf is None:
+
+        # compiler directives
+        compilerDirective = Combine( "`" + \
+            oneOf("define undef ifdef else endif default_nettype "
+                  "include resetall timescale unconnected_drive "
+                  "nounconnected_drive celldefine endcelldefine") + \
+            restOfLine ).setName("compilerDirective")
+
+        # primitives
+        SEMI,COLON,LPAR,RPAR,LBRACE,RBRACE,LBRACK,RBRACK,DOT,COMMA,EQ = map(Literal,";:(){}[].,=")
+
+        identLead = alphas+"$_"
+        identBody = alphanums+"$_"
+        identifier1 = Regex( r"\.?["+identLead+"]["+identBody+r"]*(\.["+identLead+"]["+identBody+"]*)*"
+                            ).setName("baseIdent")
+        identifier2 = Regex(r"\\\S+").setParseAction(lambda t:t[0][1:]).setName("escapedIdent")#.setDebug()
+        identifier = identifier1 | identifier2
+        assert(identifier2 == r'\abc')
+
+        hexnums = nums + "abcdefABCDEF" + "_?"
+        base = Regex("'[bBoOdDhH]").setName("base")
+        basedNumber = Combine( Optional( Word(nums + "_") ) + base + Word(hexnums+"xXzZ"),
+                               joinString=" ", adjacent=False ).setName("basedNumber")
+        #~ number = ( basedNumber | Combine( Word( "+-"+spacedNums, spacedNums ) +
+                           #~ Optional( DOT + Optional( Word( spacedNums ) ) ) +
+                           #~ Optional( e + Word( "+-"+spacedNums, spacedNums ) ) ).setName("numeric") )
+        number = ( basedNumber | \
+                   Regex(r"[+-]?[0-9_]+(\.[0-9_]*)?([Ee][+-]?[0-9_]+)?") \
+                  ).setName("numeric")
+        #~ decnums = nums + "_"
+        #~ octnums = "01234567" + "_"
+        expr = Forward().setName("expr")
+        concat = Group( LBRACE + delimitedList( expr ) + RBRACE )
+        multiConcat = Group("{" + expr + concat + "}").setName("multiConcat")
+        funcCall = Group(identifier + LPAR + Optional( delimitedList( expr ) ) + RPAR).setName("funcCall")
+
+        subscrRef = Group(LBRACK + delimitedList( expr, COLON ) + RBRACK)
+        subscrIdentifier = Group( identifier + Optional( subscrRef ) )
+        #~ scalarConst = "0" | (( FollowedBy('1') + oneOf("1'b0 1'b1 1'bx 1'bX 1'B0 1'B1 1'Bx 1'BX 1") ))
+        scalarConst = Regex("0|1('[Bb][01xX])?")
+        mintypmaxExpr = Group( expr + COLON + expr + COLON + expr ).setName("mintypmax")
+        primary = (
+                  number |
+                  (LPAR + mintypmaxExpr + RPAR ) |
+                  ( LPAR + Group(expr) + RPAR ).setName("nestedExpr") |
+                  multiConcat |
+                  concat |
+                  dblQuotedString |
+                  funcCall |
+                  subscrIdentifier
+                  )
+
+        unop  = oneOf( "+  -  !  ~  &  ~&  |  ^|  ^  ~^" ).setName("unop")
+        binop = oneOf( "+  -  *  /  %  ==  !=  ===  !==  &&  "
+                       "||  <  <=  >  >=  &  |  ^  ^~  >>  << ** <<< >>>" ).setName("binop")
+
+        expr << (
+                ( unop + expr ) |  # must be first!
+                ( primary + "?" + expr + COLON + expr ) |
+                ( primary + Optional( binop + expr ) )
+                )
+
+        lvalue = subscrIdentifier | concat
+
+        # keywords
+        if_        = Keyword("if")
+        else_      = Keyword("else")
+        edge       = Keyword("edge")
+        posedge    = Keyword("posedge")
+        negedge    = Keyword("negedge")
+        specify    = Keyword("specify")
+        endspecify = Keyword("endspecify")
+        fork       = Keyword("fork")
+        join       = Keyword("join")
+        begin      = Keyword("begin")
+        end        = Keyword("end")
+        default    = Keyword("default")
+        forever    = Keyword("forever")
+        repeat     = Keyword("repeat")
+        while_     = Keyword("while")
+        for_       = Keyword("for")
+        case       = oneOf( "case casez casex" )
+        endcase    = Keyword("endcase")
+        wait       = Keyword("wait")
+        disable    = Keyword("disable")
+        deassign   = Keyword("deassign")
+        force      = Keyword("force")
+        release    = Keyword("release")
+        assign     = Keyword("assign")
+
+        eventExpr = Forward()
+        eventTerm = ( posedge + expr ) | ( negedge + expr ) | expr | ( LPAR + eventExpr + RPAR )
+        eventExpr << (
+            Group( delimitedList( eventTerm, Keyword("or") ) )
+            )
+        eventControl = Group( "@" + ( ( LPAR + eventExpr + RPAR ) | identifier | "*" ) ).setName("eventCtrl")
+
+        delayArg = ( number |
+                     Word(alphanums+"$_") | #identifier |
+                     ( LPAR + Group( delimitedList( mintypmaxExpr | expr ) ) + RPAR )
+                   ).setName("delayArg")#.setDebug()
+        delay = Group( "#" + delayArg ).setName("delay")#.setDebug()
+        delayOrEventControl = delay | eventControl
+
+        assgnmt   = Group( lvalue + EQ + Optional( delayOrEventControl ) + expr ).setName( "assgnmt" )
+        nbAssgnmt = Group(( lvalue + "<=" + Optional( delay ) + expr ) |
+                     ( lvalue + "<=" + Optional( eventControl ) + expr )).setName( "nbassgnmt" )
+
+        range = LBRACK + expr + COLON + expr + RBRACK
+
+        paramAssgnmt = Group( identifier + EQ + expr ).setName("paramAssgnmt")
+        parameterDecl = Group( "parameter" + Optional( range ) + delimitedList( paramAssgnmt ) + SEMI).setName("paramDecl")
+
+        inputDecl = Group( "input" + Optional( range ) + delimitedList( identifier ) + SEMI )
+        outputDecl = Group( "output" + Optional( range ) + delimitedList( identifier ) + SEMI )
+        inoutDecl = Group( "inout" + Optional( range ) + delimitedList( identifier ) + SEMI )
+
+        regIdentifier = Group( identifier + Optional( LBRACK + expr + COLON + expr + RBRACK ) )
+        regDecl = Group( "reg" + Optional("signed") + Optional( range ) + delimitedList( regIdentifier ) + SEMI ).setName("regDecl")
+        timeDecl = Group( "time" + delimitedList( regIdentifier ) + SEMI )
+        integerDecl = Group( "integer" + delimitedList( regIdentifier ) + SEMI )
+
+        strength0 = oneOf("supply0  strong0  pull0  weak0  highz0")
+        strength1 = oneOf("supply1  strong1  pull1  weak1  highz1")
+        driveStrength = Group( LPAR + ( ( strength0 + COMMA + strength1 ) |
+                                       ( strength1 + COMMA + strength0 ) ) + RPAR ).setName("driveStrength")
+        nettype = oneOf("wire  tri  tri1  supply0  wand  triand  tri0  supply1  wor  trior  trireg")
+        expandRange = Optional( oneOf("scalared vectored") ) + range
+        realDecl = Group( "real" + delimitedList( identifier ) + SEMI )
+
+        eventDecl = Group( "event" + delimitedList( identifier ) + SEMI )
+
+        blockDecl = (
+            parameterDecl |
+            regDecl |
+            integerDecl |
+            realDecl |
+            timeDecl |
+            eventDecl
+            )
+
+        stmt = Forward().setName("stmt")#.setDebug()
+        stmtOrNull = stmt | SEMI
+        caseItem = ( delimitedList( expr ) + COLON + stmtOrNull ) | \
+                   ( default + Optional(":") + stmtOrNull )
+        stmt << Group(
+            ( begin + Group( ZeroOrMore( stmt ) ) + end ).setName("begin-end") |
+            ( if_ + Group(LPAR + expr + RPAR) + stmtOrNull + Optional( else_ + stmtOrNull ) ).setName("if") |
+            ( delayOrEventControl + stmtOrNull ) |
+            ( case + LPAR + expr + RPAR + OneOrMore( caseItem ) + endcase ) |
+            ( forever + stmt ) |
+            ( repeat + LPAR + expr + RPAR + stmt ) |
+            ( while_ + LPAR + expr + RPAR + stmt ) |
+            ( for_ + LPAR + assgnmt + SEMI + Group( expr ) + SEMI + assgnmt + RPAR + stmt ) |
+            ( fork + ZeroOrMore( stmt ) + join ) |
+            ( fork + COLON + identifier + ZeroOrMore( blockDecl ) + ZeroOrMore( stmt ) + end ) |
+            ( wait + LPAR + expr + RPAR + stmtOrNull ) |
+            ( "->" + identifier + SEMI ) |
+            ( disable + identifier + SEMI ) |
+            ( assign + assgnmt + SEMI ) |
+            ( deassign + lvalue + SEMI ) |
+            ( force + assgnmt + SEMI ) |
+            ( release + lvalue + SEMI ) |
+            ( begin + COLON + identifier + ZeroOrMore( blockDecl ) + ZeroOrMore( stmt ) + end ).setName("begin:label-end") |
+            # these  *have* to go at the end of the list!!!
+            ( assgnmt + SEMI ) |
+            ( nbAssgnmt + SEMI ) |
+            ( Combine( Optional("$") + identifier ) + Optional( LPAR + delimitedList(expr|empty) + RPAR ) + SEMI )
+            ).setName("stmtBody")
+        """
+        x::=<blocking_assignment> ;
+        x||= <non_blocking_assignment> ;
+        x||= if ( <expression> ) <statement_or_null>
+        x||= if ( <expression> ) <statement_or_null> else <statement_or_null>
+        x||= case ( <expression> ) <case_item>+ endcase
+        x||= casez ( <expression> ) <case_item>+ endcase
+        x||= casex ( <expression> ) <case_item>+ endcase
+        x||= forever <statement>
+        x||= repeat ( <expression> ) <statement>
+        x||= while ( <expression> ) <statement>
+        x||= for ( <assignment> ; <expression> ; <assignment> ) <statement>
+        x||= <delay_or_event_control> <statement_or_null>
+        x||= wait ( <expression> ) <statement_or_null>
+        x||= -> <name_of_event> ;
+        x||= <seq_block>
+        x||= <par_block>
+        x||= <task_enable>
+        x||= <system_task_enable>
+        x||= disable <name_of_task> ;
+        x||= disable <name_of_block> ;
+        x||= assign <assignment> ;
+        x||= deassign <lvalue> ;
+        x||= force <assignment> ;
+        x||= release <lvalue> ;
+        """
+        alwaysStmt = Group( "always" + Optional(eventControl) + stmt ).setName("alwaysStmt")
+        initialStmt = Group( "initial" + stmt ).setName("initialStmt")
+
+        chargeStrength = Group( LPAR + oneOf( "small medium large" ) + RPAR ).setName("chargeStrength")
+
+        continuousAssign = Group(
+            assign + Optional( driveStrength ) + Optional( delay ) + delimitedList( assgnmt ) + SEMI
+            ).setName("continuousAssign")
+
+
+        tfDecl = (
+            parameterDecl |
+            inputDecl |
+            outputDecl |
+            inoutDecl |
+            regDecl |
+            timeDecl |
+            integerDecl |
+            realDecl
+            )
+
+        functionDecl = Group(
+            "function" + Optional( range | "integer" | "real" ) + identifier + SEMI +
+            Group( OneOrMore( tfDecl ) ) +
+            Group( ZeroOrMore( stmt ) ) +
+            "endfunction"
+            )
+
+        inputOutput = oneOf("input output")
+        netDecl1Arg = ( nettype +
+            Optional( expandRange ) +
+            Optional( delay ) +
+            Group( delimitedList( ~inputOutput + identifier ) ) )
+        netDecl2Arg = ( "trireg" +
+            Optional( chargeStrength ) +
+            Optional( expandRange ) +
+            Optional( delay ) +
+            Group( delimitedList( ~inputOutput + identifier ) ) )
+        netDecl3Arg = ( nettype +
+            Optional( driveStrength ) +
+            Optional( expandRange ) +
+            Optional( delay ) +
+            Group( delimitedList( assgnmt ) ) )
+        netDecl1 = Group(netDecl1Arg + SEMI).setName("netDecl1")
+        netDecl2 = Group(netDecl2Arg + SEMI).setName("netDecl2")
+        netDecl3 = Group(netDecl3Arg + SEMI).setName("netDecl3")
+
+        gateType = oneOf("and  nand  or  nor xor  xnor buf  bufif0 bufif1 "
+                         "not  notif0 notif1  pulldown pullup nmos  rnmos "
+                         "pmos rpmos cmos rcmos   tran rtran  tranif0  "
+                         "rtranif0  tranif1 rtranif1"  )
+        gateInstance = Optional( Group( identifier + Optional( range ) ) ) + \
+                        LPAR + Group( delimitedList( expr ) ) + RPAR
+        gateDecl = Group( gateType +
+            Optional( driveStrength ) +
+            Optional( delay ) +
+            delimitedList( gateInstance) +
+            SEMI )
+
+        udpInstance = Group( Group( identifier + Optional(range | subscrRef) ) +
+            LPAR + Group( delimitedList( expr ) ) + RPAR )
+        udpInstantiation = Group( identifier -
+            Optional( driveStrength ) +
+            Optional( delay ) +
+            delimitedList( udpInstance ) +
+            SEMI ).setName("udpInstantiation")
+
+        parameterValueAssignment = Group( Literal("#") + LPAR + Group( delimitedList( expr ) ) + RPAR )
+        namedPortConnection = Group( DOT + identifier + LPAR + expr + RPAR ).setName("namedPortConnection")#.setDebug()
+        assert(r'.\abc (abc )' == namedPortConnection)
+        modulePortConnection = expr | empty
+        #~ moduleInstance = Group( Group ( identifier + Optional(range) ) +
+            #~ ( delimitedList( modulePortConnection ) |
+              #~ delimitedList( namedPortConnection ) ) )
+        inst_args = Group( LPAR + (delimitedList( namedPortConnection ) |
+                    delimitedList( modulePortConnection )) + RPAR).setName("inst_args")
+        moduleInstance = Group( Group ( identifier + Optional(range) ) + inst_args ).setName("moduleInstance")#.setDebug()
+
+        moduleInstantiation = Group( identifier +
+            Optional( parameterValueAssignment ) +
+            delimitedList( moduleInstance ).setName("moduleInstanceList") +
+            SEMI ).setName("moduleInstantiation")
+
+        parameterOverride = Group( "defparam" + delimitedList( paramAssgnmt ) + SEMI )
+        task = Group( "task" + identifier + SEMI +
+            ZeroOrMore( tfDecl ) +
+            stmtOrNull +
+            "endtask" )
+
+        specparamDecl = Group( "specparam" + delimitedList( paramAssgnmt ) + SEMI )
+
+        pathDescr1 = Group( LPAR + subscrIdentifier + "=>" + subscrIdentifier + RPAR )
+        pathDescr2 = Group( LPAR + Group( delimitedList( subscrIdentifier ) ) + "*>" +
+                                  Group( delimitedList( subscrIdentifier ) ) + RPAR )
+        pathDescr3 = Group( LPAR + Group( delimitedList( subscrIdentifier ) ) + "=>" +
+                                  Group( delimitedList( subscrIdentifier ) ) + RPAR )
+        pathDelayValue = Group( ( LPAR + Group( delimitedList( mintypmaxExpr | expr ) ) + RPAR ) |
+                                 mintypmaxExpr |
+                                 expr )
+        pathDecl = Group( ( pathDescr1 | pathDescr2 | pathDescr3 ) + EQ + pathDelayValue + SEMI ).setName("pathDecl")
+
+        portConditionExpr = Forward()
+        portConditionTerm = Optional(unop) + subscrIdentifier
+        portConditionExpr << portConditionTerm + Optional( binop + portConditionExpr )
+        polarityOp = oneOf("+ -")
+        levelSensitivePathDecl1 = Group(
+            if_ + Group(LPAR + portConditionExpr + RPAR) +
+            subscrIdentifier + Optional( polarityOp ) + "=>" + subscrIdentifier + EQ +
+            pathDelayValue +
+            SEMI )
+        levelSensitivePathDecl2 = Group(
+            if_ + Group(LPAR + portConditionExpr + RPAR) +
+            LPAR + Group( delimitedList( subscrIdentifier ) ) + Optional( polarityOp ) + "*>" +
+                Group( delimitedList( subscrIdentifier ) ) + RPAR + EQ +
+            pathDelayValue +
+            SEMI )
+        levelSensitivePathDecl = levelSensitivePathDecl1 | levelSensitivePathDecl2
+
+        edgeIdentifier = posedge | negedge
+        edgeSensitivePathDecl1 = Group(
+            Optional( if_ + Group(LPAR + expr + RPAR) ) +
+            LPAR + Optional( edgeIdentifier ) +
+            subscrIdentifier + "=>" +
+            LPAR + subscrIdentifier + Optional( polarityOp ) + COLON + expr + RPAR + RPAR +
+            EQ +
+            pathDelayValue +
+            SEMI )
+        edgeSensitivePathDecl2 = Group(
+            Optional( if_ + Group(LPAR + expr + RPAR) ) +
+            LPAR + Optional( edgeIdentifier ) +
+            subscrIdentifier + "*>" +
+            LPAR + delimitedList( subscrIdentifier ) + Optional( polarityOp ) + COLON + expr + RPAR + RPAR +
+            EQ +
+            pathDelayValue +
+            SEMI )
+        edgeSensitivePathDecl = edgeSensitivePathDecl1 | edgeSensitivePathDecl2
+
+        edgeDescr = oneOf("01 10 0x x1 1x x0").setName("edgeDescr")
+
+        timCheckEventControl = Group( posedge | negedge | (edge + LBRACK + delimitedList( edgeDescr ) + RBRACK ))
+        timCheckCond = Forward()
+        timCondBinop = oneOf("== === != !==")
+        timCheckCondTerm = ( expr + timCondBinop + scalarConst ) | ( Optional("~") + expr )
+        timCheckCond << ( ( LPAR + timCheckCond + RPAR ) | timCheckCondTerm )
+        timCheckEvent = Group( Optional( timCheckEventControl ) +
+                                subscrIdentifier +
+                                Optional( "&&&" + timCheckCond ) )
+        timCheckLimit = expr
+        controlledTimingCheckEvent = Group( timCheckEventControl + subscrIdentifier +
+                                            Optional( "&&&" + timCheckCond ) )
+        notifyRegister = identifier
+
+        systemTimingCheck1 = Group( "$setup" +
+            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck2 = Group( "$hold" +
+            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck3 = Group( "$period" +
+            LPAR + controlledTimingCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck4 = Group( "$width" +
+            LPAR + controlledTimingCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + expr + COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck5 = Group( "$skew" +
+            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck6 = Group( "$recovery" +
+            LPAR + controlledTimingCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck7 = Group( "$setuphold" +
+            LPAR + timCheckEvent + COMMA + timCheckEvent + COMMA + timCheckLimit + COMMA + timCheckLimit +
+            Optional( COMMA + notifyRegister ) + RPAR +
+            SEMI )
+        systemTimingCheck = (FollowedBy('$') + ( systemTimingCheck1 | systemTimingCheck2 | systemTimingCheck3 |
+            systemTimingCheck4 | systemTimingCheck5 | systemTimingCheck6 | systemTimingCheck7 )).setName("systemTimingCheck")
+        sdpd = if_ + Group(LPAR + expr + RPAR) + \
+            ( pathDescr1 | pathDescr2 ) + EQ + pathDelayValue + SEMI
+
+        specifyItem = ~Keyword("endspecify") +(
+            specparamDecl |
+            pathDecl |
+            levelSensitivePathDecl |
+            edgeSensitivePathDecl |
+            systemTimingCheck |
+            sdpd
+            )
+        """
+        x::= <specparam_declaration>
+        x||= <path_declaration>
+        x||= <level_sensitive_path_declaration>
+        x||= <edge_sensitive_path_declaration>
+        x||= <system_timing_check>
+        x||= <sdpd>
+        """
+        specifyBlock = Group( "specify" + ZeroOrMore( specifyItem ) + "endspecify" ).setName("specifyBlock")
+
+        moduleItem = ~Keyword("endmodule") + (
+            parameterDecl |
+            inputDecl |
+            outputDecl |
+            inoutDecl |
+            regDecl |
+            netDecl3 |
+            netDecl1 |
+            netDecl2 |
+            timeDecl |
+            integerDecl |
+            realDecl |
+            eventDecl |
+            gateDecl |
+            parameterOverride |
+            continuousAssign |
+            specifyBlock |
+            initialStmt |
+            alwaysStmt |
+            task |
+            functionDecl |
+            # these have to be at the end - they start with identifiers
+            moduleInstantiation |
+            udpInstantiation
+            )
+        """  All possible moduleItems, from Verilog grammar spec
+        x::= <parameter_declaration>
+        x||= <input_declaration>
+        x||= <output_declaration>
+        x||= <inout_declaration>
+        ?||= <net_declaration>  (spec does not seem consistent for this item)
+        x||= <reg_declaration>
+        x||= <time_declaration>
+        x||= <integer_declaration>
+        x||= <real_declaration>
+        x||= <event_declaration>
+        x||= <gate_declaration>
+        x||= <UDP_instantiation>
+        x||= <module_instantiation>
+        x||= <parameter_override>
+        x||= <continuous_assign>
+        x||= <specify_block>
+        x||= <initial_statement>
+        x||= <always_statement>
+        x||= <task>
+        x||= <function>
+        """
+        portRef = subscrIdentifier
+        portExpr = portRef | Group( LBRACE + delimitedList( portRef ) + RBRACE )
+        port = portExpr | Group( ( DOT + identifier + LPAR + portExpr + RPAR ) )
+
+        moduleHdr = Group ( oneOf("module macromodule") + identifier +
+                 Optional( LPAR + Group( Optional( delimitedList(
+                                    Group(oneOf("input output") +
+                                            (netDecl1Arg | netDecl2Arg | netDecl3Arg) ) |
+                                    port ) ) ) +
+                            RPAR ) + SEMI ).setName("moduleHdr")
+
+        module = Group(  moduleHdr +
+                 Group( ZeroOrMore( moduleItem ) ) +
+                 "endmodule" ).setName("module")#.setDebug()
+
+        udpDecl = outputDecl | inputDecl | regDecl
+        #~ udpInitVal = oneOf("1'b0 1'b1 1'bx 1'bX 1'B0 1'B1 1'Bx 1'BX 1 0 x X")
+        udpInitVal = (Regex("1'[bB][01xX]") | Regex("[01xX]")).setName("udpInitVal")
+        udpInitialStmt = Group( "initial" +
+            identifier + EQ + udpInitVal + SEMI ).setName("udpInitialStmt")
+
+        levelSymbol = oneOf("0   1   x   X   ?   b   B")
+        levelInputList = Group( OneOrMore( levelSymbol ).setName("levelInpList") )
+        outputSymbol = oneOf("0   1   x   X")
+        combEntry = Group( levelInputList + COLON + outputSymbol + SEMI )
+        edgeSymbol = oneOf("r   R   f   F   p   P   n   N   *")
+        edge = Group( LPAR + levelSymbol + levelSymbol + RPAR ) | \
+               Group( edgeSymbol )
+        edgeInputList = Group( ZeroOrMore( levelSymbol ) + edge + ZeroOrMore( levelSymbol ) )
+        inputList = levelInputList | edgeInputList
+        seqEntry = Group( inputList + COLON + levelSymbol + COLON + ( outputSymbol | "-" ) + SEMI ).setName("seqEntry")
+        udpTableDefn = Group( "table" +
+            OneOrMore( combEntry | seqEntry ) +
+            "endtable" ).setName("table")
+
+        """
+        <UDP>
+        ::= primitive <name_of_UDP> ( <name_of_variable> <,<name_of_variable>>* ) ;
+                <UDP_declaration>+
+                <UDP_initial_statement>?
+                <table_definition>
+                endprimitive
+        """
+        udp = Group( "primitive" + identifier +
+            LPAR + Group( delimitedList( identifier ) ) + RPAR + SEMI +
+            OneOrMore( udpDecl ) +
+            Optional( udpInitialStmt ) +
+            udpTableDefn +
+            "endprimitive" )
+
+        verilogbnf = OneOrMore( module | udp ) + StringEnd()
+
+        verilogbnf.ignore( cppStyleComment )
+        verilogbnf.ignore( compilerDirective )
+
+    return verilogbnf
+
+
+def test( strng ):
+    tokens = []
+    try:
+        tokens = Verilog_BNF().parseString( strng )
+    except ParseException as err:
+        print(err.line)
+        print(" "*(err.column-1) + "^")
+        print(err)
+    return tokens
+
+
+#~ if __name__ == "__main__":
+if 0:
+    import pprint
+    toptest = """
+        module TOP( in, out );
+        input [7:0] in;
+        output [5:0] out;
+        COUNT_BITS8 count_bits( .IN( in ), .C( out ) );
+        endmodule"""
+    pprint.pprint( test(toptest).asList() )
+
+else:
+    def main():
+        print("Verilog parser test (V %s)" % __version__)
+        print(" - using pyparsing version", pyparsing.__version__)
+        print(" - using Python version", sys.version)
+        if packratOn: print(" - using packrat parsing")
+        print()
+
+        import os
+        import gc
+
+        failCount = 0
+        Verilog_BNF()
+        numlines = 0
+        startTime = time.clock()
+        fileDir = "verilog"
+        #~ fileDir = "verilog/new"
+        #~ fileDir = "verilog/new2"
+        #~ fileDir = "verilog/new3"
+        allFiles = [f for f in os.listdir(fileDir) if f.endswith(".v")]
+        #~ allFiles = [ "list_path_delays_test.v" ]
+        #~ allFiles = [ "escapedIdent.v" ]
+        #~ allFiles = filter( lambda f : f.startswith("a") and f.endswith(".v"), os.listdir(fileDir) )
+        #~ allFiles = filter( lambda f : f.startswith("c") and f.endswith(".v"), os.listdir(fileDir) )
+        #~ allFiles = [ "ff.v" ]
+
+        pp = pprint.PrettyPrinter( indent=2 )
+        totalTime = 0
+        for vfile in allFiles:
+            gc.collect()
+            fnam = fileDir + "/"+vfile
+            infile = open(fnam)
+            filelines = infile.readlines()
+            infile.close()
+            print(fnam, len(filelines), end=' ')
+            numlines += len(filelines)
+            teststr = "".join(filelines)
+            time1 = time.clock()
+            tokens = test( teststr )
+            time2 = time.clock()
+            elapsed = time2-time1
+            totalTime += elapsed
+            if ( len( tokens ) ):
+                print("OK", elapsed)
+                #~ print "tokens="
+                #~ pp.pprint( tokens.asList() )
+                #~ print
+
+                ofnam = fileDir + "/parseOutput/" + vfile + ".parsed.txt"
+                outfile = open(ofnam,"w")
+                outfile.write( teststr )
+                outfile.write("\n")
+                outfile.write("\n")
+                outfile.write(pp.pformat(tokens.asList()))
+                outfile.write("\n")
+                outfile.close()
+            else:
+                print("failed", elapsed)
+                failCount += 1
+                for i,line in enumerate(filelines,1):
+                    print("%4d: %s" % (i,line.rstrip()))
+        endTime = time.clock()
+        print("Total parse time:", totalTime)
+        print("Total source lines:", numlines)
+        print("Average lines/sec:", ( "%.1f" % (float(numlines)/(totalTime+.05 ) ) ))
+        if failCount:
+            print("FAIL - %d files failed to parse" % failCount)
+        else:
+            print("SUCCESS - all files parsed")
+
+        return 0
+
+    #~ from line_profiler import LineProfiler
+    #~ from pyparsing import ParseResults
+    #~ lp = LineProfiler(ParseResults.__init__)
+
+    main()
+
+    #~ lp.print_stats()
+    #~ import hotshot
+    #~ p = hotshot.Profile("vparse.prof",1,1)
+    #~ p.start()
+    #~ main()
+    #~ p.stop()
+    #~ p.close()
index 062c9ae1cb87656ee2acb9af54325ac6a5ef7817..7fa2bc8d514142531b68faaccb998300a0a1cc84 100644 (file)
@@ -3,7 +3,7 @@
 #  Copyright, 2007 - Paul McGuire\r
 #\r
 #  Simple example of using withAttribute parse action helper\r
-#  to define \r
+#  to define\r
 #\r
 data = """\\r
     <td align=right width=80><font size=2 face="New Times Roman,Times,Serif">&nbsp;49.950&nbsp;</font></td>\r
index 7cebbff07ef8b3de87b670fb5438800b744f058c..cbd3d26a2a35d3db9e697cfb883abe0491fd09d6 100644 (file)
@@ -68,11 +68,11 @@ mag = Or(makeLit(s,v) for s,v in majorDefinitions)
 \r
 wordprod = lambda t: reduce(mul,t)\r
 wordsum = lambda t: sum(t)\r
-numPart = (((( units + Optional(hundreds) ).setParseAction(wordprod) + \r
-               Optional(tens)).setParseAction(wordsum) \r
+numPart = (((( units + Optional(hundreds) ).setParseAction(wordprod) +\r
+               Optional(tens)).setParseAction(wordsum)\r
                ^ tens )\r
                + Optional(units) ).setParseAction(wordsum)\r
-numWords = OneOrMore( (numPart + Optional(mag)).setParseAction(wordprod) \r
+numWords = OneOrMore( (numPart + Optional(mag)).setParseAction(wordprod)\r
                     ).setParseAction(wordsum) + StringEnd()\r
 numWords.ignore(Literal("-"))\r
 numWords.ignore(CaselessLiteral("and"))\r
@@ -85,9 +85,9 @@ def test(s,expected):
         if not fail_expected:\r
             teststr, results = results_tup[0]\r
             observed = results[0]\r
-            assert expected == observed, "incorrect parsed value, {} -> {}, should be {}".format(teststr, observed, expected)\r
+            assert expected == observed, "incorrect parsed value, {0} -> {1}, should be {2}".format(teststr, observed, expected)\r
     except Exception as exc:\r
-        print("{}: {}".format(type(exc).__name__, exc))\r
+        print("{0}: {1}".format(type(exc).__name__, exc))\r
 \r
 test("one hundred twenty hundred", None)\r
 test("one hundred and twennty", None)\r
@@ -103,4 +103,4 @@ test("seventy-seven thousand eight hundred and nineteen", 77819)
 test("seven hundred seventy-seven thousand seven hundred and seventy-seven", 777777)\r
 test("zero", 0)\r
 test("forty two", 42)\r
-test("fourty two", 42)
\ No newline at end of file
+test("fourty two", 42)\r
diff --git a/htmldoc/api-objects.txt b/htmldoc/api-objects.txt
deleted file mode 100644 (file)
index 8205908..0000000
+++ /dev/null
@@ -1,3194 +0,0 @@
-pyparsing      pyparsing-module.html
-pyparsing.removeQuotes pyparsing-module.html#removeQuotes
-pyparsing.alphanums    pyparsing-module.html#alphanums
-pyparsing._bslash      pyparsing-module.html#_bslash
-pyparsing._escapedPunc pyparsing-module.html#_escapedPunc
-pyparsing._escapedOctChar      pyparsing-module.html#_escapedOctChar
-pyparsing.PY_3 pyparsing-module.html#PY_3
-pyparsing._trim_arity  pyparsing-module.html#_trim_arity
-pyparsing.infixNotation        pyparsing-module.html#infixNotation
-pyparsing._defaultStartDebugAction     pyparsing-module.html#_defaultStartDebugAction
-pyparsing._charRange   pyparsing-module.html#_charRange
-pyparsing.withClass    pyparsing-module.html#withClass
-pyparsing.delimitedList        pyparsing-module.html#delimitedList
-pyparsing.lineEnd      pyparsing-module.html#lineEnd
-pyparsing.dictOf       pyparsing-module.html#dictOf
-pyparsing.makeHTMLTags pyparsing-module.html#makeHTMLTags
-pyparsing.commaSeparatedList   pyparsing-module.html#commaSeparatedList
-pyparsing.stringStart  pyparsing-module.html#stringStart
-pyparsing._makeTags    pyparsing-module.html#_makeTags
-pyparsing._reBracketExpr       pyparsing-module.html#_reBracketExpr
-pyparsing.oneOf        pyparsing-module.html#oneOf
-pyparsing._flatten     pyparsing-module.html#_flatten
-pyparsing.pythonStyleComment   pyparsing-module.html#pythonStyleComment
-pyparsing.__versionTime__      pyparsing-module.html#__versionTime__
-pyparsing._ustr        pyparsing-module.html#_ustr
-pyparsing.matchPreviousExpr    pyparsing-module.html#matchPreviousExpr
-pyparsing.matchOnlyAtCol       pyparsing-module.html#matchOnlyAtCol
-pyparsing.cStyleComment        pyparsing-module.html#cStyleComment
-pyparsing.downcaseTokens       pyparsing-module.html#downcaseTokens
-pyparsing._commasepitem        pyparsing-module.html#_commasepitem
-pyparsing._defaultSuccessDebugAction   pyparsing-module.html#_defaultSuccessDebugAction
-pyparsing.lineno       pyparsing-module.html#lineno
-pyparsing.replaceWith  pyparsing-module.html#replaceWith
-pyparsing.alphas8bit   pyparsing-module.html#alphas8bit
-pyparsing._escapeRegexRangeChars       pyparsing-module.html#_escapeRegexRangeChars
-pyparsing._singleChar  pyparsing-module.html#_singleChar
-pyparsing.unicodeString        pyparsing-module.html#unicodeString
-pyparsing.javaStyleComment     pyparsing-module.html#javaStyleComment
-pyparsing.stringEnd    pyparsing-module.html#stringEnd
-pyparsing.anyCloseTag  pyparsing-module.html#anyCloseTag
-pyparsing.cppStyleComment      pyparsing-module.html#cppStyleComment
-pyparsing.col  pyparsing-module.html#col
-pyparsing.originalTextFor      pyparsing-module.html#originalTextFor
-pyparsing._optionalNotMatched  pyparsing-module.html#_optionalNotMatched
-pyparsing.makeXMLTags  pyparsing-module.html#makeXMLTags
-pyparsing.singleArgBuiltins    pyparsing-module.html#singleArgBuiltins
-pyparsing.traceParseAction     pyparsing-module.html#traceParseAction
-pyparsing.quotedString pyparsing-module.html#quotedString
-pyparsing.tokenMap     pyparsing-module.html#tokenMap
-pyparsing.withAttribute        pyparsing-module.html#withAttribute
-pyparsing.lineStart    pyparsing-module.html#lineStart
-pyparsing.matchPreviousLiteral pyparsing-module.html#matchPreviousLiteral
-pyparsing.empty        pyparsing-module.html#empty
-pyparsing._htmlEntityMap       pyparsing-module.html#_htmlEntityMap
-pyparsing.alphas       pyparsing-module.html#alphas
-pyparsing.ungroup      pyparsing-module.html#ungroup
-pyparsing.anyOpenTag   pyparsing-module.html#anyOpenTag
-pyparsing.line pyparsing-module.html#line
-pyparsing.system_version       pyparsing-module.html#system_version
-pyparsing.operatorPrecedence   pyparsing-module.html#operatorPrecedence
-pyparsing.__doc__      pyparsing-module.html#__doc__
-pyparsing.upcaseTokens pyparsing-module.html#upcaseTokens
-pyparsing.opAssoc      pyparsing-module.html#opAssoc
-pyparsing.punc8bit     pyparsing-module.html#punc8bit
-pyparsing.locatedExpr  pyparsing-module.html#locatedExpr
-pyparsing.sglQuotedString      pyparsing-module.html#sglQuotedString
-pyparsing.srange       pyparsing-module.html#srange
-pyparsing.dblSlashComment      pyparsing-module.html#dblSlashComment
-pyparsing._defaultExceptionDebugAction pyparsing-module.html#_defaultExceptionDebugAction
-pyparsing.nullDebugAction      pyparsing-module.html#nullDebugAction
-pyparsing.unichr       pyparsing-module.html#unichr
-pyparsing.dblQuotedString      pyparsing-module.html#dblQuotedString
-pyparsing.commonHTMLEntity     pyparsing-module.html#commonHTMLEntity
-pyparsing.__package__  pyparsing-module.html#__package__
-pyparsing.fname        pyparsing-module.html#fname
-pyparsing.nestedExpr   pyparsing-module.html#nestedExpr
-pyparsing.htmlComment  pyparsing-module.html#htmlComment
-pyparsing.nums pyparsing-module.html#nums
-pyparsing.countedArray pyparsing-module.html#countedArray
-pyparsing.restOfLine   pyparsing-module.html#restOfLine
-pyparsing._xml_escape  pyparsing-module.html#_xml_escape
-pyparsing._MAX_INT     pyparsing-module.html#_MAX_INT
-pyparsing._escapedHexChar      pyparsing-module.html#_escapedHexChar
-pyparsing.hexnums      pyparsing-module.html#hexnums
-pyparsing.indentedBlock        pyparsing-module.html#indentedBlock
-pyparsing.replaceHTMLEntity    pyparsing-module.html#replaceHTMLEntity
-pyparsing.printables   pyparsing-module.html#printables
-pyparsing.And  pyparsing.And-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.And.__str__  pyparsing.And-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParseExpression.append       pyparsing.ParseExpression-class.html#append
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.And.__slotnames__    pyparsing.And-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.And.parseImpl        pyparsing.And-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.And.__init__ pyparsing.And-class.html#__init__
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParseExpression.leaveWhitespace      pyparsing.ParseExpression-class.html#leaveWhitespace
-pyparsing.ParseExpression.__getitem__  pyparsing.ParseExpression-class.html#__getitem__
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParseExpression.setResultsName       pyparsing.ParseExpression-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseExpression.streamline   pyparsing.ParseExpression-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseExpression.validate     pyparsing.ParseExpression-class.html#validate
-pyparsing.ParseExpression.copy pyparsing.ParseExpression-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.And.__iadd__ pyparsing.And-class.html#__iadd__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseExpression.ignore       pyparsing.ParseExpression-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.And.checkRecursion   pyparsing.And-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.CaselessKeyword      pyparsing.CaselessKeyword-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.CaselessKeyword.__init__     pyparsing.CaselessKeyword-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.Keyword.setDefaultKeywordChars       pyparsing.Keyword-class.html#setDefaultKeywordChars
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.CaselessKeyword.parseImpl    pyparsing.CaselessKeyword-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.Keyword.DEFAULT_KEYWORD_CHARS        pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.Keyword.copy pyparsing.Keyword-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.CaselessLiteral      pyparsing.CaselessLiteral-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.CaselessLiteral.__init__     pyparsing.CaselessLiteral-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Literal.__slotnames__        pyparsing.Literal-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.CaselessLiteral.parseImpl    pyparsing.CaselessLiteral-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Char pyparsing.Char-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Word.__str__ pyparsing.Word-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Char.__init__        pyparsing.Char-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Word.__slotnames__   pyparsing.Word-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Word.parseImpl       pyparsing.Word-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.CharsNotIn   pyparsing.CharsNotIn-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.CharsNotIn.__str__   pyparsing.CharsNotIn-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.CharsNotIn.__init__  pyparsing.CharsNotIn-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.CharsNotIn.parseImpl pyparsing.CharsNotIn-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.CloseMatch   pyparsing.CloseMatch-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.CloseMatch.__init__  pyparsing.CloseMatch-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.CloseMatch.parseImpl pyparsing.CloseMatch-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Combine      pyparsing.Combine-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Combine.__init__     pyparsing.Combine-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Combine.__slotnames__        pyparsing.Combine-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.Combine.postParse    pyparsing.Combine-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.Combine.ignore       pyparsing.Combine-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Dict pyparsing.Dict-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Dict.__init__        pyparsing.Dict-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Dict.__slotnames__   pyparsing.Dict-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.Dict.postParse       pyparsing.Dict-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Each pyparsing.Each-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Each.__str__ pyparsing.Each-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParseExpression.append       pyparsing.ParseExpression-class.html#append
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Each.parseImpl       pyparsing.Each-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.Each.__init__        pyparsing.Each-class.html#__init__
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParseExpression.leaveWhitespace      pyparsing.ParseExpression-class.html#leaveWhitespace
-pyparsing.ParseExpression.__getitem__  pyparsing.ParseExpression-class.html#__getitem__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParseExpression.setResultsName       pyparsing.ParseExpression-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseExpression.streamline   pyparsing.ParseExpression-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseExpression.validate     pyparsing.ParseExpression-class.html#validate
-pyparsing.ParseExpression.copy pyparsing.ParseExpression-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseExpression.ignore       pyparsing.ParseExpression-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.Each.checkRecursion  pyparsing.Each-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Empty        pyparsing.Empty-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Empty.__init__       pyparsing.Empty-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParserElement.parseImpl      pyparsing.ParserElement-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.FollowedBy   pyparsing.FollowedBy-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.FollowedBy.__init__  pyparsing.FollowedBy-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.FollowedBy.parseImpl pyparsing.FollowedBy-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Forward      pyparsing.Forward-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.Forward.__str__      pyparsing.Forward-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Forward.__init__     pyparsing.Forward-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.Forward.leaveWhitespace      pyparsing.Forward-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.Forward.streamline   pyparsing.Forward-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.Forward.__lshift__   pyparsing.Forward-class.html#__lshift__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.Forward.validate     pyparsing.Forward-class.html#validate
-pyparsing.Forward.copy pyparsing.Forward-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.Forward.__ilshift__  pyparsing.Forward-class.html#__ilshift__
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.GoToColumn   pyparsing.GoToColumn-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.GoToColumn.__init__  pyparsing.GoToColumn-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.GoToColumn.parseImpl pyparsing.GoToColumn-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.GoToColumn.preParse  pyparsing.GoToColumn-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Group        pyparsing.Group-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Group.__init__       pyparsing.Group-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Group.__slotnames__  pyparsing.Group-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.Group.postParse      pyparsing.Group-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Keyword      pyparsing.Keyword-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Keyword.__init__     pyparsing.Keyword-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.Keyword.setDefaultKeywordChars       pyparsing.Keyword-class.html#setDefaultKeywordChars
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Keyword.parseImpl    pyparsing.Keyword-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.Keyword.DEFAULT_KEYWORD_CHARS        pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.Keyword.copy pyparsing.Keyword-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.LineEnd      pyparsing.LineEnd-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.LineEnd.__init__     pyparsing.LineEnd-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.LineEnd.__slotnames__        pyparsing.LineEnd-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.LineEnd.parseImpl    pyparsing.LineEnd-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.LineStart    pyparsing.LineStart-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.LineStart.__init__   pyparsing.LineStart-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.LineStart.parseImpl  pyparsing.LineStart-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Literal      pyparsing.Literal-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Literal.__init__     pyparsing.Literal-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Literal.__slotnames__        pyparsing.Literal-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Literal.parseImpl    pyparsing.Literal-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.MatchFirst   pyparsing.MatchFirst-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.MatchFirst.__str__   pyparsing.MatchFirst-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParseExpression.append       pyparsing.ParseExpression-class.html#append
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.MatchFirst.__slotnames__     pyparsing.MatchFirst-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.MatchFirst.parseImpl pyparsing.MatchFirst-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.MatchFirst.__init__  pyparsing.MatchFirst-class.html#__init__
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParseExpression.leaveWhitespace      pyparsing.ParseExpression-class.html#leaveWhitespace
-pyparsing.ParseExpression.__getitem__  pyparsing.ParseExpression-class.html#__getitem__
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParseExpression.setResultsName       pyparsing.ParseExpression-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseExpression.streamline   pyparsing.ParseExpression-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseExpression.validate     pyparsing.ParseExpression-class.html#validate
-pyparsing.ParseExpression.copy pyparsing.ParseExpression-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseExpression.ignore       pyparsing.ParseExpression-class.html#ignore
-pyparsing.MatchFirst.__ior__   pyparsing.MatchFirst-class.html#__ior__
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.MatchFirst.checkRecursion    pyparsing.MatchFirst-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.NoMatch      pyparsing.NoMatch-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.NoMatch.__init__     pyparsing.NoMatch-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.NoMatch.parseImpl    pyparsing.NoMatch-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.NotAny       pyparsing.NotAny-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.NotAny.__str__       pyparsing.NotAny-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.NotAny.__init__      pyparsing.NotAny-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.NotAny.__slotnames__ pyparsing.NotAny-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.NotAny.parseImpl     pyparsing.NotAny-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.OneOrMore    pyparsing.OneOrMore-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.OneOrMore.__str__    pyparsing.OneOrMore-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.OneOrMore.__slotnames__      pyparsing.OneOrMore-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.OnlyOnce     pyparsing.OnlyOnce-class.html
-pyparsing.OnlyOnce.reset       pyparsing.OnlyOnce-class.html#reset
-pyparsing.OnlyOnce.__call__    pyparsing.OnlyOnce-class.html#__call__
-pyparsing.OnlyOnce.__init__    pyparsing.OnlyOnce-class.html#__init__
-pyparsing.Optional     pyparsing.Optional-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Optional.__str__     pyparsing.Optional-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Optional.__init__    pyparsing.Optional-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Optional.__slotnames__       pyparsing.Optional-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Optional.parseImpl   pyparsing.Optional-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Or   pyparsing.Or-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Or.__str__   pyparsing.Or-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParseExpression.append       pyparsing.ParseExpression-class.html#append
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Or.parseImpl pyparsing.Or-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.Or.__init__  pyparsing.Or-class.html#__init__
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.Or.__ixor__  pyparsing.Or-class.html#__ixor__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParseExpression.leaveWhitespace      pyparsing.ParseExpression-class.html#leaveWhitespace
-pyparsing.ParseExpression.__getitem__  pyparsing.ParseExpression-class.html#__getitem__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParseExpression.setResultsName       pyparsing.ParseExpression-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseExpression.streamline   pyparsing.ParseExpression-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseExpression.validate     pyparsing.ParseExpression-class.html#validate
-pyparsing.ParseExpression.copy pyparsing.ParseExpression-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseExpression.ignore       pyparsing.ParseExpression-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.Or.checkRecursion    pyparsing.Or-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.ParseBaseException   pyparsing.ParseBaseException-class.html
-pyparsing.ParseBaseException.__str__   pyparsing.ParseBaseException-class.html#__str__
-pyparsing.ParseBaseException.__init__  pyparsing.ParseBaseException-class.html#__init__
-pyparsing.ParseBaseException.__getattr__       pyparsing.ParseBaseException-class.html#__getattr__
-pyparsing.ParseBaseException.__dir__   pyparsing.ParseBaseException-class.html#__dir__
-pyparsing.ParseBaseException.markInputline     pyparsing.ParseBaseException-class.html#markInputline
-pyparsing.ParseBaseException.__repr__  pyparsing.ParseBaseException-class.html#__repr__
-pyparsing.ParseBaseException._from_exception   pyparsing.ParseBaseException-class.html#_from_exception
-pyparsing.ParseElementEnhance  pyparsing.ParseElementEnhance-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParseElementEnhance.__init__ pyparsing.ParseElementEnhance-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.ParseException       pyparsing.ParseException-class.html
-pyparsing.ParseBaseException.__str__   pyparsing.ParseBaseException-class.html#__str__
-pyparsing.ParseBaseException.__init__  pyparsing.ParseBaseException-class.html#__init__
-pyparsing.ParseBaseException.__getattr__       pyparsing.ParseBaseException-class.html#__getattr__
-pyparsing.ParseBaseException.__dir__   pyparsing.ParseBaseException-class.html#__dir__
-pyparsing.ParseBaseException.markInputline     pyparsing.ParseBaseException-class.html#markInputline
-pyparsing.ParseBaseException.__repr__  pyparsing.ParseBaseException-class.html#__repr__
-pyparsing.ParseBaseException._from_exception   pyparsing.ParseBaseException-class.html#_from_exception
-pyparsing.ParseExpression      pyparsing.ParseExpression-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseExpression.__str__      pyparsing.ParseExpression-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParseExpression.__init__     pyparsing.ParseExpression-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParserElement.parseImpl      pyparsing.ParserElement-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParseExpression.append       pyparsing.ParseExpression-class.html#append
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParseExpression.leaveWhitespace      pyparsing.ParseExpression-class.html#leaveWhitespace
-pyparsing.ParseExpression.__getitem__  pyparsing.ParseExpression-class.html#__getitem__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParseExpression.setResultsName       pyparsing.ParseExpression-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseExpression.streamline   pyparsing.ParseExpression-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseExpression.validate     pyparsing.ParseExpression-class.html#validate
-pyparsing.ParseExpression.copy pyparsing.ParseExpression-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseExpression.ignore       pyparsing.ParseExpression-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.ParseFatalException  pyparsing.ParseFatalException-class.html
-pyparsing.ParseBaseException.__str__   pyparsing.ParseBaseException-class.html#__str__
-pyparsing.ParseBaseException.__init__  pyparsing.ParseBaseException-class.html#__init__
-pyparsing.ParseBaseException.__getattr__       pyparsing.ParseBaseException-class.html#__getattr__
-pyparsing.ParseBaseException.__dir__   pyparsing.ParseBaseException-class.html#__dir__
-pyparsing.ParseBaseException.markInputline     pyparsing.ParseBaseException-class.html#markInputline
-pyparsing.ParseBaseException.__repr__  pyparsing.ParseBaseException-class.html#__repr__
-pyparsing.ParseBaseException._from_exception   pyparsing.ParseBaseException-class.html#_from_exception
-pyparsing.ParseResults pyparsing.ParseResults-class.html
-pyparsing.ParseResults.haskeys pyparsing.ParseResults-class.html#haskeys
-pyparsing.ParseResults.asXML   pyparsing.ParseResults-class.html#asXML
-pyparsing.ParseResults.dump    pyparsing.ParseResults-class.html#dump
-pyparsing.ParseResults.__str__ pyparsing.ParseResults-class.html#__str__
-pyparsing.ParseResults.pop     pyparsing.ParseResults-class.html#pop
-pyparsing.ParseResults.__radd__        pyparsing.ParseResults-class.html#__radd__
-pyparsing.ParseResults.__getnewargs__  pyparsing.ParseResults-class.html#__getnewargs__
-pyparsing.ParseResults.__init__        pyparsing.ParseResults-class.html#__init__
-pyparsing.ParseResults.__lookup        pyparsing.ParseResults-class.html#__lookup
-pyparsing.ParseResults.__new__ pyparsing.ParseResults-class.html#__new__
-pyparsing.ParseResults.__contains__    pyparsing.ParseResults-class.html#__contains__
-pyparsing.ParseResults.getName pyparsing.ParseResults-class.html#getName
-pyparsing.ParseResults.pprint  pyparsing.ParseResults-class.html#pprint
-pyparsing.ParseResults._asStringList   pyparsing.ParseResults-class.html#_asStringList
-pyparsing.ParseResults.__getattr__     pyparsing.ParseResults-class.html#__getattr__
-pyparsing.ParseResults.append  pyparsing.ParseResults-class.html#append
-pyparsing.ParseResults.itervalues      pyparsing.ParseResults-class.html#itervalues
-pyparsing.ParseResults.__getstate__    pyparsing.ParseResults-class.html#__getstate__
-pyparsing.ParseResults._iterkeys       pyparsing.ParseResults-class.html#_iterkeys
-pyparsing.ParseResults.__len__ pyparsing.ParseResults-class.html#__len__
-pyparsing.ParseResults._iteritems      pyparsing.ParseResults-class.html#_iteritems
-pyparsing.ParseResults.__getitem__     pyparsing.ParseResults-class.html#__getitem__
-pyparsing.ParseResults.get     pyparsing.ParseResults-class.html#get
-pyparsing.ParseResults.keys    pyparsing.ParseResults-class.html#keys
-pyparsing.ParseResults.__iter__        pyparsing.ParseResults-class.html#__iter__
-pyparsing.ParseResults.__add__ pyparsing.ParseResults-class.html#__add__
-pyparsing.ParseResults.iteritems       pyparsing.ParseResults-class.html#iteritems
-pyparsing.ParseResults.__bool__        pyparsing.ParseResults-class.html#__bool__
-pyparsing.ParseResults.copy    pyparsing.ParseResults-class.html#copy
-pyparsing.ParseResults.iterkeys        pyparsing.ParseResults-class.html#iterkeys
-pyparsing.ParseResults.asList  pyparsing.ParseResults-class.html#asList
-pyparsing.ParseResults.extend  pyparsing.ParseResults-class.html#extend
-pyparsing.ParseResults.__delitem__     pyparsing.ParseResults-class.html#__delitem__
-pyparsing.ParseResults.__reversed__    pyparsing.ParseResults-class.html#__reversed__
-pyparsing.ParseResults.__nonzero__     pyparsing.ParseResults-class.html#__nonzero__
-pyparsing.ParseResults._itervalues     pyparsing.ParseResults-class.html#_itervalues
-pyparsing.ParseResults.__setstate__    pyparsing.ParseResults-class.html#__setstate__
-pyparsing.ParseResults.insert  pyparsing.ParseResults-class.html#insert
-pyparsing.ParseResults.__setitem__     pyparsing.ParseResults-class.html#__setitem__
-pyparsing.ParseResults.__iadd__        pyparsing.ParseResults-class.html#__iadd__
-pyparsing.ParseResults.values  pyparsing.ParseResults-class.html#values
-pyparsing.ParseResults.__repr__        pyparsing.ParseResults-class.html#__repr__
-pyparsing.ParseResults.asDict  pyparsing.ParseResults-class.html#asDict
-pyparsing.ParseResults.items   pyparsing.ParseResults-class.html#items
-pyparsing.ParseResults.__dir__ pyparsing.ParseResults-class.html#__dir__
-pyparsing.ParseResults.clear   pyparsing.ParseResults-class.html#clear
-pyparsing.ParseSyntaxException pyparsing.ParseSyntaxException-class.html
-pyparsing.ParseBaseException.__str__   pyparsing.ParseBaseException-class.html#__str__
-pyparsing.ParseBaseException.__init__  pyparsing.ParseBaseException-class.html#__init__
-pyparsing.ParseBaseException.__getattr__       pyparsing.ParseBaseException-class.html#__getattr__
-pyparsing.ParseBaseException.__dir__   pyparsing.ParseBaseException-class.html#__dir__
-pyparsing.ParseBaseException.markInputline     pyparsing.ParseBaseException-class.html#markInputline
-pyparsing.ParseBaseException.__repr__  pyparsing.ParseBaseException-class.html#__repr__
-pyparsing.ParseBaseException._from_exception   pyparsing.ParseBaseException-class.html#_from_exception
-pyparsing.ParserElement        pyparsing.ParserElement-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ParserElement.__init__       pyparsing.ParserElement-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParserElement.parseImpl      pyparsing.ParserElement-class.html#parseImpl
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.PrecededBy   pyparsing.PrecededBy-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.PrecededBy.__init__  pyparsing.PrecededBy-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.PrecededBy.parseImpl pyparsing.PrecededBy-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.QuotedString pyparsing.QuotedString-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.QuotedString.__str__ pyparsing.QuotedString-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.QuotedString.__init__        pyparsing.QuotedString-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.QuotedString.parseImpl       pyparsing.QuotedString-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.RecursiveGrammarException    pyparsing.RecursiveGrammarException-class.html
-pyparsing.RecursiveGrammarException.__str__    pyparsing.RecursiveGrammarException-class.html#__str__
-pyparsing.RecursiveGrammarException.__init__   pyparsing.RecursiveGrammarException-class.html#__init__
-pyparsing.Regex        pyparsing.Regex-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Regex.__str__        pyparsing.Regex-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Regex.__init__       pyparsing.Regex-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Regex.__slotnames__  pyparsing.Regex-class.html#__slotnames__
-pyparsing.Regex.sub    pyparsing.Regex-class.html#sub
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.Regex.compiledREtype pyparsing.Regex.compiledREtype-class.html
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Regex.parseImpl      pyparsing.Regex-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Regex.compiledREtype pyparsing.Regex.compiledREtype-class.html
-pyparsing.Regex.compiledREtype.finditer        pyparsing.Regex.compiledREtype-class.html#finditer
-pyparsing.Regex.compiledREtype.scanner pyparsing.Regex.compiledREtype-class.html#scanner
-pyparsing.Regex.compiledREtype.subn    pyparsing.Regex.compiledREtype-class.html#subn
-pyparsing.Regex.compiledREtype.groupindex      pyparsing.Regex.compiledREtype-class.html#groupindex
-pyparsing.Regex.compiledREtype.findall pyparsing.Regex.compiledREtype-class.html#findall
-pyparsing.Regex.compiledREtype.sub     pyparsing.Regex.compiledREtype-class.html#sub
-pyparsing.Regex.compiledREtype.pattern pyparsing.Regex.compiledREtype-class.html#pattern
-pyparsing.Regex.compiledREtype.split   pyparsing.Regex.compiledREtype-class.html#split
-pyparsing.Regex.compiledREtype.match   pyparsing.Regex.compiledREtype-class.html#match
-pyparsing.Regex.compiledREtype.__deepcopy__    pyparsing.Regex.compiledREtype-class.html#__deepcopy__
-pyparsing.Regex.compiledREtype.groups  pyparsing.Regex.compiledREtype-class.html#groups
-pyparsing.Regex.compiledREtype.search  pyparsing.Regex.compiledREtype-class.html#search
-pyparsing.Regex.compiledREtype.flags   pyparsing.Regex.compiledREtype-class.html#flags
-pyparsing.Regex.compiledREtype.__copy__        pyparsing.Regex.compiledREtype-class.html#__copy__
-pyparsing.SkipTo       pyparsing.SkipTo-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.SkipTo.__init__      pyparsing.SkipTo-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.SkipTo.parseImpl     pyparsing.SkipTo-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.StringEnd    pyparsing.StringEnd-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.StringEnd.__init__   pyparsing.StringEnd-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.StringEnd.parseImpl  pyparsing.StringEnd-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.StringStart  pyparsing.StringStart-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.StringStart.__init__ pyparsing.StringStart-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.StringStart.parseImpl        pyparsing.StringStart-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Suppress     pyparsing.Suppress-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.TokenConverter.__init__      pyparsing.TokenConverter-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Suppress.__slotnames__       pyparsing.Suppress-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.Suppress.postParse   pyparsing.Suppress-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.Suppress.suppress    pyparsing.Suppress-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Token        pyparsing.Token-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Token.__init__       pyparsing.Token-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParserElement.parseImpl      pyparsing.ParserElement-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.TokenConverter       pyparsing.TokenConverter-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParseElementEnhance.__str__  pyparsing.ParseElementEnhance-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.TokenConverter.__init__      pyparsing.TokenConverter-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ParseElementEnhance.parseImpl        pyparsing.ParseElementEnhance-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.White        pyparsing.White-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.White.__init__       pyparsing.White-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.White.__slotnames__  pyparsing.White-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.White.parseImpl      pyparsing.White-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.White.whiteStrs      pyparsing.White-class.html#whiteStrs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.Word pyparsing.Word-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.Word.__str__ pyparsing.Word-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.Word.__init__        pyparsing.Word-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.Word.__slotnames__   pyparsing.Word-class.html#__slotnames__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.Word.parseImpl       pyparsing.Word-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.WordEnd      pyparsing.WordEnd-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.WordEnd.__init__     pyparsing.WordEnd-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.WordEnd.parseImpl    pyparsing.WordEnd-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.WordStart    pyparsing.WordStart-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.WordStart.__init__   pyparsing.WordStart-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.WordStart.parseImpl  pyparsing.WordStart-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.__str__        pyparsing.ParserElement-class.html#__str__
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParserElement.leaveWhitespace        pyparsing.ParserElement-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParserElement.ignore pyparsing.ParserElement-class.html#ignore
-pyparsing.ParserElement.validate       pyparsing.ParserElement-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.streamline     pyparsing.ParserElement-class.html#streamline
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParserElement.checkRecursion pyparsing.ParserElement-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.ZeroOrMore   pyparsing.ZeroOrMore-class.html
-pyparsing.ParserElement._parseCache    pyparsing.ParserElement-class.html#_parseCache
-pyparsing.ParserElement.__ror__        pyparsing.ParserElement-class.html#__ror__
-pyparsing.ZeroOrMore.__str__   pyparsing.ZeroOrMore-class.html#__str__
-pyparsing.ParserElement.resetCache     pyparsing.ParserElement-class.html#resetCache
-pyparsing.ParserElement.__radd__       pyparsing.ParserElement-class.html#__radd__
-pyparsing.ParserElement._parseNoCache  pyparsing.ParserElement-class.html#_parseNoCache
-pyparsing.ParserElement.__rmul__       pyparsing.ParserElement-class.html#__rmul__
-pyparsing.ParserElement.__rsub__       pyparsing.ParserElement-class.html#__rsub__
-pyparsing.ParserElement.inlineLiteralsUsing    pyparsing.ParserElement-class.html#inlineLiteralsUsing
-pyparsing.ParserElement.__and__        pyparsing.ParserElement-class.html#__and__
-pyparsing.ZeroOrMore.__init__  pyparsing.ZeroOrMore-class.html#__init__
-pyparsing.ParserElement.setFailAction  pyparsing.ParserElement-class.html#setFailAction
-pyparsing.ParserElement.transformString        pyparsing.ParserElement-class.html#transformString
-pyparsing.ParserElement.__rand__       pyparsing.ParserElement-class.html#__rand__
-pyparsing.ParserElement.parseString    pyparsing.ParserElement-class.html#parseString
-pyparsing.ParserElement.packrat_cache  pyparsing.ParserElement-class.html#packrat_cache
-pyparsing.ParserElement.__req__        pyparsing.ParserElement-class.html#__req__
-pyparsing.ParserElement.__xor__        pyparsing.ParserElement-class.html#__xor__
-pyparsing.ParserElement.setDefaultWhitespaceChars      pyparsing.ParserElement-class.html#setDefaultWhitespaceChars
-pyparsing.ParserElement._packratEnabled        pyparsing.ParserElement-class.html#_packratEnabled
-pyparsing.ZeroOrMore.parseImpl pyparsing.ZeroOrMore-class.html#parseImpl
-pyparsing.ParserElement.__invert__     pyparsing.ParserElement-class.html#__invert__
-pyparsing.ParserElement.packrat_cache_lock     pyparsing.ParserElement-class.html#packrat_cache_lock
-pyparsing.ParserElement.postParse      pyparsing.ParserElement-class.html#postParse
-pyparsing.ParserElement.__call__       pyparsing.ParserElement-class.html#__call__
-pyparsing.ParserElement.addParseAction pyparsing.ParserElement-class.html#addParseAction
-pyparsing.ParserElement.setWhitespaceChars     pyparsing.ParserElement-class.html#setWhitespaceChars
-pyparsing.ParserElement.split  pyparsing.ParserElement-class.html#split
-pyparsing.ParserElement.__ne__ pyparsing.ParserElement-class.html#__ne__
-pyparsing.ParseElementEnhance.leaveWhitespace  pyparsing.ParseElementEnhance-class.html#leaveWhitespace
-pyparsing.ParserElement.setName        pyparsing.ParserElement-class.html#setName
-pyparsing.ParserElement.matches        pyparsing.ParserElement-class.html#matches
-pyparsing.ParserElement.suppress       pyparsing.ParserElement-class.html#suppress
-pyparsing.ParserElement.enablePackrat  pyparsing.ParserElement-class.html#enablePackrat
-pyparsing.ParserElement.packrat_cache_stats    pyparsing.ParserElement-class.html#packrat_cache_stats
-pyparsing.ParserElement.setResultsName pyparsing.ParserElement-class.html#setResultsName
-pyparsing.ParserElement.parseFile      pyparsing.ParserElement-class.html#parseFile
-pyparsing.ParserElement.addCondition   pyparsing.ParserElement-class.html#addCondition
-pyparsing.ParseElementEnhance.streamline       pyparsing.ParseElementEnhance-class.html#streamline
-pyparsing.ParserElement.__or__ pyparsing.ParserElement-class.html#__or__
-pyparsing.ParserElement.__add__        pyparsing.ParserElement-class.html#__add__
-pyparsing.ParserElement.__sub__        pyparsing.ParserElement-class.html#__sub__
-pyparsing.ParserElement.tryParse       pyparsing.ParserElement-class.html#tryParse
-pyparsing.ParseElementEnhance.validate pyparsing.ParseElementEnhance-class.html#validate
-pyparsing.ParserElement.copy   pyparsing.ParserElement-class.html#copy
-pyparsing.ParserElement.__eq__ pyparsing.ParserElement-class.html#__eq__
-pyparsing.ParserElement.__rxor__       pyparsing.ParserElement-class.html#__rxor__
-pyparsing.ParserElement.runTests       pyparsing.ParserElement-class.html#runTests
-pyparsing.ParserElement.DEFAULT_WHITE_CHARS    pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS
-pyparsing.ParserElement.parseWithTabs  pyparsing.ParserElement-class.html#parseWithTabs
-pyparsing.ParserElement.searchString   pyparsing.ParserElement-class.html#searchString
-pyparsing.ParserElement.scanString     pyparsing.ParserElement-class.html#scanString
-pyparsing.ParserElement.setParseAction pyparsing.ParserElement-class.html#setParseAction
-pyparsing.ParserElement.preParse       pyparsing.ParserElement-class.html#preParse
-pyparsing.ParserElement.setDebug       pyparsing.ParserElement-class.html#setDebug
-pyparsing.ParserElement.__rne__        pyparsing.ParserElement-class.html#__rne__
-pyparsing.ParserElement.setBreak       pyparsing.ParserElement-class.html#setBreak
-pyparsing.ParseElementEnhance.ignore   pyparsing.ParseElementEnhance-class.html#ignore
-pyparsing.ParserElement.setDebugActions        pyparsing.ParserElement-class.html#setDebugActions
-pyparsing.ParserElement.__mul__        pyparsing.ParserElement-class.html#__mul__
-pyparsing.ParserElement.__repr__       pyparsing.ParserElement-class.html#__repr__
-pyparsing.ParseElementEnhance.checkRecursion   pyparsing.ParseElementEnhance-class.html#checkRecursion
-pyparsing.ParserElement.__hash__       pyparsing.ParserElement-class.html#__hash__
-pyparsing.ParserElement.canParseNext   pyparsing.ParserElement-class.html#canParseNext
-pyparsing.ParserElement._parse pyparsing.ParserElement-class.html#_parse
-pyparsing.ParserElement._skipIgnorables        pyparsing.ParserElement-class.html#_skipIgnorables
-pyparsing.ParserElement._literalStringClass    pyparsing.Literal-class.html
-pyparsing.ParserElement.verbose_stacktrace     pyparsing.ParserElement-class.html#verbose_stacktrace
-pyparsing.pyparsing_common     pyparsing.pyparsing_common-class.html
-pyparsing.pyparsing_common.fnumber     pyparsing.pyparsing_common-class.html#fnumber
-pyparsing.pyparsing_common.comma_separated_list        pyparsing.pyparsing_common-class.html#comma_separated_list
-pyparsing.pyparsing_common.stripHTMLTags       pyparsing.pyparsing_common-class.html#stripHTMLTags
-pyparsing.pyparsing_common._commasepitem       pyparsing.pyparsing_common-class.html#_commasepitem
-pyparsing.pyparsing_common._mixed_ipv6_address pyparsing.pyparsing_common-class.html#_mixed_ipv6_address
-pyparsing.pyparsing_common.hex_integer pyparsing.pyparsing_common-class.html#hex_integer
-pyparsing.pyparsing_common.number      pyparsing.pyparsing_common-class.html#number
-pyparsing.pyparsing_common.convertToInteger    pyparsing.pyparsing_common-class.html#convertToInteger
-pyparsing.pyparsing_common.sci_real    pyparsing.pyparsing_common-class.html#sci_real
-pyparsing.pyparsing_common.uuid        pyparsing.pyparsing_common-class.html#uuid
-pyparsing.pyparsing_common.convertToFloat      pyparsing.pyparsing_common-class.html#convertToFloat
-pyparsing.pyparsing_common.convertToDate       pyparsing.pyparsing_common-class.html#convertToDate
-pyparsing.pyparsing_common.downcaseTokens      pyparsing.pyparsing_common-class.html#downcaseTokens
-pyparsing.pyparsing_common.convertToDatetime   pyparsing.pyparsing_common-class.html#convertToDatetime
-pyparsing.pyparsing_common.fraction    pyparsing.pyparsing_common-class.html#fraction
-pyparsing.pyparsing_common._full_ipv6_address  pyparsing.pyparsing_common-class.html#_full_ipv6_address
-pyparsing.pyparsing_common.signed_integer      pyparsing.pyparsing_common-class.html#signed_integer
-pyparsing.pyparsing_common.real        pyparsing.pyparsing_common-class.html#real
-pyparsing.pyparsing_common.mac_address pyparsing.pyparsing_common-class.html#mac_address
-pyparsing.pyparsing_common.iso8601_date        pyparsing.pyparsing_common-class.html#iso8601_date
-pyparsing.pyparsing_common.ipv4_address        pyparsing.pyparsing_common-class.html#ipv4_address
-pyparsing.pyparsing_common.integer     pyparsing.pyparsing_common-class.html#integer
-pyparsing.pyparsing_common._ipv6_part  pyparsing.pyparsing_common-class.html#_ipv6_part
-pyparsing.pyparsing_common.iso8601_datetime    pyparsing.pyparsing_common-class.html#iso8601_datetime
-pyparsing.pyparsing_common.identifier  pyparsing.pyparsing_common-class.html#identifier
-pyparsing.pyparsing_common.upcaseTokens        pyparsing.pyparsing_common-class.html#upcaseTokens
-pyparsing.pyparsing_common._short_ipv6_address pyparsing.pyparsing_common-class.html#_short_ipv6_address
-pyparsing.pyparsing_common.ipv6_address        pyparsing.pyparsing_common-class.html#ipv6_address
-pyparsing.pyparsing_common.mixed_integer       pyparsing.pyparsing_common-class.html#mixed_integer
-pyparsing.pyparsing_common._html_stripper      pyparsing.pyparsing_common-class.html#_html_stripper
-pyparsing.pyparsing_unicode    pyparsing.pyparsing_unicode-class.html
-pyparsing.pyparsing_unicode.CJK        pyparsing.pyparsing_unicode.CJK-class.html
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.pyparsing_unicode.Latin1     pyparsing.pyparsing_unicode.Latin1-class.html
-pyparsing.pyparsing_unicode.Chinese    pyparsing.pyparsing_unicode.Chinese-class.html
-pyparsing.pyparsing_unicode.Cyrillic   pyparsing.pyparsing_unicode.Cyrillic-class.html
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Japanese   pyparsing.pyparsing_unicode.Japanese-class.html
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Greek      pyparsing.pyparsing_unicode.Greek-class.html
-pyparsing.pyparsing_unicode._ranges    pyparsing.pyparsing_unicode-class.html#_ranges
-pyparsing.pyparsing_unicode.Hebrew     pyparsing.pyparsing_unicode.Hebrew-class.html
-pyparsing.pyparsing_unicode.Devanagari pyparsing.pyparsing_unicode.Devanagari-class.html
-pyparsing.pyparsing_unicode.Arabic     pyparsing.pyparsing_unicode.Arabic-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.pyparsing_unicode.Korean     pyparsing.pyparsing_unicode.Korean-class.html
-pyparsing.pyparsing_unicode.Thai       pyparsing.pyparsing_unicode.Thai-class.html
-pyparsing.pyparsing_unicode.Arabic     pyparsing.pyparsing_unicode.Arabic-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Arabic._ranges     pyparsing.pyparsing_unicode.Arabic-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.CJK        pyparsing.pyparsing_unicode.CJK-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.CJK._ranges        pyparsing.pyparsing_unicode.CJK-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Chinese    pyparsing.pyparsing_unicode.Chinese-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Chinese._ranges    pyparsing.pyparsing_unicode.Chinese-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Cyrillic   pyparsing.pyparsing_unicode.Cyrillic-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Cyrillic._ranges   pyparsing.pyparsing_unicode.Cyrillic-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Devanagari pyparsing.pyparsing_unicode.Devanagari-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Devanagari._ranges pyparsing.pyparsing_unicode.Devanagari-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Greek      pyparsing.pyparsing_unicode.Greek-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Greek._ranges      pyparsing.pyparsing_unicode.Greek-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Hebrew     pyparsing.pyparsing_unicode.Hebrew-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Hebrew._ranges     pyparsing.pyparsing_unicode.Hebrew-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Japanese   pyparsing.pyparsing_unicode.Japanese-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Japanese.Kanji     pyparsing.pyparsing_unicode.Japanese.Kanji-class.html
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Japanese.Hiragana  pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html
-pyparsing.pyparsing_unicode.Japanese.Katakana  pyparsing.pyparsing_unicode.Japanese.Katakana-class.html
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.pyparsing_unicode.Japanese._ranges   pyparsing.pyparsing_unicode.Japanese-class.html#_ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana  pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges  pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Japanese.Kanji     pyparsing.pyparsing_unicode.Japanese.Kanji-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges     pyparsing.pyparsing_unicode.Japanese.Kanji-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Japanese.Katakana  pyparsing.pyparsing_unicode.Japanese.Katakana-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges  pyparsing.pyparsing_unicode.Japanese.Katakana-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Korean     pyparsing.pyparsing_unicode.Korean-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Korean._ranges     pyparsing.pyparsing_unicode.Korean-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Latin1     pyparsing.pyparsing_unicode.Latin1-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Latin1._ranges     pyparsing.pyparsing_unicode.Latin1-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.pyparsing_unicode.Thai       pyparsing.pyparsing_unicode.Thai-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.pyparsing_unicode.Thai._ranges       pyparsing.pyparsing_unicode.Thai-class.html#_ranges
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
-pyparsing.unicode_set  pyparsing.unicode_set-class.html
-pyparsing.unicode_set.alphas   pyparsing.unicode_set-class.html#alphas
-pyparsing.unicode_set.printables       pyparsing.unicode_set-class.html#printables
-pyparsing.unicode_set._ranges  pyparsing.unicode_set-class.html#_ranges
-pyparsing.unicode_set.alphanums        pyparsing.unicode_set-class.html#alphanums
-pyparsing.unicode_set.nums     pyparsing.unicode_set-class.html#nums
diff --git a/htmldoc/class-tree.html b/htmldoc/class-tree.html
deleted file mode 100644 (file)
index 6cea34b..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Class Hierarchy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<center><b>
- [ <a href="module-tree.html">Module Hierarchy</a>
- | <a href="class-tree.html">Class Hierarchy</a> ]
-</b></center><br />
-<h1 class="epydoc">Class Hierarchy</h1>
-<ul class="nomargin-top">
-    <li> <strong class="uidlink">object</strong>:
-      <em class="summary">The most base type</em>
-    <ul>
-    <li> <strong class="uidlink">exceptions.BaseException</strong>:
-      <em class="summary">Common base class for all exceptions</em>
-    <ul>
-    <li> <strong class="uidlink">exceptions.Exception</strong>:
-      <em class="summary">Common base class for all non-exit exceptions.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseBaseException-class.html">pyparsing.ParseBaseException</a></strong>:
-      <em class="summary">base exception class for all parsing runtime exceptions</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseException-class.html">pyparsing.ParseException</a></strong>:
-      <em class="summary">Exception thrown when parse expressions don't match class; 
-        supported attributes by name are:</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseFatalException-class.html">pyparsing.ParseFatalException</a></strong>:
-      <em class="summary">user-throwable exception thrown when inconsistent parse content is 
-        found; stops all parsing immediately</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseSyntaxException-class.html">pyparsing.ParseSyntaxException</a></strong>:
-      <em class="summary">just like <a href="pyparsing.ParseFatalException-class.html" 
-        class="link">ParseFatalException</a>, but thrown internally when an
-        ErrorStop ('-' operator) indicates that parsing is to stop 
-        immediately because an unbacktrackable syntax error has been found</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.RecursiveGrammarException-class.html">pyparsing.RecursiveGrammarException</a></strong>:
-      <em class="summary">exception thrown by <a 
-        href="pyparsing.ParserElement-class.html#validate" 
-        class="link">ParserElement.validate</a> if the grammar could be 
-        improperly recursive</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.OnlyOnce-class.html">pyparsing.OnlyOnce</a></strong>:
-      <em class="summary">Wrapper for parse actions, to ensure they are only called once.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseResults-class.html">pyparsing.ParseResults</a></strong>:
-      <em class="summary">Structured parse results, to provide multiple means of access to 
-        the parsed data:</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.ParserElement-class.html">pyparsing.ParserElement</a></strong>:
-      <em class="summary">Abstract base level parser element class.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseElementEnhance-class.html">pyparsing.ParseElementEnhance</a></strong>:
-      <em class="summary">Abstract subclass of <code>ParserElement</code>, for combining and 
-        post-processing parsed tokens.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.FollowedBy-class.html">pyparsing.FollowedBy</a></strong>:
-      <em class="summary">Lookahead matching of the given parse expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Forward-class.html">pyparsing.Forward</a></strong>:
-      <em class="summary">Forward declaration of an expression to be defined later - used for
-        recursive grammars, such as algebraic infix notation.</em>
-    <ul>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.NotAny-class.html">pyparsing.NotAny</a></strong>:
-      <em class="summary">Lookahead to disallow matching with the given parse expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Optional-class.html">pyparsing.Optional</a></strong>:
-      <em class="summary">Optional matching of the given expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.PrecededBy-class.html">pyparsing.PrecededBy</a></strong>:
-      <em class="summary">Lookbehind matching of the given parse expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.SkipTo-class.html">pyparsing.SkipTo</a></strong>:
-      <em class="summary">Token for skipping over all undefined text until the matched 
-        expression is found.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.TokenConverter-class.html">pyparsing.TokenConverter</a></strong>:
-      <em class="summary">Abstract subclass of <code>ParseExpression</code>, for converting 
-        parsed results.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.Combine-class.html">pyparsing.Combine</a></strong>:
-      <em class="summary">Converter to concatenate all matching tokens to a single string.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Dict-class.html">pyparsing.Dict</a></strong>:
-      <em class="summary">Converter to return a repetitive expression as a list, but also as 
-        a dictionary.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Group-class.html">pyparsing.Group</a></strong>:
-      <em class="summary">Converter to return the matched tokens as a list - useful for 
-        returning tokens of <code><a href="pyparsing.ZeroOrMore-class.html"
-        class="link">ZeroOrMore</a></code> and <code><a 
-        href="pyparsing.OneOrMore-class.html" 
-        class="link">OneOrMore</a></code> expressions.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Suppress-class.html">pyparsing.Suppress</a></strong>:
-      <em class="summary">Converter for ignoring the results of a parsed expression.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink">pyparsing._MultipleMatch</strong>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.OneOrMore-class.html">pyparsing.OneOrMore</a></strong>:
-      <em class="summary">Repetition of one or more of the given expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.ZeroOrMore-class.html">pyparsing.ZeroOrMore</a></strong>:
-      <em class="summary">Optional repetition of zero or more of the given expression.</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.ParseExpression-class.html">pyparsing.ParseExpression</a></strong>:
-      <em class="summary">Abstract subclass of ParserElement, for combining and 
-        post-processing parsed tokens.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.And-class.html">pyparsing.And</a></strong>:
-      <em class="summary">Requires all given <code>ParseExpression</code>s to be found in the
-        given order.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Each-class.html">pyparsing.Each</a></strong>:
-      <em class="summary">Requires all given <code>ParseExpression</code>s to be found, but 
-        in any order.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.MatchFirst-class.html">pyparsing.MatchFirst</a></strong>:
-      <em class="summary">Requires that at least one <code>ParseExpression</code> is found.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Or-class.html">pyparsing.Or</a></strong>:
-      <em class="summary">Requires that at least one <code>ParseExpression</code> is found.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Token-class.html">pyparsing.Token</a></strong>:
-      <em class="summary">Abstract <code>ParserElement</code> subclass, for defining atomic 
-        matching patterns.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.CharsNotIn-class.html">pyparsing.CharsNotIn</a></strong>:
-      <em class="summary">Token for matching words composed of characters <i>not</i> in a 
-        given set (will include whitespace in matched characters if not 
-        listed in the provided exclusion set - see example).</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.CloseMatch-class.html">pyparsing.CloseMatch</a></strong>:
-      <em class="summary">A variation on <a href="pyparsing.Literal-class.html" class="link" 
-        onclick="show_private();">Literal</a> which matches 
-        &quot;close&quot; matches, that is, strings with at most 'n' 
-        mismatching characters.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Empty-class.html">pyparsing.Empty</a></strong>:
-      <em class="summary">An empty token, will always match.</em>
-    <ul>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Keyword-class.html">pyparsing.Keyword</a></strong>:
-      <em class="summary">Token to exactly match a specified string as a keyword, that is, it
-        must be immediately followed by a non-keyword character.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.CaselessKeyword-class.html">pyparsing.CaselessKeyword</a></strong>:
-      <em class="summary">Caseless version of <a href="pyparsing.Keyword-class.html" 
-        class="link">Keyword</a>.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Literal-class.html" onclick="show_private();">pyparsing.Literal</a></strong>:
-      <em class="summary">Token to exactly match a specified string.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.CaselessLiteral-class.html">pyparsing.CaselessLiteral</a></strong>:
-      <em class="summary">Token to match a specified string, ignoring case of letters.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.NoMatch-class.html">pyparsing.NoMatch</a></strong>:
-      <em class="summary">A token that will never match.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.QuotedString-class.html">pyparsing.QuotedString</a></strong>:
-      <em class="summary">Token for matching strings that are delimited by quoting 
-        characters.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Regex-class.html">pyparsing.Regex</a></strong>:
-      <em class="summary">Token for matching strings that match a given regular expression.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.White-class.html">pyparsing.White</a></strong>:
-      <em class="summary">Special matching class for matching whitespace.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Word-class.html">pyparsing.Word</a></strong>:
-      <em class="summary">Token for matching words composed of allowed character sets.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.Char-class.html">pyparsing.Char</a></strong>:
-      <em class="summary">A short-cut class for defining <code>Word(characters, 
-        exact=1)</code>, when defining a match of any single character in a
-        string of characters.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink">pyparsing._PositionToken</strong>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.GoToColumn-class.html">pyparsing.GoToColumn</a></strong>:
-      <em class="summary">Token to advance to a specific column of input text; useful for 
-        tabular report scraping.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.LineEnd-class.html">pyparsing.LineEnd</a></strong>:
-      <em class="summary">Matches if current position is at the end of a line within the 
-        parse string</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.LineStart-class.html">pyparsing.LineStart</a></strong>:
-      <em class="summary">Matches if current position is at the beginning of a line within 
-        the parse string</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.StringEnd-class.html">pyparsing.StringEnd</a></strong>:
-      <em class="summary">Matches if current position is at the end of the parse string</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.StringStart-class.html">pyparsing.StringStart</a></strong>:
-      <em class="summary">Matches if current position is at the beginning of the parse string</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.WordEnd-class.html">pyparsing.WordEnd</a></strong>:
-      <em class="summary">Matches if the current position is at the end of a Word, and is not
-        followed by any character in a given set of <code>wordChars</code> 
-        (default=<code>printables</code>).</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.WordStart-class.html">pyparsing.WordStart</a></strong>:
-      <em class="summary">Matches if the current position is at the beginning of a Word, and 
-        is not preceded by any character in a given set of 
-        <code>wordChars</code> (default=<code>printables</code>).</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.Regex.compiledREtype-class.html">pyparsing.Regex.compiledREtype</a></strong>:
-      <em class="summary">Compiled regular expression objects</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_common-class.html">pyparsing.pyparsing_common</a></strong>:
-      <em class="summary">Here are some common low-level expressions that may be useful in 
-        jump-starting parser development:</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.unicode_set-class.html">pyparsing.unicode_set</a></strong>
-    <ul>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Arabic-class.html">pyparsing.pyparsing_unicode.Arabic</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.CJK-class.html">pyparsing.pyparsing_unicode.CJK</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Chinese-class.html">pyparsing.pyparsing_unicode.Chinese</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Cyrillic-class.html">pyparsing.pyparsing_unicode.Cyrillic</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Devanagari-class.html">pyparsing.pyparsing_unicode.Devanagari</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Greek-class.html">pyparsing.pyparsing_unicode.Greek</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Hebrew-class.html">pyparsing.pyparsing_unicode.Hebrew</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html">pyparsing.pyparsing_unicode.Japanese.Hiragana</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Japanese-class.html">pyparsing.pyparsing_unicode.Japanese</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html">pyparsing.pyparsing_unicode.Japanese.Kanji</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html">pyparsing.pyparsing_unicode.Japanese.Katakana</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Korean-class.html">pyparsing.pyparsing_unicode.Korean</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Latin1-class.html">pyparsing.pyparsing_unicode.Latin1</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode.Thai-class.html">pyparsing.pyparsing_unicode.Thai</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pyparsing.pyparsing_unicode-class.html">pyparsing.pyparsing_unicode</a></strong>
-    </li>
-    </ul>
-    </li>
-</ul>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/crarr.png b/htmldoc/crarr.png
deleted file mode 100644 (file)
index 26b43c5..0000000
Binary files a/htmldoc/crarr.png and /dev/null differ
diff --git a/htmldoc/epydoc.css b/htmldoc/epydoc.css
deleted file mode 100644 (file)
index 86d4170..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-/* Epydoc CSS Stylesheet
- *
- * This stylesheet can be used to customize the appearance of epydoc's
- * HTML output.
- *
- */
-
-/* Default Colors & Styles
- *   - Set the default foreground & background color with 'body'; and 
- *     link colors with 'a:link' and 'a:visited'.
- *   - Use bold for decision list terms.
- *   - The heading styles defined here are used for headings *within*
- *     docstring descriptions.  All headings used by epydoc itself use
- *     either class='epydoc' or class='toc' (CSS styles for both
- *     defined below).
- */
-body                        { background: #ffffff; color: #000000; }
-p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
-a:link                      { color: #0000ff; }
-a:visited                   { color: #204080; }
-dt                          { font-weight: bold; }
-h1                          { font-size: +140%; font-style: italic;
-                              font-weight: bold; }
-h2                          { font-size: +125%; font-style: italic;
-                              font-weight: bold; }
-h3                          { font-size: +110%; font-style: italic;
-                              font-weight: normal; }
-code                        { font-size: 100%; }
-/* N.B.: class, not pseudoclass */
-a.link                      { font-family: monospace; }
-/* Page Header & Footer
- *   - The standard page header consists of a navigation bar (with
- *     pointers to standard pages such as 'home' and 'trees'); a
- *     breadcrumbs list, which can be used to navigate to containing
- *     classes or modules; options links, to show/hide private
- *     variables and to show/hide frames; and a page title (using
- *     <h1>).  The page title may be followed by a link to the
- *     corresponding source code (using 'span.codelink').
- *   - The footer consists of a navigation bar, a timestamp, and a
- *     pointer to epydoc's homepage.
- */ 
-h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
-h2.epydoc                   { font-size: +130%; font-weight: bold; }
-h3.epydoc                   { font-size: +115%; font-weight: bold;
-                              margin-top: 0.2em; }
-td h3.epydoc                { font-size: +115%; font-weight: bold;
-                              margin-bottom: 0; }
-table.navbar                { background: #a0c0ff; color: #000000;
-                              border: 2px groove #c0d0d0; }
-table.navbar table          { color: #000000; }
-th.navbar-select            { background: #70b0ff;
-                              color: #000000; } 
-table.navbar a              { text-decoration: none; }  
-table.navbar a:link         { color: #0000ff; }
-table.navbar a:visited      { color: #204080; }
-span.breadcrumbs            { font-size: 85%; font-weight: bold; }
-span.options                { font-size: 70%; }
-span.codelink               { font-size: 85%; }
-td.footer                   { font-size: 85%; }
-
-/* Table Headers
- *   - Each summary table and details section begins with a 'header'
- *     row.  This row contains a section title (marked by
- *     'span.table-header') as well as a show/hide private link
- *     (marked by 'span.options', defined above).
- *   - Summary tables that contain user-defined groups mark those
- *     groups using 'group header' rows.
- */
-td.table-header             { background: #70b0ff; color: #000000;
-                              border: 1px solid #608090; }
-td.table-header table       { color: #000000; }
-td.table-header table a:link      { color: #0000ff; }
-td.table-header table a:visited   { color: #204080; }
-span.table-header           { font-size: 120%; font-weight: bold; }
-th.group-header             { background: #c0e0f8; color: #000000;
-                              text-align: left; font-style: italic; 
-                              font-size: 115%; 
-                              border: 1px solid #608090; }
-
-/* Summary Tables (functions, variables, etc)
- *   - Each object is described by a single row of the table with
- *     two cells.  The left cell gives the object's type, and is
- *     marked with 'code.summary-type'.  The right cell gives the
- *     object's name and a summary description.
- *   - CSS styles for the table's header and group headers are
- *     defined above, under 'Table Headers'
- */
-table.summary               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin-bottom: 0.5em; }
-td.summary                  { border: 1px solid #608090; }
-code.summary-type           { font-size: 85%; }
-table.summary a:link        { color: #0000ff; }
-table.summary a:visited     { color: #204080; }
-
-
-/* Details Tables (functions, variables, etc)
- *   - Each object is described in its own div.
- *   - A single-row summary table w/ table-header is used as
- *     a header for each details section (CSS style for table-header
- *     is defined above, under 'Table Headers').
- */
-table.details               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin: .2em 0 0 0; }
-table.details table         { color: #000000; }
-table.details a:link        { color: #0000ff; }
-table.details a:visited     { color: #204080; }
-
-/* Fields */
-dl.fields                   { margin-left: 2em; margin-top: 1em;
-                              margin-bottom: 1em; }
-dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
-dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
-div.fields                  { margin-left: 2em; }
-div.fields p                { margin-bottom: 0.5em; }
-
-/* Index tables (identifier index, term index, etc)
- *   - link-index is used for indices containing lists of links
- *     (namely, the identifier index & term index).
- *   - index-where is used in link indices for the text indicating
- *     the container/source for each link.
- *   - metadata-index is used for indices containing metadata
- *     extracted from fields (namely, the bug index & todo index).
- */
-table.link-index            { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; }
-td.link-index               { border-width: 0px; }
-table.link-index a:link     { color: #0000ff; }
-table.link-index a:visited  { color: #204080; }
-span.index-where            { font-size: 70%; }
-table.metadata-index        { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; 
-                              margin: .2em 0 0 0; }
-td.metadata-index           { border-width: 1px; border-style: solid; }
-table.metadata-index a:link { color: #0000ff; }
-table.metadata-index a:visited  { color: #204080; }
-
-/* Function signatures
- *   - sig* is used for the signature in the details section.
- *   - .summary-sig* is used for the signature in the summary 
- *     table, and when listing property accessor functions.
- * */
-.sig-name                   { color: #006080; }
-.sig-arg                    { color: #008060; }
-.sig-default                { color: #602000; }
-.summary-sig                { font-family: monospace; }
-.summary-sig-name           { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:link
-                            { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:visited
-                            { color: #006080; font-weight: bold; }
-.summary-sig-arg            { color: #006040; }
-.summary-sig-default        { color: #501800; }
-
-/* Subclass list
- */
-ul.subclass-list { display: inline; }
-ul.subclass-list li { display: inline; }
-
-/* To render variables, classes etc. like functions */
-table.summary .summary-name { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-     a.summary-name:link    { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-    a.summary-name:visited  { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-
-/* Variable values
- *   - In the 'variable details' sections, each varaible's value is
- *     listed in a 'pre.variable' box.  The width of this box is
- *     restricted to 80 chars; if the value's repr is longer than
- *     this it will be wrapped, using a backslash marked with
- *     class 'variable-linewrap'.  If the value's repr is longer
- *     than 3 lines, the rest will be ellided; and an ellipsis
- *     marker ('...' marked with 'variable-ellipsis') will be used.
- *   - If the value is a string, its quote marks will be marked
- *     with 'variable-quote'.
- *   - If the variable is a regexp, it is syntax-highlighted using
- *     the re* CSS classes.
- */
-pre.variable                { padding: .5em; margin: 0;
-                              background: #dce4ec; color: #000000;
-                              border: 1px solid #708890; }
-.variable-linewrap          { color: #604000; font-weight: bold; }
-.variable-ellipsis          { color: #604000; font-weight: bold; }
-.variable-quote             { color: #604000; font-weight: bold; }
-.variable-group             { color: #008000; font-weight: bold; }
-.variable-op                { color: #604000; font-weight: bold; }
-.variable-string            { color: #006030; }
-.variable-unknown           { color: #a00000; font-weight: bold; }
-.re                         { color: #000000; }
-.re-char                    { color: #006030; }
-.re-op                      { color: #600000; }
-.re-group                   { color: #003060; }
-.re-ref                     { color: #404040; }
-
-/* Base tree
- *   - Used by class pages to display the base class hierarchy.
- */
-pre.base-tree               { font-size: 80%; margin: 0; }
-
-/* Frames-based table of contents headers
- *   - Consists of two frames: one for selecting modules; and
- *     the other listing the contents of the selected module.
- *   - h1.toc is used for each frame's heading
- *   - h2.toc is used for subheadings within each frame.
- */
-h1.toc                      { text-align: center; font-size: 105%;
-                              margin: 0; font-weight: bold;
-                              padding: 0; }
-h2.toc                      { font-size: 100%; font-weight: bold; 
-                              margin: 0.5em 0 0 -0.3em; }
-
-/* Syntax Highlighting for Source Code
- *   - doctest examples are displayed in a 'pre.py-doctest' block.
- *     If the example is in a details table entry, then it will use
- *     the colors specified by the 'table pre.py-doctest' line.
- *   - Source code listings are displayed in a 'pre.py-src' block.
- *     Each line is marked with 'span.py-line' (used to draw a line
- *     down the left margin, separating the code from the line
- *     numbers).  Line numbers are displayed with 'span.py-lineno'.
- *     The expand/collapse block toggle button is displayed with
- *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
- *     modify the font size of the text.)
- *   - If a source code page is opened with an anchor, then the
- *     corresponding code block will be highlighted.  The code
- *     block's header is highlighted with 'py-highlight-hdr'; and
- *     the code block's body is highlighted with 'py-highlight'.
- *   - The remaining py-* classes are used to perform syntax
- *     highlighting (py-string for string literals, py-name for names,
- *     etc.)
- */
-pre.py-doctest              { padding: .5em; margin: 1em;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #708890; }
-table pre.py-doctest        { background: #dce4ec;
-                              color: #000000; }
-pre.py-src                  { border: 2px solid #000000; 
-                              background: #f0f0f0; color: #000000; }
-.py-line                    { border-left: 2px solid #000000; 
-                              margin-left: .2em; padding-left: .4em; }
-.py-lineno                  { font-style: italic; font-size: 90%;
-                              padding-left: .5em; }
-a.py-toggle                 { text-decoration: none; }
-div.py-highlight-hdr        { border-top: 2px solid #000000;
-                              border-bottom: 2px solid #000000;
-                              background: #d8e8e8; }
-div.py-highlight            { border-bottom: 2px solid #000000;
-                              background: #d0e0e0; }
-.py-prompt                  { color: #005050; font-weight: bold;}
-.py-more                    { color: #005050; font-weight: bold;}
-.py-string                  { color: #006030; }
-.py-comment                 { color: #003060; }
-.py-keyword                 { color: #600000; }
-.py-output                  { color: #404040; }
-.py-name                    { color: #000050; }
-.py-name:link               { color: #000050 !important; }
-.py-name:visited            { color: #000050 !important; }
-.py-number                  { color: #005000; }
-.py-defname                 { color: #000060; font-weight: bold; }
-.py-def-name                { color: #000060; font-weight: bold; }
-.py-base-class              { color: #000060; }
-.py-param                   { color: #000060; }
-.py-docstring               { color: #006030; }
-.py-decorator               { color: #804020; }
-/* Use this if you don't want links to names underlined: */
-/*a.py-name                   { text-decoration: none; }*/
-
-/* Graphs & Diagrams
- *   - These CSS styles are used for graphs & diagrams generated using
- *     Graphviz dot.  'img.graph-without-title' is used for bare
- *     diagrams (to remove the border created by making the image
- *     clickable).
- */
-img.graph-without-title     { border: none; }
-img.graph-with-title        { border: 1px solid #000000; }
-span.graph-title            { font-weight: bold; }
-span.graph-caption          { }
-
-/* General-purpose classes
- *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
- *     is not indented, but whose subsequent lines are.
- *   - The 'nomargin-top' class is used to remove the top margin (e.g.
- *     from lists).  The 'nomargin' class is used to remove both the
- *     top and bottom margin (but not the left or right margin --
- *     for lists, that would cause the bullets to disappear.)
- */
-p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
-                              margin: 0; }
-.nomargin-top               { margin-top: 0; }
-.nomargin                   { margin-top: 0; margin-bottom: 0; }
-
-/* HTML Log */
-div.log-block               { padding: 0; margin: .5em 0 .5em 0;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #000000; }
-div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffb0b0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffffb0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #b0ffb0; color: #000000;
-                              border: 1px solid #000000; }
-h2.log-hdr                  { background: #70b0ff; color: #000000;
-                              margin: 0; padding: 0em 0.5em 0em 0.5em;
-                              border-bottom: 1px solid #000000; font-size: 110%; }
-p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
-tr.opt-changed              { color: #000000; font-weight: bold; }
-tr.opt-default              { color: #606060; }
-pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/htmldoc/epydoc.js b/htmldoc/epydoc.js
deleted file mode 100644 (file)
index e787dbc..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-function toggle_private() {
-        // Search for any private/public links on this page.  Store
-        // their old text in "cmd," so we will know what action to
-        // take; and change their text to the opposite action.
-        var cmd = "?";
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
-                                    "hide&nbsp;private":"show&nbsp;private");
-          }
-        }
-        // Update all DIVs containing private objects.
-        var elts = document.getElementsByTagName("div");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-          else if (elts[i].className == "public") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
-          }
-        }
-        // Update all table rows containing private objects.  Note, we
-        // use "" instead of "block" becaue IE & firefox disagree on what
-        // this should be (block vs table-row), and "" just gives the
-        // default for both browsers.
-        var elts = document.getElementsByTagName("tr");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("li");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
-                                        "none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("ul");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-        }
-        // Set a cookie to remember the current option.
-        document.cookie = "EpydocPrivate="+cmd;
-      }
-function show_private() {
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            if (cmd && cmd.substr(0,4)=="show")
-                toggle_private();
-          }
-        }
-      }
-function getCookie(name) {
-        var dc = document.cookie;
-        var prefix = name + "=";
-        var begin = dc.indexOf("; " + prefix);
-        if (begin == -1) {
-          begin = dc.indexOf(prefix);
-          if (begin != 0) return null;
-        } else
-        { begin += 2; }
-        var end = document.cookie.indexOf(";", begin);
-        if (end == -1)
-        { end = dc.length; }
-        return unescape(dc.substring(begin + prefix.length, end));
-      }
-function setFrame(url1, url2) {
-          parent.frames[1].location.href = url1;
-          parent.frames[2].location.href = url2;
-      }
-function checkCookie() {
-        var cmd=getCookie("EpydocPrivate");
-        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
-            toggle_private();
-      }
-function toggleCallGraph(id) {
-        var elt = document.getElementById(id);
-        if (elt.style.display == "none")
-            elt.style.display = "block";
-        else
-            elt.style.display = "none";
-      }
-function expand(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "-"; }
-}
-
-function collapse(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "+"; }
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) {
-    elt.style.display = "block";
-    
-    var indent = elt.getAttribute("indent");
-    var pad = elt.getAttribute("pad");
-    var s = "<tt class='py-lineno'>";
-    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
-    s += "</tt>";
-    s += "&nbsp;&nbsp;<tt class='py-line'>";
-    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
-    s += "<a href='#' onclick='expand(\"" + id;
-    s += "\");return false'>...</a></tt><br />";
-    elt.innerHTML = s;
-  }
-}
-
-function toggle(id) {
-  elt = document.getElementById(id+"-toggle");
-  if (elt.innerHTML == "-")
-      collapse(id); 
-  else
-      expand(id);
-  return false;
-}
-
-function highlight(id) {
-  var elt = document.getElementById(id+"-def");
-  if (elt) elt.className = "py-highlight-hdr";
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.className = "py-highlight";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) elt.className = "py-highlight";
-}
-
-function num_lines(s) {
-  var n = 1;
-  var pos = s.indexOf("\n");
-  while ( pos > 0) {
-    n += 1;
-    pos = s.indexOf("\n", pos+1);
-  }
-  return n;
-}
-
-// Collapse all blocks that mave more than `min_lines` lines.
-function collapse_all(min_lines) {
-  var elts = document.getElementsByTagName("div");
-  for (var i=0; i<elts.length; i++) {
-    var elt = elts[i];
-    var split = elt.id.indexOf("-");
-    if (split > 0)
-      if (elt.id.substring(split, elt.id.length) == "-expanded")
-        if (num_lines(elt.innerHTML) > min_lines)
-          collapse(elt.id.substring(0, split));
-  }
-}
-
-function expandto(href) {
-  var start = href.indexOf("#")+1;
-  if (start != 0 && start != href.length) {
-    if (href.substring(start, href.length) != "-") {
-      collapse_all(4);
-      pos = href.indexOf(".", start);
-      while (pos != -1) {
-        var id = href.substring(start, pos);
-        expand(id);
-        pos = href.indexOf(".", pos+1);
-      }
-      var id = href.substring(start, href.length);
-      expand(id);
-      highlight(id);
-    }
-  }
-}
-
-function kill_doclink(id) {
-  var parent = document.getElementById(id);
-  parent.removeChild(parent.childNodes.item(0));
-}
-function auto_kill_doclink(ev) {
-  if (!ev) var ev = window.event;
-  if (!this.contains(ev.toElement)) {
-    var parent = document.getElementById(this.parentID);
-    parent.removeChild(parent.childNodes.item(0));
-  }
-}
-
-function doclink(id, name, targets_id) {
-  var elt = document.getElementById(id);
-
-  // If we already opened the box, then destroy it.
-  // (This case should never occur, but leave it in just in case.)
-  if (elt.childNodes.length > 1) {
-    elt.removeChild(elt.childNodes.item(0));
-  }
-  else {
-    // The outer box: relative + inline positioning.
-    var box1 = document.createElement("div");
-    box1.style.position = "relative";
-    box1.style.display = "inline";
-    box1.style.top = 0;
-    box1.style.left = 0;
-  
-    // A shadow for fun
-    var shadow = document.createElement("div");
-    shadow.style.position = "absolute";
-    shadow.style.left = "-1.3em";
-    shadow.style.top = "-1.3em";
-    shadow.style.background = "#404040";
-    
-    // The inner box: absolute positioning.
-    var box2 = document.createElement("div");
-    box2.style.position = "relative";
-    box2.style.border = "1px solid #a0a0a0";
-    box2.style.left = "-.2em";
-    box2.style.top = "-.2em";
-    box2.style.background = "white";
-    box2.style.padding = ".3em .4em .3em .4em";
-    box2.style.fontStyle = "normal";
-    box2.onmouseout=auto_kill_doclink;
-    box2.parentID = id;
-
-    // Get the targets
-    var targets_elt = document.getElementById(targets_id);
-    var targets = targets_elt.getAttribute("targets");
-    var links = "";
-    target_list = targets.split(",");
-    for (var i=0; i<target_list.length; i++) {
-        var target = target_list[i].split("=");
-        links += "<li><a href='" + target[1] + 
-               "' style='text-decoration:none'>" +
-               target[0] + "</a></li>";
-    }
-  
-    // Put it all together.
-    elt.insertBefore(box1, elt.childNodes.item(0));
-    //box1.appendChild(box2);
-    box1.appendChild(shadow);
-    shadow.appendChild(box2);
-    box2.innerHTML =
-        "Which <b>"+name+"</b> do you want to see documentation for?" +
-        "<ul style='margin-bottom: 0;'>" +
-        links + 
-        "<li><a href='#' style='text-decoration:none' " +
-        "onclick='kill_doclink(\""+id+"\");return false;'>"+
-        "<i>None of the above</i></a></li></ul>";
-  }
-  return false;
-}
-
-function get_anchor() {
-          var href = location.href;
-          var start = href.indexOf("#")+1;
-          if ((start != 0) && (start != href.length))
-              return href.substring(start, href.length);
-      }
-function redirect_url(dottedName) {
-          // Scan through each element of the "pages" list, and check
-          // if "name" matches with any of them.
-          for (var i=0; i<pages.length; i++) {
-
-              // Each page has the form "<pagename>-m" or "<pagename>-c";
-              // extract the <pagename> portion & compare it to dottedName.
-              var pagename = pages[i].substring(0, pages[i].length-2);
-              if (pagename == dottedName.substring(0,pagename.length)) {
-
-                  // We've found a page that matches `dottedName`;
-                  // construct its URL, using leftover `dottedName`
-                  // content to form an anchor.
-                  var pagetype = pages[i].charAt(pages[i].length-1);
-                  var url = pagename + ((pagetype=="m")?"-module.html":
-                                                        "-class.html");
-                  if (dottedName.length > pagename.length)
-                      url += "#" + dottedName.substring(pagename.length+1,
-                                                        dottedName.length);
-                  return url;
-              }
-          }
-      }
diff --git a/htmldoc/help.html b/htmldoc/help.html
deleted file mode 100644 (file)
index ac429d9..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Help</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-
-<h1 class="epydoc"> API Documentation </h1>
-
-<p> This document contains the API (Application Programming Interface)
-documentation for pyparsing.  Documentation for the Python
-objects defined by the project is divided into separate pages for each
-package, module, and class.  The API documentation also includes two
-pages containing information about the project as a whole: a trees
-page, and an index page.  </p>
-
-<h2> Object Documentation </h2>
-
-  <p>Each <strong>Package Documentation</strong> page contains: </p>
-  <ul>
-    <li> A description of the package. </li>
-    <li> A list of the modules and sub-packages contained by the
-    package.  </li>
-    <li> A summary of the classes defined by the package. </li>
-    <li> A summary of the functions defined by the package. </li>
-    <li> A summary of the variables defined by the package. </li>
-    <li> A detailed description of each function defined by the
-    package. </li>
-    <li> A detailed description of each variable defined by the
-    package. </li>
-  </ul>
-  
-  <p>Each <strong>Module Documentation</strong> page contains:</p>
-  <ul>
-    <li> A description of the module. </li>
-    <li> A summary of the classes defined by the module. </li>
-    <li> A summary of the functions defined by the module. </li>
-    <li> A summary of the variables defined by the module. </li>
-    <li> A detailed description of each function defined by the
-    module. </li>
-    <li> A detailed description of each variable defined by the
-    module. </li>
-  </ul>
-  
-  <p>Each <strong>Class Documentation</strong> page contains: </p>
-  <ul>
-    <li> A class inheritance diagram. </li>
-    <li> A list of known subclasses. </li>
-    <li> A description of the class. </li>
-    <li> A summary of the methods defined by the class. </li>
-    <li> A summary of the instance variables defined by the class. </li>
-    <li> A summary of the class (static) variables defined by the
-    class. </li> 
-    <li> A detailed description of each method defined by the
-    class. </li>
-    <li> A detailed description of each instance variable defined by the
-    class. </li> 
-    <li> A detailed description of each class (static) variable defined
-    by the class. </li> 
-  </ul>
-
-<h2> Project Documentation </h2>
-
-  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
-  <ul>
-    <li> The <em>module hierarchy</em> lists every package and module, with
-    modules grouped into packages.  At the top level, and within each
-    package, modules and sub-packages are listed alphabetically. </li>
-    <li> The <em>class hierarchy</em> lists every class, grouped by base
-    class.  If a class has more than one base class, then it will be
-    listed under each base class.  At the top level, and under each base
-    class, classes are listed alphabetically. </li>
-  </ul>
-  
-  <p> The <strong>Index</strong> page contains indices of terms and
-  identifiers: </p>
-  <ul>
-    <li> The <em>term index</em> lists every term indexed by any object's
-    documentation.  For each term, the index provides links to each
-    place where the term is indexed. </li>
-    <li> The <em>identifier index</em> lists the (short) name of every package,
-    module, class, method, function, variable, and parameter.  For each
-    identifier, the index provides a short description, and a link to
-    its documentation. </li>
-  </ul>
-
-<h2> The Table of Contents </h2>
-
-<p> The table of contents occupies the two frames on the left side of
-the window.  The upper-left frame displays the <em>project
-contents</em>, and the lower-left frame displays the <em>module
-contents</em>: </p>
-
-<table class="help summary" border="1" cellspacing="0" cellpadding="3">
-  <tr style="height: 30%">
-    <td align="center" style="font-size: small">
-       Project<br />Contents<hr />...</td>
-    <td align="center" style="font-size: small" rowspan="2" width="70%">
-      API<br />Documentation<br />Frame<br /><br /><br />
-    </td>
-  </tr>
-  <tr>
-    <td align="center" style="font-size: small">
-      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
-    </td>
-  </tr>
-</table><br />
-
-<p> The <strong>project contents frame</strong> contains a list of all packages
-and modules that are defined by the project.  Clicking on an entry
-will display its contents in the module contents frame.  Clicking on a
-special entry, labeled "Everything," will display the contents of
-the entire project. </p>
-
-<p> The <strong>module contents frame</strong> contains a list of every
-submodule, class, type, exception, function, and variable defined by a
-module or package.  Clicking on an entry will display its
-documentation in the API documentation frame.  Clicking on the name of
-the module, at the top of the frame, will display the documentation
-for the module itself. </p>
-
-<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
-navigation bar can be used to control whether the table of contents is
-displayed or not. </p>
-
-<h2> The Navigation Bar </h2>
-
-<p> A navigation bar is located at the top and bottom of every page.
-It indicates what type of page you are currently viewing, and allows
-you to go to related pages.  The following table describes the labels
-on the navigation bar.  Note that not some labels (such as
-[Parent]) are not displayed on all pages. </p>
-
-<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
-<tr class="summary">
-  <th>Label</th>
-  <th>Highlighted when...</th>
-  <th>Links to...</th>
-</tr>
-  <tr><td valign="top"><strong>[Parent]</strong></td>
-      <td valign="top"><em>(never highlighted)</em></td>
-      <td valign="top"> the parent of the current package </td></tr>
-  <tr><td valign="top"><strong>[Package]</strong></td>
-      <td valign="top">viewing a package</td>
-      <td valign="top">the package containing the current object
-      </td></tr>
-  <tr><td valign="top"><strong>[Module]</strong></td>
-      <td valign="top">viewing a module</td>
-      <td valign="top">the module containing the current object
-      </td></tr> 
-  <tr><td valign="top"><strong>[Class]</strong></td>
-      <td valign="top">viewing a class </td>
-      <td valign="top">the class containing the current object</td></tr>
-  <tr><td valign="top"><strong>[Trees]</strong></td>
-      <td valign="top">viewing the trees page</td>
-      <td valign="top"> the trees page </td></tr>
-  <tr><td valign="top"><strong>[Index]</strong></td>
-      <td valign="top">viewing the index page</td>
-      <td valign="top"> the index page </td></tr>
-  <tr><td valign="top"><strong>[Help]</strong></td>
-      <td valign="top">viewing the help page</td>
-      <td valign="top"> the help page </td></tr>
-</table>
-
-<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
-the top navigation bar can be used to control whether documentation
-for private objects is displayed.  Private objects are usually defined
-as objects whose (short) names begin with a single underscore, but do
-not end with an underscore.  For example, "<code>_x</code>",
-"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
-are private objects; but "<code>re.sub</code>",
-"<code>__init__</code>", and "<code>type_</code>" are not.  However,
-if a module defines the "<code>__all__</code>" variable, then its
-contents are used to decide which objects are private. </p>
-
-<p> A timestamp below the bottom navigation bar indicates when each
-page was last updated. </p>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/identifier-index.html b/htmldoc/identifier-index.html
deleted file mode 100644 (file)
index f400f44..0000000
+++ /dev/null
@@ -1,1518 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Identifier Index</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<table border="0" width="100%">
-<tr valign="bottom"><td>
-<h1 class="epydoc">Identifier Index</h1>
-</td><td>
-[
- <a href="#A">A</a>
-  B
- <a href="#C">C</a>
- <a href="#D">D</a>
- <a href="#E">E</a>
- <a href="#F">F</a>
- <a href="#G">G</a>
- <a href="#H">H</a>
- <a href="#I">I</a>
- <a href="#J">J</a>
- <a href="#K">K</a>
- <a href="#L">L</a>
- <a href="#M">M</a>
- <a href="#N">N</a>
- <a href="#O">O</a>
- <a href="#P">P</a>
- <a href="#Q">Q</a>
- <a href="#R">R</a>
- <a href="#S">S</a>
- <a href="#T">T</a>
- <a href="#U">U</a>
- <a href="#V">V</a>
- <a href="#W">W</a>
-  X
-  Y
- <a href="#Z">Z</a>
- <a href="#_">_</a>
-]
-</td></table>
-<table border="0" width="100%">
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#addCondition">addCondition()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#alphas8bit">alphas8bit</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Arabic-class.html">Arabic</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html">And</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#asDict">asDict()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#alphanums">alphanums</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#anyCloseTag">anyCloseTag</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#asList">asList()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html#alphanums">alphanums()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.unicode_set-class.html">unicode_set</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#anyOpenTag">anyOpenTag</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#asXML">asXML()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#alphas">alphas</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#append">append()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html#alphas">alphas()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.unicode_set-class.html">unicode_set</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#append">append()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.CJK-class.html">CJK</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#convertToInteger">convertToInteger()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessKeyword-class.html">CaselessKeyword</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#clear">clear()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#copy">copy()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessLiteral-class.html">CaselessLiteral</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.CloseMatch-class.html">CloseMatch</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#copy">copy()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Char-class.html">Char</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#col">col()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#copy">copy()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CharsNotIn-class.html">CharsNotIn</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Combine-class.html">Combine</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#copy">copy()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#comma_separated_list">comma_separated_list</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#copy">copy()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Each-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Each-class.html">Each</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#commaSeparatedList">commaSeparatedList</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#countedArray">countedArray()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#commonHTMLEntity">commonHTMLEntity</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#cppStyleComment">cppStyleComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Or-class.html">Or</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#cStyleComment">cStyleComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#convertToDate">convertToDate()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Cyrillic-class.html">Cyrillic</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#convertToDatetime">convertToDatetime()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Chinese-class.html">Chinese</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#convertToFloat">convertToFloat()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#dblQuotedString">dblQuotedString</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#delimitedList">delimitedList()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#downcaseTokens">downcaseTokens()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#dblSlashComment">dblSlashComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Devanagari-class.html">Devanagari</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#downcaseTokens">downcaseTokens()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS">DEFAULT_KEYWORD_CHARS</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Dict-class.html">Dict</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#dump">dump()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#dictOf">dictOf()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Each-class.html">Each</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#empty">empty</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#extend">extend()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Empty-class.html">Empty</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#findall">findall()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#fname">fname</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html">Forward</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#finditer">finditer()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#fnumber">fnumber</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#fraction">fraction</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#flags">flags</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.FollowedBy-class.html">FollowedBy</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#get">get()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Greek-class.html">Greek</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#groups">groups</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#getName">getName()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Group-class.html">Group</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.GoToColumn-class.html">GoToColumn</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#groupindex">groupindex</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#haskeys">haskeys()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#hex_integer">hex_integer</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html">Hiragana</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Hebrew-class.html">Hebrew</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#hexnums">hexnums</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#htmlComment">htmlComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#identifier">identifier</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#indentedBlock">indentedBlock()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#ipv4_address">ipv4_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Combine-class.html#ignore">ignore()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Combine-class.html">Combine</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#infixNotation">infixNotation()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#ipv6_address">ipv6_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#iso8601_date">iso8601_date</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#ignore">ignore()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#insert">insert()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#iso8601_datetime">iso8601_datetime</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#ignore">ignore()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#integer">integer</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#items">items()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#javaStyleComment">javaStyleComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html">Kanji</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#keys">keys()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Korean-class.html">Korean</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html">Katakana</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html">Keyword</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Latin1-class.html">Latin1</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#line">line()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#lineStart">lineStart</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#leaveWhitespace">leaveWhitespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.LineEnd-class.html">LineEnd</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Literal-class.html">Literal</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#lineEnd">lineEnd</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#locatedExpr">locatedExpr()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#lineno">lineno()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.LineStart-class.html">LineStart</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#mac_address">mac_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#match">match()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#matchPreviousExpr">matchPreviousExpr()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#makeHTMLTags">makeHTMLTags()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#matches">matches()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#matchPreviousLiteral">matchPreviousLiteral()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#makeXMLTags">makeXMLTags()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html">MatchFirst</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#mixed_integer">mixed_integer</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#markInputline">markInputline()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#matchOnlyAtCol">matchOnlyAtCol()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#nestedExpr">nestedExpr()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#nullDebugAction">nullDebugAction()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html#nums">nums()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.unicode_set-class.html">unicode_set</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.NoMatch-class.html">NoMatch</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#number">number</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.NotAny-class.html">NotAny</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#nums">nums</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#oneOf">oneOf()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#opAssoc">opAssoc</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#originalTextFor">originalTextFor()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.OneOrMore-class.html">OneOrMore</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Optional-class.html">Optional</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.OnlyOnce-class.html">OnlyOnce</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html">Or</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseSyntaxException-class.html">ParseSyntaxException</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.NoMatch-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NoMatch-class.html">NoMatch</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.NotAny-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NotAny-class.html">NotAny</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#pattern">pattern</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Optional-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Optional-class.html">Optional</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#pop">pop()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Or-class.html">Or</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Combine-class.html#postParse">postParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Combine-class.html">Combine</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseException-class.html">ParseException</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Dict-class.html#postParse">postParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Dict-class.html">Dict</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html">ParseExpression</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Group-class.html#postParse">postParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Group-class.html">Group</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseFatalException-class.html">ParseFatalException</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.PrecededBy-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.PrecededBy-class.html">PrecededBy</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#postParse">postParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#parseFile">parseFile()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.QuotedString-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.QuotedString-class.html">QuotedString</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Suppress-class.html#postParse">postParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Suppress-class.html">Suppress</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#pprint">pprint()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessKeyword-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CaselessKeyword-class.html">CaselessKeyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.SkipTo-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.SkipTo-class.html">SkipTo</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.PrecededBy-class.html">PrecededBy</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessLiteral-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CaselessLiteral-class.html">CaselessLiteral</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringEnd-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.StringEnd-class.html">StringEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.GoToColumn-class.html#preParse">preParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.GoToColumn-class.html">GoToColumn</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CharsNotIn-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CharsNotIn-class.html">CharsNotIn</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringStart-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.StringStart-class.html">StringStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#preParse">preParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CloseMatch-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CloseMatch-class.html">CloseMatch</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.White-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.White-class.html">White</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#printables">printables</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Each-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Each-class.html">Each</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Word-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Word-class.html">Word</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html#printables">printables()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.unicode_set-class.html">unicode_set</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.FollowedBy-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.FollowedBy-class.html">FollowedBy</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordEnd-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.WordEnd-class.html">WordEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#punc8bit">punc8bit</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.GoToColumn-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.GoToColumn-class.html">GoToColumn</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordStart-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.WordStart-class.html">WordStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#PY_3">PY_3</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ZeroOrMore-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html">pyparsing</a></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.LineEnd-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.LineEnd-class.html">LineEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html">ParserElement</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.LineStart-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.LineStart-class.html">LineStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html">ParseResults</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Literal-class.html#parseImpl">parseImpl()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#parseString">parseString()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#pythonStyleComment">pythonStyleComment</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="Q">Q</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.QuotedString-class.html">QuotedString</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#quotedString">quotedString</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#real">real</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#replaceHTMLEntity">replaceHTMLEntity()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#restOfLine">restOfLine</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.RecursiveGrammarException-class.html">RecursiveGrammarException</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#replaceWith">replaceWith()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#runTests">runTests()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html">Regex</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.OnlyOnce-class.html#reset">reset()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.OnlyOnce-class.html">OnlyOnce</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#removeQuotes">removeQuotes()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#resetCache">resetCache()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#scanner">scanner()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#streamline">streamline()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#scanString">scanString()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringEnd-class.html">StringEnd</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#sci_real">sci_real</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#stringEnd">stringEnd</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#search">search()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#sglQuotedString">sglQuotedString</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringStart-class.html">StringStart</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#searchString">searchString()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#signed_integer">signed_integer</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#stringStart">stringStart</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setBreak">setBreak()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#singleArgBuiltins">singleArgBuiltins</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#stripHTMLTags">stripHTMLTags()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDebug">setDebug()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.SkipTo-class.html">SkipTo</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#sub">sub()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#split">split()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html#sub">sub()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#setDefaultKeywordChars">setDefaultKeywordChars()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#split">split()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#subn">subn()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#srange">srange()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Suppress-class.html">Suppress</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#streamline">streamline()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#suppress">suppress()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setName">setName()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Suppress-class.html#suppress">suppress()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Suppress-class.html">Suppress</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#streamline">streamline()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#system_version">system_version</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Thai-class.html">Thai</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#tokenMap">tokenMap()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#tryParse">tryParse()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Token-class.html">Token</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#traceParseAction">traceParseAction()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.TokenConverter-class.html">TokenConverter</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#transformString">transformString()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#ungroup">ungroup()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#unicodeString">unicodeString</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#upcaseTokens">upcaseTokens()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html">unicode_set</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#upcaseTokens">upcaseTokens()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#uuid">uuid</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#validate">validate()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#validate">validate()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#values">values()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#validate">validate()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#validate">validate()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.White-class.html">White</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#withClass">withClass()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordStart-class.html">WordStart</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.White-class.html#whiteStrs">whiteStrs</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.White-class.html">White</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Word-class.html">Word</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#withAttribute">withAttribute()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordEnd-class.html">WordEnd</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="Z">Z</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__add__">__add__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.NotAny-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NotAny-class.html">NotAny</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__add__">__add__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.SkipTo-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.SkipTo-class.html">SkipTo</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.OneOrMore-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.OneOrMore-class.html">OneOrMore</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__and__">__and__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringEnd-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.StringEnd-class.html">StringEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Optional-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Optional-class.html">Optional</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__bool__">__bool__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.StringStart-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.StringStart-class.html">StringStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Or-class.html">Or</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.OnlyOnce-class.html#__call__">__call__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.OnlyOnce-class.html">OnlyOnce</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Token-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Token-class.html">Token</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__call__">__call__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.TokenConverter-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.TokenConverter-class.html">TokenConverter</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__contains__">__contains__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.White-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.White-class.html">White</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#__copy__">__copy__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Word-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Word-class.html">Word</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#__deepcopy__">__deepcopy__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordEnd-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.WordEnd-class.html">WordEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__delitem__">__delitem__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.WordStart-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.WordStart-class.html">WordStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.QuotedString-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.QuotedString-class.html">QuotedString</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#__dir__">__dir__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ZeroOrMore-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.RecursiveGrammarException-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.RecursiveGrammarException-class.html">RecursiveGrammarException</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__dir__">__dir__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__invert__">__invert__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#__doc__">__doc__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#__ior__">__ior__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Word-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Word-class.html">Word</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__eq__">__eq__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__iter__">__iter__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ZeroOrMore-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#__getattr__">__getattr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html#__ixor__">__ixor__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Or-class.html">Or</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__sub__">__sub__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__getattr__">__getattr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__len__">__len__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#__versionTime__">__versionTime__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#__lshift__">__lshift__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__xor__">__xor__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__mul__">__mul__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_bslash">_bslash</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__getnewargs__">__getnewargs__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__ne__">__ne__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_charRange">_charRange</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__getstate__">__getstate__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_commasepitem">_commasepitem</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__hash__">__hash__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__or__">__or__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_commasepitem">_commasepitem</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#__iadd__">__iadd__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#__package__">__package__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_escapedHexChar">_escapedHexChar</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__iadd__">__iadd__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__radd__">__radd__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_escapedOctChar">_escapedOctChar</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#__ilshift__">__ilshift__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__radd__">__radd__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_escapedPunc">_escapedPunc</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__rand__">__rand__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_full_ipv6_address">_full_ipv6_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessKeyword-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CaselessKeyword-class.html">CaselessKeyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_html_stripper">_html_stripper</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CaselessLiteral-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CaselessLiteral-class.html">CaselessLiteral</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_htmlEntityMap">_htmlEntityMap</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Char-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Char-class.html">Char</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_ipv6_part">_ipv6_part</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CharsNotIn-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CharsNotIn-class.html">CharsNotIn</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__req__">__req__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#_iteritems">_iteritems()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.CloseMatch-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CloseMatch-class.html">CloseMatch</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__reversed__">__reversed__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#_iterkeys">_iterkeys()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Combine-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Combine-class.html">Combine</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#_itervalues">_itervalues()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Dict-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Dict-class.html">Dict</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__rne__">__rne__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_MAX_INT">_MAX_INT</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Each-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Each-class.html">Each</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__ror__">__ror__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_mixed_ipv6_address">_mixed_ipv6_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Empty-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Empty-class.html">Empty</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_optionalNotMatched">_optionalNotMatched</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.FollowedBy-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.FollowedBy-class.html">FollowedBy</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#_packratEnabled">_packratEnabled</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__setitem__">__setitem__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Arabic-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Arabic-class.html">Arabic</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.GoToColumn-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.GoToColumn-class.html">GoToColumn</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__setstate__">__setstate__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.CJK-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.CJK-class.html">CJK</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Group-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Chinese-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Chinese-class.html">Chinese</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Combine-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Combine-class.html">Combine</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Cyrillic-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Cyrillic-class.html">Cyrillic</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.LineEnd-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.LineEnd-class.html">LineEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Dict-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Dict-class.html">Dict</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Devanagari-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Devanagari-class.html">Devanagari</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.LineStart-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.LineStart-class.html">LineStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Group-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Greek-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Greek-class.html">Greek</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Literal-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.LineEnd-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.LineEnd-class.html">LineEnd</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Hebrew-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Hebrew-class.html">Hebrew</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Literal-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html">Hiragana</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.NoMatch-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NoMatch-class.html">NoMatch</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html">Kanji</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.NotAny-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NotAny-class.html">NotAny</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.NotAny-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.NotAny-class.html">NotAny</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html">Katakana</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.OnlyOnce-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.OnlyOnce-class.html">OnlyOnce</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.OneOrMore-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.OneOrMore-class.html">OneOrMore</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Japanese-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Optional-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Optional-class.html">Optional</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Optional-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Optional-class.html">Optional</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Korean-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Korean-class.html">Korean</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.Or-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Or-class.html">Or</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Regex-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Regex-class.html">Regex</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Latin1-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Latin1-class.html">Latin1</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseBaseException-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Suppress-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Suppress-class.html">Suppress</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode.Thai-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode.Thai-class.html">Thai</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseElementEnhance-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.White-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.White-class.html">White</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_unicode-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Word-class.html#__slotnames__">__slotnames__</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Word-class.html">Word</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.unicode_set-class.html#_ranges">_ranges</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.unicode_set-class.html">unicode_set</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParseResults-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParseResults-class.html">ParseResults</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.And-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.And-class.html">And</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_reBracketExpr">_reBracketExpr</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.CharsNotIn-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.CharsNotIn-class.html">CharsNotIn</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#_short_ipv6_address">_short_ipv6_address</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.PrecededBy-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.PrecededBy-class.html">PrecededBy</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Each-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Each-class.html">Each</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#_singleChar">_singleChar</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing-module.html">pyparsing</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.QuotedString-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.QuotedString-class.html">QuotedString</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.Forward-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="pyparsing.RecursiveGrammarException-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.RecursiveGrammarException-class.html">RecursiveGrammarException</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.MatchFirst-class.html#__str__">__str__()</a><br />
-<span class="index-where">(in&nbsp;<a href="pyparsing.MatchFirst-class.html">MatchFirst</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-</table>
-</td></tr>
-</table>
-<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/index.html b/htmldoc/index.html
deleted file mode 100644 (file)
index b55d2a9..0000000
+++ /dev/null
@@ -1,2766 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        Module&nbsp;pyparsing
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module pyparsing</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html">source&nbsp;code</a></span></p>
-<h1 class="heading">pyparsing module - Classes and methods to define and execute parsing grammars</h1>
-    <p>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.  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.</p>
-    <p>Here is a program to parse &quot;Hello, World!&quot; (or any 
-    greeting of the form <code>&quot;&lt;salutation&gt;, 
-    &lt;addressee&gt;!&quot;</code>), built up using <a 
-    href="pyparsing.Word-class.html" class="link">Word</a>, <a 
-    href="pyparsing.Literal-class.html" class="link" 
-    onclick="show_private();">Literal</a>, and <a 
-    href="pyparsing.And-class.html" class="link">And</a> elements (<a 
-    href="pyparsing.ParserElement-class.html#__add__" class="link">'+'</a> 
-    operator gives <a href="pyparsing.And-class.html" class="link">And</a> 
-    expressions, strings are auto-converted to <a 
-    href="pyparsing.Literal-class.html" class="link" 
-    onclick="show_private();">Literal</a> expressions):</p>
-<pre class="literalblock">
-   from pyparsing import Word, alphas
-
-   # define grammar of a greeting
-   greet = Word(alphas) + &quot;,&quot; + Word(alphas) + &quot;!&quot;
-
-   hello = &quot;Hello, World!&quot;
-   print (hello, &quot;-&gt;&quot;, greet.parseString(hello))
-</pre>
-    <p>The program outputs the following:</p>
-<pre class="literalblock">
-   Hello, World! -&gt; ['Hello', ',', 'World', '!']
-</pre>
-    <p>The Python representation of the grammar is quite readable, owing to
-    the self-explanatory class names, and the use of '+', '|' and '^' 
-    operators.</p>
-    <p>The <a href="pyparsing.ParseResults-class.html" 
-    class="link">ParseResults</a> object returned from <a 
-    href="pyparsing.ParserElement-class.html#parseString" 
-    class="link">ParserElement.parseString</a> can be accessed as a nested 
-    list, a dictionary, or an object with named attributes.</p>
-    <p>The pyparsing module handles some of the problems that are typically
-    vexing when writing text parsers:</p>
-    <ul>
-      <li>
-        extra or missing whitespace (the above program will also handle 
-        &quot;Hello,World!&quot;, &quot;Hello  ,  World  !&quot;, etc.)
-      </li>
-      <li>
-        quoted strings
-      </li>
-      <li>
-        embedded comments
-      </li>
-    </ul>
-    <h2 class="heading">Getting Started -</h2>
-      <p>Visit the classes <a href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a> and <a 
-      href="pyparsing.ParseResults-class.html" 
-      class="link">ParseResults</a> to see the base classes that most other
-      pyparsing classes inherit from. Use the docstrings for examples of 
-      how to:</p>
-      <ul>
-        <li>
-          construct literal match expressions from <a 
-          href="pyparsing.Literal-class.html" class="link" 
-          onclick="show_private();">Literal</a> and <a 
-          href="pyparsing.CaselessLiteral-class.html" 
-          class="link">CaselessLiteral</a> classes
-        </li>
-        <li>
-          construct character word-group expressions using the <a 
-          href="pyparsing.Word-class.html" class="link">Word</a> class
-        </li>
-        <li>
-          see how to create repetitive expressions using <a 
-          href="pyparsing.ZeroOrMore-class.html" 
-          class="link">ZeroOrMore</a> and <a 
-          href="pyparsing.OneOrMore-class.html" class="link">OneOrMore</a> 
-          classes
-        </li>
-        <li>
-          use <a href="pyparsing.And-class.html" class="link">'+'</a>, <a 
-          href="pyparsing.MatchFirst-class.html" class="link">'|'</a>, <a 
-          href="pyparsing.Or-class.html" class="link">'^'</a>, and <a 
-          href="pyparsing.Each-class.html" class="link">'&amp;'</a> 
-          operators to combine simple expressions into more complex ones
-        </li>
-        <li>
-          associate names with your parsed results using <a 
-          href="pyparsing.ParserElement-class.html#setResultsName" 
-          class="link">ParserElement.setResultsName</a>
-        </li>
-        <li>
-          find some helpful expression short-cuts like <a 
-          href="pyparsing-module.html#delimitedList" 
-          class="link">delimitedList</a> and <a 
-          href="pyparsing-module.html#oneOf" class="link">oneOf</a>
-        </li>
-        <li>
-          find more useful common expressions in the <a 
-          href="pyparsing.pyparsing_common-class.html" 
-          class="link">pyparsing_common</a> namespace class
-        </li>
-      </ul>
-
-<hr />
-<div class="fields">      <p><strong>Version:</strong>
-        2.3.0
-      </p>
-      <p><strong>Author:</strong>
-        Paul McGuire &lt;ptmcg@users.sourceforge.net&gt;
-      </p>
-</div><!-- ==================== CLASSES ==================== -->
-<a name="section-Classes"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseBaseException-class.html" class="summary-name">ParseBaseException</a><br />
-      base exception class for all parsing runtime exceptions
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseException-class.html" class="summary-name">ParseException</a><br />
-      Exception thrown when parse expressions don't match class; 
-        supported attributes by name are:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseFatalException-class.html" class="summary-name">ParseFatalException</a><br />
-      user-throwable exception thrown when inconsistent parse content is 
-        found; stops all parsing immediately
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseSyntaxException-class.html" class="summary-name">ParseSyntaxException</a><br />
-      just like <a href="pyparsing.ParseFatalException-class.html" 
-        class="link">ParseFatalException</a>, but thrown internally when an
-        ErrorStop ('-' operator) indicates that parsing is to stop 
-        immediately because an unbacktrackable syntax error has been found
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.RecursiveGrammarException-class.html" class="summary-name">RecursiveGrammarException</a><br />
-      exception thrown by <a 
-        href="pyparsing.ParserElement-class.html#validate" 
-        class="link">ParserElement.validate</a> if the grammar could be 
-        improperly recursive
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseResults-class.html" class="summary-name">ParseResults</a><br />
-      Structured parse results, to provide multiple means of access to 
-        the parsed data:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParserElement-class.html" class="summary-name">ParserElement</a><br />
-      Abstract base level parser element class.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Token-class.html" class="summary-name">Token</a><br />
-      Abstract <code>ParserElement</code> subclass, for defining atomic 
-        matching patterns.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Empty-class.html" class="summary-name">Empty</a><br />
-      An empty token, will always match.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.NoMatch-class.html" class="summary-name">NoMatch</a><br />
-      A token that will never match.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Literal-class.html" class="summary-name">Literal</a><br />
-      Token to exactly match a specified string.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Keyword-class.html" class="summary-name">Keyword</a><br />
-      Token to exactly match a specified string as a keyword, that is, it
-        must be immediately followed by a non-keyword character.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CaselessLiteral-class.html" class="summary-name">CaselessLiteral</a><br />
-      Token to match a specified string, ignoring case of letters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CaselessKeyword-class.html" class="summary-name">CaselessKeyword</a><br />
-      Caseless version of <a href="pyparsing.Keyword-class.html" 
-        class="link">Keyword</a>.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CloseMatch-class.html" class="summary-name">CloseMatch</a><br />
-      A variation on <a href="pyparsing.Literal-class.html" class="link" 
-        onclick="show_private();">Literal</a> which matches 
-        &quot;close&quot; matches, that is, strings with at most 'n' 
-        mismatching characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Word-class.html" class="summary-name">Word</a><br />
-      Token for matching words composed of allowed character sets.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Char-class.html" class="summary-name">Char</a><br />
-      A short-cut class for defining <code>Word(characters, 
-        exact=1)</code>, when defining a match of any single character in a
-        string of characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Regex-class.html" class="summary-name">Regex</a><br />
-      Token for matching strings that match a given regular expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.QuotedString-class.html" class="summary-name">QuotedString</a><br />
-      Token for matching strings that are delimited by quoting 
-        characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CharsNotIn-class.html" class="summary-name">CharsNotIn</a><br />
-      Token for matching words composed of characters <i>not</i> in a 
-        given set (will include whitespace in matched characters if not 
-        listed in the provided exclusion set - see example).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.White-class.html" class="summary-name">White</a><br />
-      Special matching class for matching whitespace.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.GoToColumn-class.html" class="summary-name">GoToColumn</a><br />
-      Token to advance to a specific column of input text; useful for 
-        tabular report scraping.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.LineStart-class.html" class="summary-name">LineStart</a><br />
-      Matches if current position is at the beginning of a line within 
-        the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.LineEnd-class.html" class="summary-name">LineEnd</a><br />
-      Matches if current position is at the end of a line within the 
-        parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.StringStart-class.html" class="summary-name">StringStart</a><br />
-      Matches if current position is at the beginning of the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.StringEnd-class.html" class="summary-name">StringEnd</a><br />
-      Matches if current position is at the end of the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.WordStart-class.html" class="summary-name">WordStart</a><br />
-      Matches if the current position is at the beginning of a Word, and 
-        is not preceded by any character in a given set of 
-        <code>wordChars</code> (default=<code>printables</code>).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.WordEnd-class.html" class="summary-name">WordEnd</a><br />
-      Matches if the current position is at the end of a Word, and is not
-        followed by any character in a given set of <code>wordChars</code> 
-        (default=<code>printables</code>).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseExpression-class.html" class="summary-name">ParseExpression</a><br />
-      Abstract subclass of ParserElement, for combining and 
-        post-processing parsed tokens.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.And-class.html" class="summary-name">And</a><br />
-      Requires all given <code>ParseExpression</code>s to be found in the
-        given order.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Or-class.html" class="summary-name">Or</a><br />
-      Requires that at least one <code>ParseExpression</code> is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.MatchFirst-class.html" class="summary-name">MatchFirst</a><br />
-      Requires that at least one <code>ParseExpression</code> is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Each-class.html" class="summary-name">Each</a><br />
-      Requires all given <code>ParseExpression</code>s to be found, but 
-        in any order.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseElementEnhance-class.html" class="summary-name">ParseElementEnhance</a><br />
-      Abstract subclass of <code>ParserElement</code>, for combining and 
-        post-processing parsed tokens.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.FollowedBy-class.html" class="summary-name">FollowedBy</a><br />
-      Lookahead matching of the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.PrecededBy-class.html" class="summary-name">PrecededBy</a><br />
-      Lookbehind matching of the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.NotAny-class.html" class="summary-name">NotAny</a><br />
-      Lookahead to disallow matching with the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.OneOrMore-class.html" class="summary-name">OneOrMore</a><br />
-      Repetition of one or more of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ZeroOrMore-class.html" class="summary-name">ZeroOrMore</a><br />
-      Optional repetition of zero or more of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Optional-class.html" class="summary-name">Optional</a><br />
-      Optional matching of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.SkipTo-class.html" class="summary-name">SkipTo</a><br />
-      Token for skipping over all undefined text until the matched 
-        expression is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Forward-class.html" class="summary-name">Forward</a><br />
-      Forward declaration of an expression to be defined later - used for
-        recursive grammars, such as algebraic infix notation.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.TokenConverter-class.html" class="summary-name">TokenConverter</a><br />
-      Abstract subclass of <code>ParseExpression</code>, for converting 
-        parsed results.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Combine-class.html" class="summary-name">Combine</a><br />
-      Converter to concatenate all matching tokens to a single string.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Group-class.html" class="summary-name">Group</a><br />
-      Converter to return the matched tokens as a list - useful for 
-        returning tokens of <code><a href="pyparsing.ZeroOrMore-class.html"
-        class="link">ZeroOrMore</a></code> and <code><a 
-        href="pyparsing.OneOrMore-class.html" 
-        class="link">OneOrMore</a></code> expressions.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Dict-class.html" class="summary-name">Dict</a><br />
-      Converter to return a repetitive expression as a list, but also as 
-        a dictionary.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Suppress-class.html" class="summary-name">Suppress</a><br />
-      Converter for ignoring the results of a parsed expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.OnlyOnce-class.html" class="summary-name">OnlyOnce</a><br />
-      Wrapper for parse actions, to ensure they are only called once.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_common-class.html" class="summary-name">pyparsing_common</a><br />
-      Here are some common low-level expressions that may be useful in 
-        jump-starting parser development:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.unicode_set-class.html" class="summary-name">unicode_set</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode-class.html" class="summary-name">pyparsing_unicode</a>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTIONS ==================== -->
-<a name="section-Functions"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Functions</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#col" class="summary-sig-name">col</a>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns current column within a string, counting newlines as line 
-      separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#col">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#lineno" class="summary-sig-name">lineno</a>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns current line number within a string, counting newlines as 
-      line separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#lineno">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="line"></a><span class="summary-sig-name">line</span>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns the line of text containing loc within a string, counting 
-      newlines as line separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#line">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="nullDebugAction"></a><span class="summary-sig-name">nullDebugAction</span>(<span class="summary-sig-arg">*args</span>)</span><br />
-      'Do-nothing' debug action, to suppress debugging output during 
-      parsing.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#nullDebugAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#traceParseAction" class="summary-sig-name">traceParseAction</a>(<span class="summary-sig-arg">f</span>)</span><br />
-      Decorator for debugging parse actions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#traceParseAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#delimitedList" class="summary-sig-name">delimitedList</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">delim</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">,</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">combine</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Helper to define a delimited list of expressions - the delimiter 
-      defaults to ','.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#delimitedList">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#countedArray" class="summary-sig-name">countedArray</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">intExpr</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Helper to define a counted list of expressions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#countedArray">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#matchPreviousLiteral" class="summary-sig-name">matchPreviousLiteral</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to define an expression that is indirectly defined from the 
-      tokens matched in a previous expression, that is, it looks for a 
-      'repeat' of a previous expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousLiteral">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#matchPreviousExpr" class="summary-sig-name">matchPreviousExpr</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to define an expression that is indirectly defined from the 
-      tokens matched in a previous expression, that is, it looks for a 
-      'repeat' of a previous expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#oneOf" class="summary-sig-name">oneOf</a>(<span class="summary-sig-arg">strs</span>,
-        <span class="summary-sig-arg">caseless</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">useRegex</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper to quickly define a set of alternative Literals, and makes 
-      sure to do longest-first testing when there is a conflict, regardless
-      of the input order, but returns a <code><a 
-      href="pyparsing.MatchFirst-class.html" 
-      class="link">MatchFirst</a></code> for best performance.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#oneOf">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#dictOf" class="summary-sig-name">dictOf</a>(<span class="summary-sig-arg">key</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Helper to easily and clearly define a dictionary by specifying the 
-      respective patterns for the key and value.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#dictOf">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#originalTextFor" class="summary-sig-name">originalTextFor</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">asString</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper to return the original, untokenized text for a given 
-      expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#originalTextFor">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="ungroup"></a><span class="summary-sig-name">ungroup</span>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to undo pyparsing's default grouping of And expressions, even 
-      if all but one are non-empty.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ungroup">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#locatedExpr" class="summary-sig-name">locatedExpr</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to decorate a returned token with its starting and ending 
-      locations in the input string.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#locatedExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#srange" class="summary-sig-name">srange</a>(<span class="summary-sig-arg">s</span>)</span><br />
-      Helper to easily define string ranges for use in Word construction.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#srange">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="matchOnlyAtCol"></a><span class="summary-sig-name">matchOnlyAtCol</span>(<span class="summary-sig-arg">n</span>)</span><br />
-      Helper method for defining parse actions that require matching at a 
-      specific column in the input text.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchOnlyAtCol">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#replaceWith" class="summary-sig-name">replaceWith</a>(<span class="summary-sig-arg">replStr</span>)</span><br />
-      Helper method for common parse actions that simply return a literal 
-      value.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#replaceWith">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#removeQuotes" class="summary-sig-name">removeQuotes</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Helper parse action for removing quotation marks from parsed quoted 
-      strings.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#removeQuotes">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#tokenMap" class="summary-sig-name">tokenMap</a>(<span class="summary-sig-arg">func</span>,
-        <span class="summary-sig-arg">*args</span>)</span><br />
-      Helper to define a parse action by mapping a function to all elements
-      of a ParseResults list.If any additional args are passed, they are 
-      forwarded to the given function as additional arguments after the 
-      token, as in <code>hex_integer = 
-      Word(hexnums).setParseAction(tokenMap(int, 16))</code>, which will 
-      convert the parsed data to an integer using base 16.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#tokenMap">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#upcaseTokens" class="summary-sig-name">upcaseTokens</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      (Deprecated) Helper parse action to convert tokens to upper case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#upcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#downcaseTokens" class="summary-sig-name">downcaseTokens</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      (Deprecated) Helper parse action to convert tokens to lower case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#downcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#makeHTMLTags" class="summary-sig-name">makeHTMLTags</a>(<span class="summary-sig-arg">tagStr</span>)</span><br />
-      Helper to construct opening and closing tag expressions for HTML, 
-      given a tag name.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#makeHTMLTags">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#makeXMLTags" class="summary-sig-name">makeXMLTags</a>(<span class="summary-sig-arg">tagStr</span>)</span><br />
-      Helper to construct opening and closing tag expressions for XML, 
-      given a tag name.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#makeXMLTags">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#withAttribute" class="summary-sig-name">withAttribute</a>(<span class="summary-sig-arg">*args</span>,
-        <span class="summary-sig-arg">**attrDict</span>)</span><br />
-      Helper to create a validating parse action to be used with start tags
-      created with <code><a href="pyparsing-module.html#makeXMLTags" 
-      class="link">makeXMLTags</a></code> or <code><a 
-      href="pyparsing-module.html#makeHTMLTags" 
-      class="link">makeHTMLTags</a></code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#withAttribute">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#withClass" class="summary-sig-name">withClass</a>(<span class="summary-sig-arg">classname</span>,
-        <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
-      Simplified version of <code><a 
-      href="pyparsing-module.html#withAttribute" 
-      class="link">withAttribute</a></code> when matching on a div class - 
-      made difficult because <code>class</code> is a reserved word in 
-      Python.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#withClass">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#infixNotation" class="summary-sig-name">infixNotation</a>(<span class="summary-sig-arg">baseExpr</span>,
-        <span class="summary-sig-arg">opList</span>,
-        <span class="summary-sig-arg">lpar</span>=<span class="summary-sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="summary-sig-arg">rpar</span>=<span class="summary-sig-default">Suppress:(&quot;)&quot;)</span>)</span><br />
-      Helper method for constructing grammars of expressions made up of 
-      operators working in a precedence hierarchy.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#operatorPrecedence" class="summary-sig-name">operatorPrecedence</a>(<span class="summary-sig-arg">baseExpr</span>,
-        <span class="summary-sig-arg">opList</span>,
-        <span class="summary-sig-arg">lpar</span>=<span class="summary-sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="summary-sig-arg">rpar</span>=<span class="summary-sig-default">Suppress:(&quot;)&quot;)</span>)</span><br />
-      (Deprecated) Former name of <code><a 
-      href="pyparsing-module.html#infixNotation" 
-      class="link">infixNotation</a></code>, will be dropped in a future 
-      release.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#nestedExpr" class="summary-sig-name">nestedExpr</a>(<span class="summary-sig-arg">opener</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">(</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">closer</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">)</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">content</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">ignoreExpr</span>=<span class="summary-sig-default">quotedString using single or double quotes</span>)</span><br />
-      Helper method for defining nested lists enclosed in opening and 
-      closing delimiters (&quot;(&quot; and &quot;)&quot; are the default).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#nestedExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#indentedBlock" class="summary-sig-name">indentedBlock</a>(<span class="summary-sig-arg">blockStatementExpr</span>,
-        <span class="summary-sig-arg">indentStack</span>,
-        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper method for defining space-delimited indentation blocks, such 
-      as those used to define block statements in Python source code.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#indentedBlock">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="replaceHTMLEntity"></a><span class="summary-sig-name">replaceHTMLEntity</span>(<span class="summary-sig-arg">t</span>)</span><br />
-      Helper parser action to replace common HTML entities with their 
-      special characters</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#replaceHTMLEntity">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== VARIABLES ==================== -->
-<a name="section-Variables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="alphas"></a><span class="summary-name">alphas</span> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="nums"></a><span class="summary-name">nums</span> = <code title="'0123456789'"><code class="variable-quote">'</code><code class="variable-string">0123456789</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="hexnums"></a><span class="summary-name">hexnums</span> = <code title="'0123456789ABCDEFabcdef'"><code class="variable-quote">'</code><code class="variable-string">0123456789ABCDEFabcdef</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#alphanums" class="summary-name">alphanums</a> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#printables" class="summary-name">printables</a> = <code title="'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!&quot;#$%&amp;\\
-'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~'"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="empty"></a><span class="summary-name">empty</span> = <code title="empty">empty</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="lineStart"></a><span class="summary-name">lineStart</span> = <code title="lineStart">lineStart</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="lineEnd"></a><span class="summary-name">lineEnd</span> = <code title="lineEnd">lineEnd</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="stringStart"></a><span class="summary-name">stringStart</span> = <code title="stringStart">stringStart</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="stringEnd"></a><span class="summary-name">stringEnd</span> = <code title="stringEnd">stringEnd</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="opAssoc"></a><span class="summary-name">opAssoc</span> = <code title="SimpleNamespace()">SimpleNamespace()</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="dblQuotedString"></a><span class="summary-name">dblQuotedString</span> = <code title="string enclosed in double quotes">string enclosed in double quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="sglQuotedString"></a><span class="summary-name">sglQuotedString</span> = <code title="string enclosed in single quotes">string enclosed in single quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="quotedString"></a><span class="summary-name">quotedString</span> = <code title="quotedString using single or double quotes">quotedString using single or double quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="unicodeString"></a><span class="summary-name">unicodeString</span> = <code title="unicode string literal">unicode string literal</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#alphas8bit" class="summary-name">alphas8bit</a> = <code title="u'&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;'"><code class="variable-quote">u'</code><code class="variable-string">&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="punc8bit"></a><span class="summary-name">punc8bit</span> = <code title="u'&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#215;&#247;'"><code class="variable-quote">u'</code><code class="variable-string">&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#215;&#247;</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="commonHTMLEntity"></a><span class="summary-name">commonHTMLEntity</span> = <code title="common HTML entity">common HTML entity</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="cStyleComment"></a><span class="summary-name">cStyleComment</span> = <code title="C style comment">C style comment</code><br />
-      Comment of the form <code>/* ... */</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="htmlComment"></a><span class="summary-name">htmlComment</span> = <code title="HTML comment">HTML comment</code><br />
-      Comment of the form <code>&lt;!-- ... --&gt;</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="restOfLine"></a><span class="summary-name">restOfLine</span> = <code title="rest of line">rest of line</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="dblSlashComment"></a><span class="summary-name">dblSlashComment</span> = <code title="// comment">// comment</code><br />
-      Comment of the form <code>// ... (to end of line)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="cppStyleComment"></a><span class="summary-name">cppStyleComment</span> = <code title="C++ style comment">C++ style comment</code><br />
-      Comment of either form <code><a 
-      href="pyparsing-module.html#cStyleComment" 
-      class="link">cStyleComment</a></code> or <code><a 
-      href="pyparsing-module.html#dblSlashComment" 
-      class="link">dblSlashComment</a></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="javaStyleComment"></a><span class="summary-name">javaStyleComment</span> = <code title="C++ style comment">C++ style comment</code><br />
-      Same as <code><a href="pyparsing-module.html#cppStyleComment" 
-      class="link">cppStyleComment</a></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="pythonStyleComment"></a><span class="summary-name">pythonStyleComment</span> = <code title="Python style comment">Python style comment</code><br />
-      Comment of the form <code># ... (to end of line)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#commaSeparatedList" class="summary-name">commaSeparatedList</a> = <code title="commaSeparatedList">commaSeparatedList</code><br />
-      (Deprecated) Predefined expression of 1 or more printable words or 
-      quoted strings, separated by commas.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="anyCloseTag"></a><span class="summary-name">anyCloseTag</span> = <code title="&lt;/any tag&gt;">&lt;/any tag&gt;</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="anyOpenTag"></a><span class="summary-name">anyOpenTag</span> = <code title="&lt;any tag&gt;">&lt;any tag&gt;</code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTION DETAILS ==================== -->
-<a name="section-FunctionDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Function Details</span></td>
-</tr>
-</table>
-<a name="col"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">col</span>(<span class="sig-arg">loc</span>,
-        <span class="sig-arg">strg</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#col">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns current column within a string, counting newlines as line 
-  separators. The first column is number 1.</p>
-  <p>Note: the default parsing behavior is to expand tabs in the input 
-  string before starting the parsing process.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>ParserElement.parseString</i></a> for more information on
-  parsing strings containing <code>&lt;TAB&gt;</code>s, and suggested 
-  methods to maintain a consistent view of the parsed string, the parse 
-  location, and line and column positions within the parsed string.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="lineno"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">lineno</span>(<span class="sig-arg">loc</span>,
-        <span class="sig-arg">strg</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#lineno">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns current line number within a string, counting newlines as line
-  separators. The first line is number 1.</p>
-  <p>Note: the default parsing behavior is to expand tabs in the input 
-  string before starting the parsing process.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>ParserElement.parseString</i></a> for more information on
-  parsing strings containing <code>&lt;TAB&gt;</code>s, and suggested 
-  methods to maintain a consistent view of the parsed string, the parse 
-  location, and line and column positions within the parsed string.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="traceParseAction"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">traceParseAction</span>(<span class="sig-arg">f</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#traceParseAction">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Decorator for debugging parse actions.</p>
-  <p>When the parse action is called, this decorator will print 
-  <code>&quot;&gt;&gt; entering 
-  <i>method-name</i>(line:<i>current_source_line</i>, 
-  <i>parse_location</i>, <i>matched_tokens</i>)&quot;.</code> When the 
-  parse action completes, the decorator will print 
-  <code>&quot;&lt;&lt;&quot;</code> followed by the returned value, or any 
-  exception that the parse action raised.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas)
-
-   @traceParseAction
-   def remove_duplicate_chars(tokens):
-       return ''.join(sorted(set(''.join(tokens))))
-
-   wds = OneOrMore(wd).setParseAction(remove_duplicate_chars)
-   print(wds.parseString(&quot;slkdjs sld sldd sdlf sdljf&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   &gt;&gt;entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {}))
-   &lt;&lt;leaving remove_duplicate_chars (ret: 'dfjkls')
-   ['dfjkls']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="delimitedList"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">delimitedList</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">delim</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">,</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">combine</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#delimitedList">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a delimited list of expressions - the delimiter 
-  defaults to ','. By default, the list elements and delimiters can have 
-  intervening whitespace, and comments, but this can be overridden by 
-  passing <code>combine=True</code> in the constructor. If 
-  <code>combine</code> is set to <code>True</code>, the matching tokens are
-  returned as a single token string, with the delimiters included; 
-  otherwise, the matching tokens are returned as a list of tokens, with the
-  delimiters suppressed.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   delimitedList(Word(alphas)).parseString(&quot;aa,bb,cc&quot;) # -&gt; ['aa', 'bb', 'cc']
-   delimitedList(Word(hexnums), delim=':', combine=True).parseString(&quot;AA:BB:CC:DD:EE&quot;) # -&gt; ['AA:BB:CC:DD:EE']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="countedArray"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">countedArray</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">intExpr</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#countedArray">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a counted list of expressions. This helper defines a 
-  pattern of the form:</p>
-<pre class="literalblock">
-   integer expr expr expr...
-</pre>
-  <p>where the leading integer tells how many expr expressions follow. The 
-  matched tokens returns the array of expr tokens as a list - the leading 
-  count token is suppressed.</p>
-  <p>If <code>intExpr</code> is specified, it should be a pyparsing 
-  expression that produces an integer value.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   countedArray(Word(alphas)).parseString('2 ab cd ef')  # -&gt; ['ab', 'cd']
-
-   # in this parser, the leading integer value is given in binary,
-   # '10' indicating that 2 values are in the array
-   binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2))
-   countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef')  # -&gt; ['ab', 'cd']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="matchPreviousLiteral"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">matchPreviousLiteral</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousLiteral">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define an expression that is indirectly defined from the 
-  tokens matched in a previous expression, that is, it looks for a 'repeat'
-  of a previous expression.  For example:</p>
-<pre class="literalblock">
-   first = Word(nums)
-   second = matchPreviousLiteral(first)
-   matchExpr = first + &quot;:&quot; + second
-</pre>
-  <p>will match <code>&quot;1:1&quot;</code>, but not 
-  <code>&quot;1:2&quot;</code>.  Because this matches a previous literal, 
-  will also match the leading <code>&quot;1:1&quot;</code> in 
-  <code>&quot;1:10&quot;</code>. If this is not desired, use 
-  <code>matchPreviousExpr</code>. Do <i>not</i> use with packrat parsing 
-  enabled.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="matchPreviousExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">matchPreviousExpr</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define an expression that is indirectly defined from the 
-  tokens matched in a previous expression, that is, it looks for a 'repeat'
-  of a previous expression.  For example:</p>
-<pre class="literalblock">
-   first = Word(nums)
-   second = matchPreviousExpr(first)
-   matchExpr = first + &quot;:&quot; + second
-</pre>
-  <p>will match <code>&quot;1:1&quot;</code>, but not 
-  <code>&quot;1:2&quot;</code>.  Because this matches by expressions, will 
-  <i>not</i> match the leading <code>&quot;1:1&quot;</code> in 
-  <code>&quot;1:10&quot;</code>; the expressions are evaluated first, and 
-  then compared, so <code>&quot;1&quot;</code> is compared with 
-  <code>&quot;10&quot;</code>. Do <i>not</i> use with packrat parsing 
-  enabled.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="oneOf"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">oneOf</span>(<span class="sig-arg">strs</span>,
-        <span class="sig-arg">caseless</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">useRegex</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#oneOf">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to quickly define a set of alternative Literals, and makes sure
-  to do longest-first testing when there is a conflict, regardless of the 
-  input order, but returns a <code><a 
-  href="pyparsing.MatchFirst-class.html" class="link">MatchFirst</a></code>
-  for best performance.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      strs - a string of space-delimited literals, or a collection of 
-      string literals
-    </li>
-    <li>
-      caseless - (default=<code>False</code>) - treat all literals as 
-      caseless
-    </li>
-    <li>
-      useRegex - (default=<code>True</code>) - as an optimization, will 
-      generate a Regex object; otherwise, will generate a 
-      <code>MatchFirst</code> object (if <code>caseless=True</code>, or if 
-      creating a <code>Regex</code> raises an exception)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   comp_oper = oneOf(&quot;&lt; = &gt; &lt;= &gt;= !=&quot;)
-   var = Word(alphas)
-   number = Word(nums)
-   term = var | number
-   comparison_expr = term + comp_oper + term
-   print(comparison_expr.searchString(&quot;B = 12  AA=23 B&lt;=AA AA&gt;12&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['B', '=', '12'], ['AA', '=', '23'], ['B', '&lt;=', 'AA'], ['AA', '&gt;', '12']]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="dictOf"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">dictOf</span>(<span class="sig-arg">key</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#dictOf">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to easily and clearly define a dictionary by specifying the 
-  respective patterns for the key and value.  Takes care of defining the 
-  <code><a href="pyparsing.Dict-class.html" class="link">Dict</a></code>, 
-  <code><a href="pyparsing.ZeroOrMore-class.html" 
-  class="link">ZeroOrMore</a></code>, and <code><a 
-  href="pyparsing.Group-class.html" class="link">Group</a></code> tokens in
-  the proper order.  The key pattern can include delimiting markers or 
-  punctuation, as long as they are suppressed, thereby leaving the 
-  significant key text.  The value pattern can include named results, so 
-  that the <code>Dict</code> results can include named token fields.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   text = &quot;shape: SQUARE posn: upper left color: light blue texture: burlap&quot;
-   attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
-   print(OneOrMore(attr_expr).parseString(text).dump())
-
-   attr_label = label
-   attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)
-
-   # similar to Dict, but simpler call format
-   result = dictOf(attr_label, attr_value).parseString(text)
-   print(result.dump())
-   print(result['shape'])
-   print(result.shape)  # object attribute access works too
-   print(result.asDict())
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
-   - color: light blue
-   - posn: upper left
-   - shape: SQUARE
-   - texture: burlap
-   SQUARE
-   SQUARE
-   {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'}
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="originalTextFor"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">originalTextFor</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">asString</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#originalTextFor">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to return the original, untokenized text for a given 
-  expression.  Useful to restore the parsed fields of an HTML start tag 
-  into the raw tag text itself, or to revert separate tokens with 
-  intervening whitespace back to the original matching input text. By 
-  default, returns astring containing the original parsed text.</p>
-  <p>If the optional <code>asString</code> argument is passed as 
-  <code>False</code>, then the return value is a <code><a 
-  href="pyparsing.ParseResults-class.html" 
-  class="link">ParseResults</a></code> containing any results names that 
-  were originally matched, and a single token containing the original 
-  matched text from the input string.  So if the expression passed to 
-  <code><a href="pyparsing-module.html#originalTextFor" 
-  class="link">originalTextFor</a></code> contains expressions with defined
-  results names, you must set <code>asString</code> to <code>False</code> 
-  if you want to preserve those results name values.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   src = &quot;this is test &lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt; normal text &quot;
-   for tag in (&quot;b&quot;,&quot;i&quot;):
-       opener,closer = makeHTMLTags(tag)
-       patt = originalTextFor(opener + SkipTo(closer) + closer)
-       print(patt.searchString(src)[0])
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['&lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt;']
-   ['&lt;i&gt;text&lt;/i&gt;']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="locatedExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">locatedExpr</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#locatedExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to decorate a returned token with its starting and ending 
-  locations in the input string. This helper adds the following results 
-  names:</p>
-  <ul>
-    <li>
-      locn_start = location where matched expression begins
-    </li>
-    <li>
-      locn_end = location where matched expression ends
-    </li>
-    <li>
-      value = the actual parsed results
-    </li>
-  </ul>
-  <p>Be careful if the input text contains <code>&lt;TAB&gt;</code> 
-  characters, you may want to call <code><a 
-  href="pyparsing.ParserElement-class.html#parseWithTabs" 
-  class="link">ParserElement.parseWithTabs</a></code></p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas)
-   for match in locatedExpr(wd).searchString(&quot;ljsdf123lksdjjf123lkkjj1222&quot;):
-       print(match)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [[0, 'ljsdf', 5]]
-   [[8, 'lksdjjf', 15]]
-   [[18, 'lkkjj', 23]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="srange"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">srange</span>(<span class="sig-arg">s</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#srange">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to easily define string ranges for use in Word construction.  
-  Borrows syntax from regexp '[]' string range definitions:</p>
-<pre class="literalblock">
-   srange(&quot;[0-9]&quot;)   -&gt; &quot;0123456789&quot;
-   srange(&quot;[a-z]&quot;)   -&gt; &quot;abcdefghijklmnopqrstuvwxyz&quot;
-   srange(&quot;[a-z$_]&quot;) -&gt; &quot;abcdefghijklmnopqrstuvwxyz$_&quot;
-</pre>
-  <p>The input string must be enclosed in []'s, and the returned string is 
-  the expanded character set joined into a single string. The values 
-  enclosed in the []'s may be:</p>
-  <ul>
-    <li>
-      a single character
-    </li>
-    <li>
-      an escaped character with a leading backslash (such as 
-      <code>\-</code> or <code>\]</code>)
-    </li>
-    <li>
-      an escaped hex character with a leading <code>'\x'</code> 
-      (<code>\x21</code>, which is a <code>'!'</code> character) 
-      (<code>\0x##</code> is also supported for backwards compatibility)
-    </li>
-    <li>
-      an escaped octal character with a leading <code>'\0'</code> 
-      (<code>\041</code>, which is a <code>'!'</code> character)
-    </li>
-    <li>
-      a range of any of the above, separated by a dash (<code>'a-z'</code>,
-      etc.)
-    </li>
-    <li>
-      any combination of the above (<code>'aeiouy'</code>, 
-      <code>'a-zA-Z0-9_$'</code>, etc.)
-    </li>
-  </ul>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="replaceWith"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">replaceWith</span>(<span class="sig-arg">replStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#replaceWith">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for common parse actions that simply return a literal 
-  value.  Especially useful when used with <code><a 
-  href="pyparsing.ParserElement-class.html#transformString" 
-  class="link">transformString</a>()</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   num = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   na = oneOf(&quot;N/A NA&quot;).setParseAction(replaceWith(math.nan))
-   term = na | num
-
-   OneOrMore(term).parseString(&quot;324 234 N/A 234&quot;) # -&gt; [324, 234, nan, 234]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="removeQuotes"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">removeQuotes</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#removeQuotes">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper parse action for removing quotation marks from parsed quoted 
-  strings.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # by default, quotation marks are included in parsed results
-   quotedString.parseString(&quot;'Now is the Winter of our Discontent'&quot;) # -&gt; [&quot;'Now is the Winter of our Discontent'&quot;]
-
-   # use removeQuotes to strip quotation marks from parsed results
-   quotedString.setParseAction(removeQuotes)
-   quotedString.parseString(&quot;'Now is the Winter of our Discontent'&quot;) # -&gt; [&quot;Now is the Winter of our Discontent&quot;]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="tokenMap"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">tokenMap</span>(<span class="sig-arg">func</span>,
-        <span class="sig-arg">*args</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#tokenMap">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a parse action by mapping a function to all elements 
-  of a ParseResults list.If any additional args are passed, they are 
-  forwarded to the given function as additional arguments after the token, 
-  as in <code>hex_integer = Word(hexnums).setParseAction(tokenMap(int, 
-  16))</code>, which will convert the parsed data to an integer using base 
-  16.</p>
-  <p>Example (compare the last to example in <a 
-  href="pyparsing.ParserElement-class.html#transformString" 
-  class="link">ParserElement.transformString</a>:</p>
-<pre class="literalblock">
-   hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))
-   hex_ints.runTests('''
-       00 11 22 aa FF 0a 0d 1a
-       ''')
-
-   upperword = Word(alphas).setParseAction(tokenMap(str.upper))
-   OneOrMore(upperword).runTests('''
-       my kingdom for a horse
-       ''')
-
-   wd = Word(alphas).setParseAction(tokenMap(str.title))
-   OneOrMore(wd).setParseAction(' '.join).runTests('''
-       now is the winter of our discontent made glorious summer by this sun of york
-       ''')
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   00 11 22 aa FF 0a 0d 1a
-   [0, 17, 34, 170, 255, 10, 13, 26]
-
-   my kingdom for a horse
-   ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE']
-
-   now is the winter of our discontent made glorious summer by this sun of york
-   ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="upcaseTokens"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">upcaseTokens</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#upcaseTokens">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Helper parse action to convert tokens to upper case. 
-  Deprecated in favor of <a 
-  href="pyparsing.pyparsing_common-class.html#upcaseTokens" 
-  class="link">pyparsing_common.upcaseTokens</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="downcaseTokens"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">downcaseTokens</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#downcaseTokens">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Helper parse action to convert tokens to lower case. 
-  Deprecated in favor of <a 
-  href="pyparsing.pyparsing_common-class.html#downcaseTokens" 
-  class="link">pyparsing_common.downcaseTokens</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="makeHTMLTags"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">makeHTMLTags</span>(<span class="sig-arg">tagStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#makeHTMLTags">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to construct opening and closing tag expressions for HTML, 
-  given a tag name. Matches tags in either upper or lower case, attributes 
-  with namespaces and with quoted or unquoted values.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   text = '&lt;td&gt;More info at the &lt;a href=&quot;http://pyparsing.wikispaces.com&quot;&gt;pyparsing&lt;/a&gt; wiki page&lt;/td&gt;'
-   # makeHTMLTags returns pyparsing expressions for the opening and closing tags as a 2-tuple
-   a,a_end = makeHTMLTags(&quot;A&quot;)
-   link_expr = a + SkipTo(a_end)(&quot;link_text&quot;) + a_end
-
-   for link in link_expr.searchString(text):
-       # attributes in the &lt;A&gt; tag (like &quot;href&quot; shown here) are also accessible as named results
-       print(link.link_text, '-&gt;', link.href)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   pyparsing -&gt; http://pyparsing.wikispaces.com
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="makeXMLTags"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">makeXMLTags</span>(<span class="sig-arg">tagStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#makeXMLTags">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to construct opening and closing tag expressions for XML, given
-  a tag name. Matches tags only in the given upper/lower case.</p>
-  <p>Example: similar to <a href="pyparsing-module.html#makeHTMLTags" 
-  class="link">makeHTMLTags</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="withAttribute"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">withAttribute</span>(<span class="sig-arg">*args</span>,
-        <span class="sig-arg">**attrDict</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#withAttribute">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to create a validating parse action to be used with start tags 
-  created with <code><a href="pyparsing-module.html#makeXMLTags" 
-  class="link">makeXMLTags</a></code> or <code><a 
-  href="pyparsing-module.html#makeHTMLTags" 
-  class="link">makeHTMLTags</a></code>. Use <code>withAttribute</code> to 
-  qualify a starting tag with a required attribute value, to avoid false 
-  matches on common tags such as <code>&lt;TD&gt;</code> or 
-  <code>&lt;DIV&gt;</code>.</p>
-  <p>Call <code>withAttribute</code> with a series of attribute names and 
-  values. Specify the list of filter attributes names and values as:</p>
-  <ul>
-    <li>
-      keyword arguments, as in <code>(align=&quot;right&quot;)</code>, or
-    </li>
-    <li>
-      as an explicit dict with <code>**</code> operator, when an attribute 
-      name is also a Python reserved word, as in 
-      <code>**{&quot;class&quot;:&quot;Customer&quot;, 
-      &quot;align&quot;:&quot;right&quot;}</code>
-    </li>
-    <li>
-      a list of name-value tuples, as in ( (&quot;ns1:class&quot;, 
-      &quot;Customer&quot;), (&quot;ns2:align&quot;,&quot;right&quot;) )
-    </li>
-  </ul>
-  <p>For attribute names with a namespace prefix, you must use the second 
-  form.  Attribute names are matched insensitive to upper/lower case.</p>
-  <p>If just testing for <code>class</code> (with or without a namespace), 
-  use <code><a href="pyparsing-module.html#withClass" 
-  class="link">withClass</a></code>.</p>
-  <p>To verify that the attribute exists, but without specifying a value, 
-  pass <code>withAttribute.ANY_VALUE</code> as the value.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   html = '''
-       &lt;div&gt;
-       Some text
-       &lt;div type=&quot;grid&quot;&gt;1 4 0 1 0&lt;/div&gt;
-       &lt;div type=&quot;graph&quot;&gt;1,3 2,3 1,1&lt;/div&gt;
-       &lt;div&gt;this has no type&lt;/div&gt;
-       &lt;/div&gt;
-
-   '''
-   div,div_end = makeHTMLTags(&quot;div&quot;)
-
-   # only match div tag having a type attribute with value &quot;grid&quot;
-   div_grid = div().setParseAction(withAttribute(type=&quot;grid&quot;))
-   grid_expr = div_grid + SkipTo(div | div_end)(&quot;body&quot;)
-   for grid_header in grid_expr.searchString(html):
-       print(grid_header.body)
-
-   # construct a match with any div tag having a type attribute, regardless of the value
-   div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE))
-   div_expr = div_any_type + SkipTo(div | div_end)(&quot;body&quot;)
-   for div_header in div_expr.searchString(html):
-       print(div_header.body)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   1 4 0 1 0
-
-   1 4 0 1 0
-   1,3 2,3 1,1
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="withClass"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">withClass</span>(<span class="sig-arg">classname</span>,
-        <span class="sig-arg">namespace</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#withClass">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Simplified version of <code><a 
-  href="pyparsing-module.html#withAttribute" 
-  class="link">withAttribute</a></code> when matching on a div class - made
-  difficult because <code>class</code> is a reserved word in Python.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   html = '''
-       &lt;div&gt;
-       Some text
-       &lt;div class=&quot;grid&quot;&gt;1 4 0 1 0&lt;/div&gt;
-       &lt;div class=&quot;graph&quot;&gt;1,3 2,3 1,1&lt;/div&gt;
-       &lt;div&gt;this &amp;lt;div&amp;gt; has no class&lt;/div&gt;
-       &lt;/div&gt;
-
-   '''
-   div,div_end = makeHTMLTags(&quot;div&quot;)
-   div_grid = div().setParseAction(withClass(&quot;grid&quot;))
-
-   grid_expr = div_grid + SkipTo(div | div_end)(&quot;body&quot;)
-   for grid_header in grid_expr.searchString(html):
-       print(grid_header.body)
-
-   div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE))
-   div_expr = div_any_type + SkipTo(div | div_end)(&quot;body&quot;)
-   for div_header in div_expr.searchString(html):
-       print(div_header.body)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   1 4 0 1 0
-
-   1 4 0 1 0
-   1,3 2,3 1,1
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="infixNotation"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">infixNotation</span>(<span class="sig-arg">baseExpr</span>,
-        <span class="sig-arg">opList</span>,
-        <span class="sig-arg">lpar</span>=<span class="sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="sig-arg">rpar</span>=<span class="sig-default">Suppress:(&quot;)&quot;)</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for constructing grammars of expressions made up of 
-  operators working in a precedence hierarchy.  Operators may be unary or 
-  binary, left- or right-associative.  Parse actions can also be attached 
-  to operator expressions. The generated parser will also recognize the use
-  of parentheses to override operator precedences (see example below).</p>
-  <p>Note: if you define a deep operator list, you may see performance 
-  issues when using infixNotation. See <a 
-  href="pyparsing.ParserElement-class.html#enablePackrat" 
-  class="link">ParserElement.enablePackrat</a> for a mechanism to 
-  potentially improve your parser performance.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      baseExpr - expression representing the most basic element for the 
-      nested
-    </li>
-    <li>
-      opList - list of tuples, one for each operator precedence level in 
-      the expression grammar; each tuple is of the form (opExpr, numTerms, 
-      rightLeftAssoc, parseAction), where:
-      <ul>
-        <li>
-          opExpr is the pyparsing expression for the operator; may also be 
-          a string, which will be converted to a Literal; if numTerms is 3,
-          opExpr is a tuple of two expressions, for the two operators 
-          separating the 3 terms
-        </li>
-        <li>
-          numTerms is the number of terms for this operator (must be 1, 2, 
-          or 3)
-        </li>
-        <li>
-          rightLeftAssoc is the indicator whether the operator is right or 
-          left associative, using the pyparsing-defined constants 
-          <code>opAssoc.RIGHT</code> and <code>opAssoc.LEFT</code>.
-        </li>
-        <li>
-          parseAction is the parse action to be associated with expressions
-          matching this operator expression (the parse action tuple member 
-          may be omitted); if the parse action is passed a tuple or list of
-          functions, this is equivalent to calling 
-          <code>setParseAction(*fn)</code> (<a 
-          href="pyparsing.ParserElement-class.html#setParseAction" 
-          class="link">ParserElement.setParseAction</a>)
-        </li>
-      </ul>
-    </li>
-    <li>
-      lpar - expression for matching left-parentheses 
-      (default=<code>Suppress('(')</code>)
-    </li>
-    <li>
-      rpar - expression for matching right-parentheses 
-      (default=<code>Suppress(')')</code>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   # simple example of four-function arithmetic with ints and variable names
-   integer = pyparsing_common.signed_integer
-   varname = pyparsing_common.identifier
-
-   arith_expr = infixNotation(integer | varname,
-       [
-       ('-', 1, opAssoc.RIGHT),
-       (oneOf('* /'), 2, opAssoc.LEFT),
-       (oneOf('+ -'), 2, opAssoc.LEFT),
-       ])
-
-   arith_expr.runTests('''
-       5+3*6
-       (5+3)*6
-       -2--11
-       ''', fullDump=False)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   5+3*6
-   [[5, '+', [3, '*', 6]]]
-
-   (5+3)*6
-   [[[5, '+', 3], '*', 6]]
-
-   -2--11
-   [[['-', 2], '-', ['-', 11]]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="operatorPrecedence"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">operatorPrecedence</span>(<span class="sig-arg">baseExpr</span>,
-        <span class="sig-arg">opList</span>,
-        <span class="sig-arg">lpar</span>=<span class="sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="sig-arg">rpar</span>=<span class="sig-default">Suppress:(&quot;)&quot;)</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Former name of <code><a 
-  href="pyparsing-module.html#infixNotation" 
-  class="link">infixNotation</a></code>, will be dropped in a future 
-  release.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="nestedExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">nestedExpr</span>(<span class="sig-arg">opener</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">(</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">closer</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">)</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">content</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">ignoreExpr</span>=<span class="sig-default">quotedString using single or double quotes</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#nestedExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for defining nested lists enclosed in opening and 
-  closing delimiters (&quot;(&quot; and &quot;)&quot; are the default).</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      opener - opening character for a nested list 
-      (default=<code>&quot;(&quot;</code>); can also be a pyparsing 
-      expression
-    </li>
-    <li>
-      closer - closing character for a nested list 
-      (default=<code>&quot;)&quot;</code>); can also be a pyparsing 
-      expression
-    </li>
-    <li>
-      content - expression for items within the nested lists 
-      (default=<code>None</code>)
-    </li>
-    <li>
-      ignoreExpr - expression for ignoring opening and closing delimiters 
-      (default=<code>quotedString</code>)
-    </li>
-  </ul>
-  <p>If an expression is not provided for the content argument, the nested 
-  expression will capture all whitespace-delimited content between 
-  delimiters as a list of separate values.</p>
-  <p>Use the <code>ignoreExpr</code> argument to define expressions that 
-  may contain opening or closing characters that should not be treated as 
-  opening or closing characters for nesting, such as quotedString or a 
-  comment expression.  Specify multiple expressions using an <code><a 
-  href="pyparsing.Or-class.html" class="link">Or</a></code> or <code><a 
-  href="pyparsing.MatchFirst-class.html" 
-  class="link">MatchFirst</a></code>. The default is <a 
-  href="pyparsing-module.html#quotedString" class="link">quotedString</a>, 
-  but if no expressions are to be ignored, then pass <code>None</code> for 
-  this argument.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   data_type = oneOf(&quot;void int short long char float double&quot;)
-   decl_data_type = Combine(data_type + Optional(Word('*')))
-   ident = Word(alphas+'_', alphanums+'_')
-   number = pyparsing_common.number
-   arg = Group(decl_data_type + ident)
-   LPAR,RPAR = map(Suppress, &quot;()&quot;)
-
-   code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment))
-
-   c_function = (decl_data_type(&quot;type&quot;)
-                 + ident(&quot;name&quot;)
-                 + LPAR + Optional(delimitedList(arg), [])(&quot;args&quot;) + RPAR
-                 + code_body(&quot;body&quot;))
-   c_function.ignore(cStyleComment)
-
-   source_code = '''
-       int is_odd(int x) {
-           return (x%2);
-       }
-
-       int dec_to_hex(char hchar) {
-           if (hchar &gt;= '0' &amp;&amp; hchar &lt;= '9') {
-               return (ord(hchar)-ord('0'));
-           } else {
-               return (10+ord(hchar)-ord('A'));
-           }
-       }
-   '''
-   for func in c_function.searchString(source_code):
-       print(&quot;%(name)s (%(type)s) args: %(args)s&quot; % func)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   is_odd (int) args: [['int', 'x']]
-   dec_to_hex (int) args: [['char', 'hchar']]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="indentedBlock"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">indentedBlock</span>(<span class="sig-arg">blockStatementExpr</span>,
-        <span class="sig-arg">indentStack</span>,
-        <span class="sig-arg">indent</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#indentedBlock">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for defining space-delimited indentation blocks, such as
-  those used to define block statements in Python source code.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      blockStatementExpr - expression defining syntax of statement that is 
-      repeated within the indented block
-    </li>
-    <li>
-      indentStack - list created by caller to manage indentation stack 
-      (multiple statementWithIndentedBlock expressions within a single 
-      grammar should share a common indentStack)
-    </li>
-    <li>
-      indent - boolean indicating whether block must be indented beyond the
-      the current level; set to False for block of left-most statements 
-      (default=<code>True</code>)
-    </li>
-  </ul>
-  <p>A valid block must contain at least one 
-  <code>blockStatement</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   data = '''
-   def A(z):
-     A1
-     B = 100
-     G = A2
-     A2
-     A3
-   B
-   def BB(a,b,c):
-     BB1
-     def BBA():
-       bba1
-       bba2
-       bba3
-   C
-   D
-   def spam(x,y):
-        def eggs(z):
-            pass
-   '''
-
-
-   indentStack = [1]
-   stmt = Forward()
-
-   identifier = Word(alphas, alphanums)
-   funcDecl = (&quot;def&quot; + identifier + Group( &quot;(&quot; + Optional( delimitedList(identifier) ) + &quot;)&quot; ) + &quot;:&quot;)
-   func_body = indentedBlock(stmt, indentStack)
-   funcDef = Group( funcDecl + func_body )
-
-   rvalue = Forward()
-   funcCall = Group(identifier + &quot;(&quot; + Optional(delimitedList(rvalue)) + &quot;)&quot;)
-   rvalue &lt;&lt; (funcCall | identifier | Word(nums))
-   assignment = Group(identifier + &quot;=&quot; + rvalue)
-   stmt &lt;&lt; ( funcDef | assignment | identifier )
-
-   module_body = OneOrMore(stmt)
-
-   parseTree = module_body.parseString(data)
-   parseTree.pprint()
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['def',
-     'A',
-     ['(', 'z', ')'],
-     ':',
-     [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]],
-    'B',
-    ['def',
-     'BB',
-     ['(', 'a', 'b', 'c', ')'],
-     ':',
-     [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]],
-    'C',
-    'D',
-    ['def',
-     'spam',
-     ['(', 'x', 'y', ')'],
-     ':',
-     [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== VARIABLES DETAILS ==================== -->
-<a name="section-VariablesDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables Details</span></td>
-</tr>
-</table>
-<a name="alphanums"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">alphanums</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="printables"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">printables</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!&quot;#$%&amp;\</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-<code class="variable-string">'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="alphas8bit"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">alphas8bit</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">u'</code><code class="variable-string">&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="commaSeparatedList"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">commaSeparatedList</h3>
-  <p>(Deprecated) Predefined expression of 1 or more printable words or 
-  quoted strings, separated by commas. This expression is deprecated in 
-  favor of <a 
-  href="pyparsing.pyparsing_common-class.html#comma_separated_list" 
-  class="link">pyparsing_common.comma_separated_list</a>.</p>
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-commaSeparatedList
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/module-tree.html b/htmldoc/module-tree.html
deleted file mode 100644 (file)
index e694b3d..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Module Hierarchy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<center><b>
- [ <a href="module-tree.html">Module Hierarchy</a>
- | <a href="class-tree.html">Class Hierarchy</a> ]
-</b></center><br />
-<h1 class="epydoc">Module Hierarchy</h1>
-<ul class="nomargin-top">
-    <li> <strong class="uidlink"><a href="pyparsing-module.html">pyparsing</a></strong>: <em class="summary">The pyparsing module is an alternative approach to creating and 
-        executing simple grammars, vs.</em>    </li>
-</ul>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing-module.html b/htmldoc/pyparsing-module.html
deleted file mode 100644 (file)
index b55d2a9..0000000
+++ /dev/null
@@ -1,2766 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        Module&nbsp;pyparsing
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module pyparsing</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html">source&nbsp;code</a></span></p>
-<h1 class="heading">pyparsing module - Classes and methods to define and execute parsing grammars</h1>
-    <p>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.  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.</p>
-    <p>Here is a program to parse &quot;Hello, World!&quot; (or any 
-    greeting of the form <code>&quot;&lt;salutation&gt;, 
-    &lt;addressee&gt;!&quot;</code>), built up using <a 
-    href="pyparsing.Word-class.html" class="link">Word</a>, <a 
-    href="pyparsing.Literal-class.html" class="link" 
-    onclick="show_private();">Literal</a>, and <a 
-    href="pyparsing.And-class.html" class="link">And</a> elements (<a 
-    href="pyparsing.ParserElement-class.html#__add__" class="link">'+'</a> 
-    operator gives <a href="pyparsing.And-class.html" class="link">And</a> 
-    expressions, strings are auto-converted to <a 
-    href="pyparsing.Literal-class.html" class="link" 
-    onclick="show_private();">Literal</a> expressions):</p>
-<pre class="literalblock">
-   from pyparsing import Word, alphas
-
-   # define grammar of a greeting
-   greet = Word(alphas) + &quot;,&quot; + Word(alphas) + &quot;!&quot;
-
-   hello = &quot;Hello, World!&quot;
-   print (hello, &quot;-&gt;&quot;, greet.parseString(hello))
-</pre>
-    <p>The program outputs the following:</p>
-<pre class="literalblock">
-   Hello, World! -&gt; ['Hello', ',', 'World', '!']
-</pre>
-    <p>The Python representation of the grammar is quite readable, owing to
-    the self-explanatory class names, and the use of '+', '|' and '^' 
-    operators.</p>
-    <p>The <a href="pyparsing.ParseResults-class.html" 
-    class="link">ParseResults</a> object returned from <a 
-    href="pyparsing.ParserElement-class.html#parseString" 
-    class="link">ParserElement.parseString</a> can be accessed as a nested 
-    list, a dictionary, or an object with named attributes.</p>
-    <p>The pyparsing module handles some of the problems that are typically
-    vexing when writing text parsers:</p>
-    <ul>
-      <li>
-        extra or missing whitespace (the above program will also handle 
-        &quot;Hello,World!&quot;, &quot;Hello  ,  World  !&quot;, etc.)
-      </li>
-      <li>
-        quoted strings
-      </li>
-      <li>
-        embedded comments
-      </li>
-    </ul>
-    <h2 class="heading">Getting Started -</h2>
-      <p>Visit the classes <a href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a> and <a 
-      href="pyparsing.ParseResults-class.html" 
-      class="link">ParseResults</a> to see the base classes that most other
-      pyparsing classes inherit from. Use the docstrings for examples of 
-      how to:</p>
-      <ul>
-        <li>
-          construct literal match expressions from <a 
-          href="pyparsing.Literal-class.html" class="link" 
-          onclick="show_private();">Literal</a> and <a 
-          href="pyparsing.CaselessLiteral-class.html" 
-          class="link">CaselessLiteral</a> classes
-        </li>
-        <li>
-          construct character word-group expressions using the <a 
-          href="pyparsing.Word-class.html" class="link">Word</a> class
-        </li>
-        <li>
-          see how to create repetitive expressions using <a 
-          href="pyparsing.ZeroOrMore-class.html" 
-          class="link">ZeroOrMore</a> and <a 
-          href="pyparsing.OneOrMore-class.html" class="link">OneOrMore</a> 
-          classes
-        </li>
-        <li>
-          use <a href="pyparsing.And-class.html" class="link">'+'</a>, <a 
-          href="pyparsing.MatchFirst-class.html" class="link">'|'</a>, <a 
-          href="pyparsing.Or-class.html" class="link">'^'</a>, and <a 
-          href="pyparsing.Each-class.html" class="link">'&amp;'</a> 
-          operators to combine simple expressions into more complex ones
-        </li>
-        <li>
-          associate names with your parsed results using <a 
-          href="pyparsing.ParserElement-class.html#setResultsName" 
-          class="link">ParserElement.setResultsName</a>
-        </li>
-        <li>
-          find some helpful expression short-cuts like <a 
-          href="pyparsing-module.html#delimitedList" 
-          class="link">delimitedList</a> and <a 
-          href="pyparsing-module.html#oneOf" class="link">oneOf</a>
-        </li>
-        <li>
-          find more useful common expressions in the <a 
-          href="pyparsing.pyparsing_common-class.html" 
-          class="link">pyparsing_common</a> namespace class
-        </li>
-      </ul>
-
-<hr />
-<div class="fields">      <p><strong>Version:</strong>
-        2.3.0
-      </p>
-      <p><strong>Author:</strong>
-        Paul McGuire &lt;ptmcg@users.sourceforge.net&gt;
-      </p>
-</div><!-- ==================== CLASSES ==================== -->
-<a name="section-Classes"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseBaseException-class.html" class="summary-name">ParseBaseException</a><br />
-      base exception class for all parsing runtime exceptions
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseException-class.html" class="summary-name">ParseException</a><br />
-      Exception thrown when parse expressions don't match class; 
-        supported attributes by name are:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseFatalException-class.html" class="summary-name">ParseFatalException</a><br />
-      user-throwable exception thrown when inconsistent parse content is 
-        found; stops all parsing immediately
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseSyntaxException-class.html" class="summary-name">ParseSyntaxException</a><br />
-      just like <a href="pyparsing.ParseFatalException-class.html" 
-        class="link">ParseFatalException</a>, but thrown internally when an
-        ErrorStop ('-' operator) indicates that parsing is to stop 
-        immediately because an unbacktrackable syntax error has been found
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.RecursiveGrammarException-class.html" class="summary-name">RecursiveGrammarException</a><br />
-      exception thrown by <a 
-        href="pyparsing.ParserElement-class.html#validate" 
-        class="link">ParserElement.validate</a> if the grammar could be 
-        improperly recursive
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseResults-class.html" class="summary-name">ParseResults</a><br />
-      Structured parse results, to provide multiple means of access to 
-        the parsed data:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParserElement-class.html" class="summary-name">ParserElement</a><br />
-      Abstract base level parser element class.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Token-class.html" class="summary-name">Token</a><br />
-      Abstract <code>ParserElement</code> subclass, for defining atomic 
-        matching patterns.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Empty-class.html" class="summary-name">Empty</a><br />
-      An empty token, will always match.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.NoMatch-class.html" class="summary-name">NoMatch</a><br />
-      A token that will never match.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Literal-class.html" class="summary-name">Literal</a><br />
-      Token to exactly match a specified string.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Keyword-class.html" class="summary-name">Keyword</a><br />
-      Token to exactly match a specified string as a keyword, that is, it
-        must be immediately followed by a non-keyword character.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CaselessLiteral-class.html" class="summary-name">CaselessLiteral</a><br />
-      Token to match a specified string, ignoring case of letters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CaselessKeyword-class.html" class="summary-name">CaselessKeyword</a><br />
-      Caseless version of <a href="pyparsing.Keyword-class.html" 
-        class="link">Keyword</a>.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CloseMatch-class.html" class="summary-name">CloseMatch</a><br />
-      A variation on <a href="pyparsing.Literal-class.html" class="link" 
-        onclick="show_private();">Literal</a> which matches 
-        &quot;close&quot; matches, that is, strings with at most 'n' 
-        mismatching characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Word-class.html" class="summary-name">Word</a><br />
-      Token for matching words composed of allowed character sets.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Char-class.html" class="summary-name">Char</a><br />
-      A short-cut class for defining <code>Word(characters, 
-        exact=1)</code>, when defining a match of any single character in a
-        string of characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Regex-class.html" class="summary-name">Regex</a><br />
-      Token for matching strings that match a given regular expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.QuotedString-class.html" class="summary-name">QuotedString</a><br />
-      Token for matching strings that are delimited by quoting 
-        characters.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.CharsNotIn-class.html" class="summary-name">CharsNotIn</a><br />
-      Token for matching words composed of characters <i>not</i> in a 
-        given set (will include whitespace in matched characters if not 
-        listed in the provided exclusion set - see example).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.White-class.html" class="summary-name">White</a><br />
-      Special matching class for matching whitespace.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.GoToColumn-class.html" class="summary-name">GoToColumn</a><br />
-      Token to advance to a specific column of input text; useful for 
-        tabular report scraping.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.LineStart-class.html" class="summary-name">LineStart</a><br />
-      Matches if current position is at the beginning of a line within 
-        the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.LineEnd-class.html" class="summary-name">LineEnd</a><br />
-      Matches if current position is at the end of a line within the 
-        parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.StringStart-class.html" class="summary-name">StringStart</a><br />
-      Matches if current position is at the beginning of the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.StringEnd-class.html" class="summary-name">StringEnd</a><br />
-      Matches if current position is at the end of the parse string
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.WordStart-class.html" class="summary-name">WordStart</a><br />
-      Matches if the current position is at the beginning of a Word, and 
-        is not preceded by any character in a given set of 
-        <code>wordChars</code> (default=<code>printables</code>).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.WordEnd-class.html" class="summary-name">WordEnd</a><br />
-      Matches if the current position is at the end of a Word, and is not
-        followed by any character in a given set of <code>wordChars</code> 
-        (default=<code>printables</code>).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseExpression-class.html" class="summary-name">ParseExpression</a><br />
-      Abstract subclass of ParserElement, for combining and 
-        post-processing parsed tokens.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.And-class.html" class="summary-name">And</a><br />
-      Requires all given <code>ParseExpression</code>s to be found in the
-        given order.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Or-class.html" class="summary-name">Or</a><br />
-      Requires that at least one <code>ParseExpression</code> is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.MatchFirst-class.html" class="summary-name">MatchFirst</a><br />
-      Requires that at least one <code>ParseExpression</code> is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Each-class.html" class="summary-name">Each</a><br />
-      Requires all given <code>ParseExpression</code>s to be found, but 
-        in any order.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ParseElementEnhance-class.html" class="summary-name">ParseElementEnhance</a><br />
-      Abstract subclass of <code>ParserElement</code>, for combining and 
-        post-processing parsed tokens.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.FollowedBy-class.html" class="summary-name">FollowedBy</a><br />
-      Lookahead matching of the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.PrecededBy-class.html" class="summary-name">PrecededBy</a><br />
-      Lookbehind matching of the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.NotAny-class.html" class="summary-name">NotAny</a><br />
-      Lookahead to disallow matching with the given parse expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.OneOrMore-class.html" class="summary-name">OneOrMore</a><br />
-      Repetition of one or more of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.ZeroOrMore-class.html" class="summary-name">ZeroOrMore</a><br />
-      Optional repetition of zero or more of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Optional-class.html" class="summary-name">Optional</a><br />
-      Optional matching of the given expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.SkipTo-class.html" class="summary-name">SkipTo</a><br />
-      Token for skipping over all undefined text until the matched 
-        expression is found.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Forward-class.html" class="summary-name">Forward</a><br />
-      Forward declaration of an expression to be defined later - used for
-        recursive grammars, such as algebraic infix notation.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.TokenConverter-class.html" class="summary-name">TokenConverter</a><br />
-      Abstract subclass of <code>ParseExpression</code>, for converting 
-        parsed results.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Combine-class.html" class="summary-name">Combine</a><br />
-      Converter to concatenate all matching tokens to a single string.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Group-class.html" class="summary-name">Group</a><br />
-      Converter to return the matched tokens as a list - useful for 
-        returning tokens of <code><a href="pyparsing.ZeroOrMore-class.html"
-        class="link">ZeroOrMore</a></code> and <code><a 
-        href="pyparsing.OneOrMore-class.html" 
-        class="link">OneOrMore</a></code> expressions.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Dict-class.html" class="summary-name">Dict</a><br />
-      Converter to return a repetitive expression as a list, but also as 
-        a dictionary.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Suppress-class.html" class="summary-name">Suppress</a><br />
-      Converter for ignoring the results of a parsed expression.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.OnlyOnce-class.html" class="summary-name">OnlyOnce</a><br />
-      Wrapper for parse actions, to ensure they are only called once.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_common-class.html" class="summary-name">pyparsing_common</a><br />
-      Here are some common low-level expressions that may be useful in 
-        jump-starting parser development:
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.unicode_set-class.html" class="summary-name">unicode_set</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode-class.html" class="summary-name">pyparsing_unicode</a>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTIONS ==================== -->
-<a name="section-Functions"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Functions</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#col" class="summary-sig-name">col</a>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns current column within a string, counting newlines as line 
-      separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#col">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#lineno" class="summary-sig-name">lineno</a>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns current line number within a string, counting newlines as 
-      line separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#lineno">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="line"></a><span class="summary-sig-name">line</span>(<span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">strg</span>)</span><br />
-      Returns the line of text containing loc within a string, counting 
-      newlines as line separators.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#line">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="nullDebugAction"></a><span class="summary-sig-name">nullDebugAction</span>(<span class="summary-sig-arg">*args</span>)</span><br />
-      'Do-nothing' debug action, to suppress debugging output during 
-      parsing.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#nullDebugAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#traceParseAction" class="summary-sig-name">traceParseAction</a>(<span class="summary-sig-arg">f</span>)</span><br />
-      Decorator for debugging parse actions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#traceParseAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#delimitedList" class="summary-sig-name">delimitedList</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">delim</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">,</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">combine</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Helper to define a delimited list of expressions - the delimiter 
-      defaults to ','.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#delimitedList">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#countedArray" class="summary-sig-name">countedArray</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">intExpr</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Helper to define a counted list of expressions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#countedArray">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#matchPreviousLiteral" class="summary-sig-name">matchPreviousLiteral</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to define an expression that is indirectly defined from the 
-      tokens matched in a previous expression, that is, it looks for a 
-      'repeat' of a previous expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousLiteral">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#matchPreviousExpr" class="summary-sig-name">matchPreviousExpr</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to define an expression that is indirectly defined from the 
-      tokens matched in a previous expression, that is, it looks for a 
-      'repeat' of a previous expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#oneOf" class="summary-sig-name">oneOf</a>(<span class="summary-sig-arg">strs</span>,
-        <span class="summary-sig-arg">caseless</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">useRegex</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper to quickly define a set of alternative Literals, and makes 
-      sure to do longest-first testing when there is a conflict, regardless
-      of the input order, but returns a <code><a 
-      href="pyparsing.MatchFirst-class.html" 
-      class="link">MatchFirst</a></code> for best performance.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#oneOf">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#dictOf" class="summary-sig-name">dictOf</a>(<span class="summary-sig-arg">key</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Helper to easily and clearly define a dictionary by specifying the 
-      respective patterns for the key and value.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#dictOf">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#originalTextFor" class="summary-sig-name">originalTextFor</a>(<span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">asString</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper to return the original, untokenized text for a given 
-      expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#originalTextFor">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="ungroup"></a><span class="summary-sig-name">ungroup</span>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to undo pyparsing's default grouping of And expressions, even 
-      if all but one are non-empty.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ungroup">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#locatedExpr" class="summary-sig-name">locatedExpr</a>(<span class="summary-sig-arg">expr</span>)</span><br />
-      Helper to decorate a returned token with its starting and ending 
-      locations in the input string.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#locatedExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#srange" class="summary-sig-name">srange</a>(<span class="summary-sig-arg">s</span>)</span><br />
-      Helper to easily define string ranges for use in Word construction.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#srange">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="matchOnlyAtCol"></a><span class="summary-sig-name">matchOnlyAtCol</span>(<span class="summary-sig-arg">n</span>)</span><br />
-      Helper method for defining parse actions that require matching at a 
-      specific column in the input text.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#matchOnlyAtCol">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#replaceWith" class="summary-sig-name">replaceWith</a>(<span class="summary-sig-arg">replStr</span>)</span><br />
-      Helper method for common parse actions that simply return a literal 
-      value.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#replaceWith">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#removeQuotes" class="summary-sig-name">removeQuotes</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Helper parse action for removing quotation marks from parsed quoted 
-      strings.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#removeQuotes">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#tokenMap" class="summary-sig-name">tokenMap</a>(<span class="summary-sig-arg">func</span>,
-        <span class="summary-sig-arg">*args</span>)</span><br />
-      Helper to define a parse action by mapping a function to all elements
-      of a ParseResults list.If any additional args are passed, they are 
-      forwarded to the given function as additional arguments after the 
-      token, as in <code>hex_integer = 
-      Word(hexnums).setParseAction(tokenMap(int, 16))</code>, which will 
-      convert the parsed data to an integer using base 16.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#tokenMap">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#upcaseTokens" class="summary-sig-name">upcaseTokens</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      (Deprecated) Helper parse action to convert tokens to upper case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#upcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#downcaseTokens" class="summary-sig-name">downcaseTokens</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      (Deprecated) Helper parse action to convert tokens to lower case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#downcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#makeHTMLTags" class="summary-sig-name">makeHTMLTags</a>(<span class="summary-sig-arg">tagStr</span>)</span><br />
-      Helper to construct opening and closing tag expressions for HTML, 
-      given a tag name.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#makeHTMLTags">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#makeXMLTags" class="summary-sig-name">makeXMLTags</a>(<span class="summary-sig-arg">tagStr</span>)</span><br />
-      Helper to construct opening and closing tag expressions for XML, 
-      given a tag name.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#makeXMLTags">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#withAttribute" class="summary-sig-name">withAttribute</a>(<span class="summary-sig-arg">*args</span>,
-        <span class="summary-sig-arg">**attrDict</span>)</span><br />
-      Helper to create a validating parse action to be used with start tags
-      created with <code><a href="pyparsing-module.html#makeXMLTags" 
-      class="link">makeXMLTags</a></code> or <code><a 
-      href="pyparsing-module.html#makeHTMLTags" 
-      class="link">makeHTMLTags</a></code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#withAttribute">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#withClass" class="summary-sig-name">withClass</a>(<span class="summary-sig-arg">classname</span>,
-        <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
-      Simplified version of <code><a 
-      href="pyparsing-module.html#withAttribute" 
-      class="link">withAttribute</a></code> when matching on a div class - 
-      made difficult because <code>class</code> is a reserved word in 
-      Python.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#withClass">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#infixNotation" class="summary-sig-name">infixNotation</a>(<span class="summary-sig-arg">baseExpr</span>,
-        <span class="summary-sig-arg">opList</span>,
-        <span class="summary-sig-arg">lpar</span>=<span class="summary-sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="summary-sig-arg">rpar</span>=<span class="summary-sig-default">Suppress:(&quot;)&quot;)</span>)</span><br />
-      Helper method for constructing grammars of expressions made up of 
-      operators working in a precedence hierarchy.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#operatorPrecedence" class="summary-sig-name">operatorPrecedence</a>(<span class="summary-sig-arg">baseExpr</span>,
-        <span class="summary-sig-arg">opList</span>,
-        <span class="summary-sig-arg">lpar</span>=<span class="summary-sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="summary-sig-arg">rpar</span>=<span class="summary-sig-default">Suppress:(&quot;)&quot;)</span>)</span><br />
-      (Deprecated) Former name of <code><a 
-      href="pyparsing-module.html#infixNotation" 
-      class="link">infixNotation</a></code>, will be dropped in a future 
-      release.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#nestedExpr" class="summary-sig-name">nestedExpr</a>(<span class="summary-sig-arg">opener</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">(</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">closer</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">)</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">content</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">ignoreExpr</span>=<span class="summary-sig-default">quotedString using single or double quotes</span>)</span><br />
-      Helper method for defining nested lists enclosed in opening and 
-      closing delimiters (&quot;(&quot; and &quot;)&quot; are the default).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#nestedExpr">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing-module.html#indentedBlock" class="summary-sig-name">indentedBlock</a>(<span class="summary-sig-arg">blockStatementExpr</span>,
-        <span class="summary-sig-arg">indentStack</span>,
-        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Helper method for defining space-delimited indentation blocks, such 
-      as those used to define block statements in Python source code.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#indentedBlock">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="replaceHTMLEntity"></a><span class="summary-sig-name">replaceHTMLEntity</span>(<span class="summary-sig-arg">t</span>)</span><br />
-      Helper parser action to replace common HTML entities with their 
-      special characters</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#replaceHTMLEntity">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== VARIABLES ==================== -->
-<a name="section-Variables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="alphas"></a><span class="summary-name">alphas</span> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="nums"></a><span class="summary-name">nums</span> = <code title="'0123456789'"><code class="variable-quote">'</code><code class="variable-string">0123456789</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="hexnums"></a><span class="summary-name">hexnums</span> = <code title="'0123456789ABCDEFabcdef'"><code class="variable-quote">'</code><code class="variable-string">0123456789ABCDEFabcdef</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#alphanums" class="summary-name">alphanums</a> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#printables" class="summary-name">printables</a> = <code title="'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!&quot;#$%&amp;\\
-'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~'"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="empty"></a><span class="summary-name">empty</span> = <code title="empty">empty</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="lineStart"></a><span class="summary-name">lineStart</span> = <code title="lineStart">lineStart</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="lineEnd"></a><span class="summary-name">lineEnd</span> = <code title="lineEnd">lineEnd</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="stringStart"></a><span class="summary-name">stringStart</span> = <code title="stringStart">stringStart</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="stringEnd"></a><span class="summary-name">stringEnd</span> = <code title="stringEnd">stringEnd</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="opAssoc"></a><span class="summary-name">opAssoc</span> = <code title="SimpleNamespace()">SimpleNamespace()</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="dblQuotedString"></a><span class="summary-name">dblQuotedString</span> = <code title="string enclosed in double quotes">string enclosed in double quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="sglQuotedString"></a><span class="summary-name">sglQuotedString</span> = <code title="string enclosed in single quotes">string enclosed in single quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="quotedString"></a><span class="summary-name">quotedString</span> = <code title="quotedString using single or double quotes">quotedString using single or double quotes</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="unicodeString"></a><span class="summary-name">unicodeString</span> = <code title="unicode string literal">unicode string literal</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#alphas8bit" class="summary-name">alphas8bit</a> = <code title="u'&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;'"><code class="variable-quote">u'</code><code class="variable-string">&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="punc8bit"></a><span class="summary-name">punc8bit</span> = <code title="u'&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#215;&#247;'"><code class="variable-quote">u'</code><code class="variable-string">&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#215;&#247;</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="commonHTMLEntity"></a><span class="summary-name">commonHTMLEntity</span> = <code title="common HTML entity">common HTML entity</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="cStyleComment"></a><span class="summary-name">cStyleComment</span> = <code title="C style comment">C style comment</code><br />
-      Comment of the form <code>/* ... */</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="htmlComment"></a><span class="summary-name">htmlComment</span> = <code title="HTML comment">HTML comment</code><br />
-      Comment of the form <code>&lt;!-- ... --&gt;</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="restOfLine"></a><span class="summary-name">restOfLine</span> = <code title="rest of line">rest of line</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="dblSlashComment"></a><span class="summary-name">dblSlashComment</span> = <code title="// comment">// comment</code><br />
-      Comment of the form <code>// ... (to end of line)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="cppStyleComment"></a><span class="summary-name">cppStyleComment</span> = <code title="C++ style comment">C++ style comment</code><br />
-      Comment of either form <code><a 
-      href="pyparsing-module.html#cStyleComment" 
-      class="link">cStyleComment</a></code> or <code><a 
-      href="pyparsing-module.html#dblSlashComment" 
-      class="link">dblSlashComment</a></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="javaStyleComment"></a><span class="summary-name">javaStyleComment</span> = <code title="C++ style comment">C++ style comment</code><br />
-      Same as <code><a href="pyparsing-module.html#cppStyleComment" 
-      class="link">cppStyleComment</a></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="pythonStyleComment"></a><span class="summary-name">pythonStyleComment</span> = <code title="Python style comment">Python style comment</code><br />
-      Comment of the form <code># ... (to end of line)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing-module.html#commaSeparatedList" class="summary-name">commaSeparatedList</a> = <code title="commaSeparatedList">commaSeparatedList</code><br />
-      (Deprecated) Predefined expression of 1 or more printable words or 
-      quoted strings, separated by commas.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="anyCloseTag"></a><span class="summary-name">anyCloseTag</span> = <code title="&lt;/any tag&gt;">&lt;/any tag&gt;</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="anyOpenTag"></a><span class="summary-name">anyOpenTag</span> = <code title="&lt;any tag&gt;">&lt;any tag&gt;</code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTION DETAILS ==================== -->
-<a name="section-FunctionDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Function Details</span></td>
-</tr>
-</table>
-<a name="col"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">col</span>(<span class="sig-arg">loc</span>,
-        <span class="sig-arg">strg</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#col">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns current column within a string, counting newlines as line 
-  separators. The first column is number 1.</p>
-  <p>Note: the default parsing behavior is to expand tabs in the input 
-  string before starting the parsing process.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>ParserElement.parseString</i></a> for more information on
-  parsing strings containing <code>&lt;TAB&gt;</code>s, and suggested 
-  methods to maintain a consistent view of the parsed string, the parse 
-  location, and line and column positions within the parsed string.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="lineno"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">lineno</span>(<span class="sig-arg">loc</span>,
-        <span class="sig-arg">strg</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#lineno">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns current line number within a string, counting newlines as line
-  separators. The first line is number 1.</p>
-  <p>Note: the default parsing behavior is to expand tabs in the input 
-  string before starting the parsing process.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>ParserElement.parseString</i></a> for more information on
-  parsing strings containing <code>&lt;TAB&gt;</code>s, and suggested 
-  methods to maintain a consistent view of the parsed string, the parse 
-  location, and line and column positions within the parsed string.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="traceParseAction"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">traceParseAction</span>(<span class="sig-arg">f</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#traceParseAction">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Decorator for debugging parse actions.</p>
-  <p>When the parse action is called, this decorator will print 
-  <code>&quot;&gt;&gt; entering 
-  <i>method-name</i>(line:<i>current_source_line</i>, 
-  <i>parse_location</i>, <i>matched_tokens</i>)&quot;.</code> When the 
-  parse action completes, the decorator will print 
-  <code>&quot;&lt;&lt;&quot;</code> followed by the returned value, or any 
-  exception that the parse action raised.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas)
-
-   @traceParseAction
-   def remove_duplicate_chars(tokens):
-       return ''.join(sorted(set(''.join(tokens))))
-
-   wds = OneOrMore(wd).setParseAction(remove_duplicate_chars)
-   print(wds.parseString(&quot;slkdjs sld sldd sdlf sdljf&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   &gt;&gt;entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {}))
-   &lt;&lt;leaving remove_duplicate_chars (ret: 'dfjkls')
-   ['dfjkls']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="delimitedList"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">delimitedList</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">delim</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">,</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">combine</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#delimitedList">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a delimited list of expressions - the delimiter 
-  defaults to ','. By default, the list elements and delimiters can have 
-  intervening whitespace, and comments, but this can be overridden by 
-  passing <code>combine=True</code> in the constructor. If 
-  <code>combine</code> is set to <code>True</code>, the matching tokens are
-  returned as a single token string, with the delimiters included; 
-  otherwise, the matching tokens are returned as a list of tokens, with the
-  delimiters suppressed.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   delimitedList(Word(alphas)).parseString(&quot;aa,bb,cc&quot;) # -&gt; ['aa', 'bb', 'cc']
-   delimitedList(Word(hexnums), delim=':', combine=True).parseString(&quot;AA:BB:CC:DD:EE&quot;) # -&gt; ['AA:BB:CC:DD:EE']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="countedArray"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">countedArray</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">intExpr</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#countedArray">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a counted list of expressions. This helper defines a 
-  pattern of the form:</p>
-<pre class="literalblock">
-   integer expr expr expr...
-</pre>
-  <p>where the leading integer tells how many expr expressions follow. The 
-  matched tokens returns the array of expr tokens as a list - the leading 
-  count token is suppressed.</p>
-  <p>If <code>intExpr</code> is specified, it should be a pyparsing 
-  expression that produces an integer value.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   countedArray(Word(alphas)).parseString('2 ab cd ef')  # -&gt; ['ab', 'cd']
-
-   # in this parser, the leading integer value is given in binary,
-   # '10' indicating that 2 values are in the array
-   binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2))
-   countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef')  # -&gt; ['ab', 'cd']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="matchPreviousLiteral"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">matchPreviousLiteral</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousLiteral">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define an expression that is indirectly defined from the 
-  tokens matched in a previous expression, that is, it looks for a 'repeat'
-  of a previous expression.  For example:</p>
-<pre class="literalblock">
-   first = Word(nums)
-   second = matchPreviousLiteral(first)
-   matchExpr = first + &quot;:&quot; + second
-</pre>
-  <p>will match <code>&quot;1:1&quot;</code>, but not 
-  <code>&quot;1:2&quot;</code>.  Because this matches a previous literal, 
-  will also match the leading <code>&quot;1:1&quot;</code> in 
-  <code>&quot;1:10&quot;</code>. If this is not desired, use 
-  <code>matchPreviousExpr</code>. Do <i>not</i> use with packrat parsing 
-  enabled.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="matchPreviousExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">matchPreviousExpr</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#matchPreviousExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define an expression that is indirectly defined from the 
-  tokens matched in a previous expression, that is, it looks for a 'repeat'
-  of a previous expression.  For example:</p>
-<pre class="literalblock">
-   first = Word(nums)
-   second = matchPreviousExpr(first)
-   matchExpr = first + &quot;:&quot; + second
-</pre>
-  <p>will match <code>&quot;1:1&quot;</code>, but not 
-  <code>&quot;1:2&quot;</code>.  Because this matches by expressions, will 
-  <i>not</i> match the leading <code>&quot;1:1&quot;</code> in 
-  <code>&quot;1:10&quot;</code>; the expressions are evaluated first, and 
-  then compared, so <code>&quot;1&quot;</code> is compared with 
-  <code>&quot;10&quot;</code>. Do <i>not</i> use with packrat parsing 
-  enabled.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="oneOf"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">oneOf</span>(<span class="sig-arg">strs</span>,
-        <span class="sig-arg">caseless</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">useRegex</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#oneOf">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to quickly define a set of alternative Literals, and makes sure
-  to do longest-first testing when there is a conflict, regardless of the 
-  input order, but returns a <code><a 
-  href="pyparsing.MatchFirst-class.html" class="link">MatchFirst</a></code>
-  for best performance.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      strs - a string of space-delimited literals, or a collection of 
-      string literals
-    </li>
-    <li>
-      caseless - (default=<code>False</code>) - treat all literals as 
-      caseless
-    </li>
-    <li>
-      useRegex - (default=<code>True</code>) - as an optimization, will 
-      generate a Regex object; otherwise, will generate a 
-      <code>MatchFirst</code> object (if <code>caseless=True</code>, or if 
-      creating a <code>Regex</code> raises an exception)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   comp_oper = oneOf(&quot;&lt; = &gt; &lt;= &gt;= !=&quot;)
-   var = Word(alphas)
-   number = Word(nums)
-   term = var | number
-   comparison_expr = term + comp_oper + term
-   print(comparison_expr.searchString(&quot;B = 12  AA=23 B&lt;=AA AA&gt;12&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['B', '=', '12'], ['AA', '=', '23'], ['B', '&lt;=', 'AA'], ['AA', '&gt;', '12']]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="dictOf"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">dictOf</span>(<span class="sig-arg">key</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#dictOf">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to easily and clearly define a dictionary by specifying the 
-  respective patterns for the key and value.  Takes care of defining the 
-  <code><a href="pyparsing.Dict-class.html" class="link">Dict</a></code>, 
-  <code><a href="pyparsing.ZeroOrMore-class.html" 
-  class="link">ZeroOrMore</a></code>, and <code><a 
-  href="pyparsing.Group-class.html" class="link">Group</a></code> tokens in
-  the proper order.  The key pattern can include delimiting markers or 
-  punctuation, as long as they are suppressed, thereby leaving the 
-  significant key text.  The value pattern can include named results, so 
-  that the <code>Dict</code> results can include named token fields.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   text = &quot;shape: SQUARE posn: upper left color: light blue texture: burlap&quot;
-   attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
-   print(OneOrMore(attr_expr).parseString(text).dump())
-
-   attr_label = label
-   attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)
-
-   # similar to Dict, but simpler call format
-   result = dictOf(attr_label, attr_value).parseString(text)
-   print(result.dump())
-   print(result['shape'])
-   print(result.shape)  # object attribute access works too
-   print(result.asDict())
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
-   - color: light blue
-   - posn: upper left
-   - shape: SQUARE
-   - texture: burlap
-   SQUARE
-   SQUARE
-   {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'}
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="originalTextFor"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">originalTextFor</span>(<span class="sig-arg">expr</span>,
-        <span class="sig-arg">asString</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#originalTextFor">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to return the original, untokenized text for a given 
-  expression.  Useful to restore the parsed fields of an HTML start tag 
-  into the raw tag text itself, or to revert separate tokens with 
-  intervening whitespace back to the original matching input text. By 
-  default, returns astring containing the original parsed text.</p>
-  <p>If the optional <code>asString</code> argument is passed as 
-  <code>False</code>, then the return value is a <code><a 
-  href="pyparsing.ParseResults-class.html" 
-  class="link">ParseResults</a></code> containing any results names that 
-  were originally matched, and a single token containing the original 
-  matched text from the input string.  So if the expression passed to 
-  <code><a href="pyparsing-module.html#originalTextFor" 
-  class="link">originalTextFor</a></code> contains expressions with defined
-  results names, you must set <code>asString</code> to <code>False</code> 
-  if you want to preserve those results name values.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   src = &quot;this is test &lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt; normal text &quot;
-   for tag in (&quot;b&quot;,&quot;i&quot;):
-       opener,closer = makeHTMLTags(tag)
-       patt = originalTextFor(opener + SkipTo(closer) + closer)
-       print(patt.searchString(src)[0])
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['&lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt;']
-   ['&lt;i&gt;text&lt;/i&gt;']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="locatedExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">locatedExpr</span>(<span class="sig-arg">expr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#locatedExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to decorate a returned token with its starting and ending 
-  locations in the input string. This helper adds the following results 
-  names:</p>
-  <ul>
-    <li>
-      locn_start = location where matched expression begins
-    </li>
-    <li>
-      locn_end = location where matched expression ends
-    </li>
-    <li>
-      value = the actual parsed results
-    </li>
-  </ul>
-  <p>Be careful if the input text contains <code>&lt;TAB&gt;</code> 
-  characters, you may want to call <code><a 
-  href="pyparsing.ParserElement-class.html#parseWithTabs" 
-  class="link">ParserElement.parseWithTabs</a></code></p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas)
-   for match in locatedExpr(wd).searchString(&quot;ljsdf123lksdjjf123lkkjj1222&quot;):
-       print(match)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [[0, 'ljsdf', 5]]
-   [[8, 'lksdjjf', 15]]
-   [[18, 'lkkjj', 23]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="srange"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">srange</span>(<span class="sig-arg">s</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#srange">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to easily define string ranges for use in Word construction.  
-  Borrows syntax from regexp '[]' string range definitions:</p>
-<pre class="literalblock">
-   srange(&quot;[0-9]&quot;)   -&gt; &quot;0123456789&quot;
-   srange(&quot;[a-z]&quot;)   -&gt; &quot;abcdefghijklmnopqrstuvwxyz&quot;
-   srange(&quot;[a-z$_]&quot;) -&gt; &quot;abcdefghijklmnopqrstuvwxyz$_&quot;
-</pre>
-  <p>The input string must be enclosed in []'s, and the returned string is 
-  the expanded character set joined into a single string. The values 
-  enclosed in the []'s may be:</p>
-  <ul>
-    <li>
-      a single character
-    </li>
-    <li>
-      an escaped character with a leading backslash (such as 
-      <code>\-</code> or <code>\]</code>)
-    </li>
-    <li>
-      an escaped hex character with a leading <code>'\x'</code> 
-      (<code>\x21</code>, which is a <code>'!'</code> character) 
-      (<code>\0x##</code> is also supported for backwards compatibility)
-    </li>
-    <li>
-      an escaped octal character with a leading <code>'\0'</code> 
-      (<code>\041</code>, which is a <code>'!'</code> character)
-    </li>
-    <li>
-      a range of any of the above, separated by a dash (<code>'a-z'</code>,
-      etc.)
-    </li>
-    <li>
-      any combination of the above (<code>'aeiouy'</code>, 
-      <code>'a-zA-Z0-9_$'</code>, etc.)
-    </li>
-  </ul>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="replaceWith"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">replaceWith</span>(<span class="sig-arg">replStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#replaceWith">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for common parse actions that simply return a literal 
-  value.  Especially useful when used with <code><a 
-  href="pyparsing.ParserElement-class.html#transformString" 
-  class="link">transformString</a>()</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   num = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   na = oneOf(&quot;N/A NA&quot;).setParseAction(replaceWith(math.nan))
-   term = na | num
-
-   OneOrMore(term).parseString(&quot;324 234 N/A 234&quot;) # -&gt; [324, 234, nan, 234]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="removeQuotes"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">removeQuotes</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#removeQuotes">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper parse action for removing quotation marks from parsed quoted 
-  strings.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # by default, quotation marks are included in parsed results
-   quotedString.parseString(&quot;'Now is the Winter of our Discontent'&quot;) # -&gt; [&quot;'Now is the Winter of our Discontent'&quot;]
-
-   # use removeQuotes to strip quotation marks from parsed results
-   quotedString.setParseAction(removeQuotes)
-   quotedString.parseString(&quot;'Now is the Winter of our Discontent'&quot;) # -&gt; [&quot;Now is the Winter of our Discontent&quot;]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="tokenMap"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">tokenMap</span>(<span class="sig-arg">func</span>,
-        <span class="sig-arg">*args</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#tokenMap">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to define a parse action by mapping a function to all elements 
-  of a ParseResults list.If any additional args are passed, they are 
-  forwarded to the given function as additional arguments after the token, 
-  as in <code>hex_integer = Word(hexnums).setParseAction(tokenMap(int, 
-  16))</code>, which will convert the parsed data to an integer using base 
-  16.</p>
-  <p>Example (compare the last to example in <a 
-  href="pyparsing.ParserElement-class.html#transformString" 
-  class="link">ParserElement.transformString</a>:</p>
-<pre class="literalblock">
-   hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))
-   hex_ints.runTests('''
-       00 11 22 aa FF 0a 0d 1a
-       ''')
-
-   upperword = Word(alphas).setParseAction(tokenMap(str.upper))
-   OneOrMore(upperword).runTests('''
-       my kingdom for a horse
-       ''')
-
-   wd = Word(alphas).setParseAction(tokenMap(str.title))
-   OneOrMore(wd).setParseAction(' '.join).runTests('''
-       now is the winter of our discontent made glorious summer by this sun of york
-       ''')
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   00 11 22 aa FF 0a 0d 1a
-   [0, 17, 34, 170, 255, 10, 13, 26]
-
-   my kingdom for a horse
-   ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE']
-
-   now is the winter of our discontent made glorious summer by this sun of york
-   ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="upcaseTokens"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">upcaseTokens</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#upcaseTokens">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Helper parse action to convert tokens to upper case. 
-  Deprecated in favor of <a 
-  href="pyparsing.pyparsing_common-class.html#upcaseTokens" 
-  class="link">pyparsing_common.upcaseTokens</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="downcaseTokens"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">downcaseTokens</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">t</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#downcaseTokens">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Helper parse action to convert tokens to lower case. 
-  Deprecated in favor of <a 
-  href="pyparsing.pyparsing_common-class.html#downcaseTokens" 
-  class="link">pyparsing_common.downcaseTokens</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="makeHTMLTags"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">makeHTMLTags</span>(<span class="sig-arg">tagStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#makeHTMLTags">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to construct opening and closing tag expressions for HTML, 
-  given a tag name. Matches tags in either upper or lower case, attributes 
-  with namespaces and with quoted or unquoted values.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   text = '&lt;td&gt;More info at the &lt;a href=&quot;http://pyparsing.wikispaces.com&quot;&gt;pyparsing&lt;/a&gt; wiki page&lt;/td&gt;'
-   # makeHTMLTags returns pyparsing expressions for the opening and closing tags as a 2-tuple
-   a,a_end = makeHTMLTags(&quot;A&quot;)
-   link_expr = a + SkipTo(a_end)(&quot;link_text&quot;) + a_end
-
-   for link in link_expr.searchString(text):
-       # attributes in the &lt;A&gt; tag (like &quot;href&quot; shown here) are also accessible as named results
-       print(link.link_text, '-&gt;', link.href)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   pyparsing -&gt; http://pyparsing.wikispaces.com
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="makeXMLTags"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">makeXMLTags</span>(<span class="sig-arg">tagStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#makeXMLTags">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to construct opening and closing tag expressions for XML, given
-  a tag name. Matches tags only in the given upper/lower case.</p>
-  <p>Example: similar to <a href="pyparsing-module.html#makeHTMLTags" 
-  class="link">makeHTMLTags</a></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="withAttribute"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">withAttribute</span>(<span class="sig-arg">*args</span>,
-        <span class="sig-arg">**attrDict</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#withAttribute">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to create a validating parse action to be used with start tags 
-  created with <code><a href="pyparsing-module.html#makeXMLTags" 
-  class="link">makeXMLTags</a></code> or <code><a 
-  href="pyparsing-module.html#makeHTMLTags" 
-  class="link">makeHTMLTags</a></code>. Use <code>withAttribute</code> to 
-  qualify a starting tag with a required attribute value, to avoid false 
-  matches on common tags such as <code>&lt;TD&gt;</code> or 
-  <code>&lt;DIV&gt;</code>.</p>
-  <p>Call <code>withAttribute</code> with a series of attribute names and 
-  values. Specify the list of filter attributes names and values as:</p>
-  <ul>
-    <li>
-      keyword arguments, as in <code>(align=&quot;right&quot;)</code>, or
-    </li>
-    <li>
-      as an explicit dict with <code>**</code> operator, when an attribute 
-      name is also a Python reserved word, as in 
-      <code>**{&quot;class&quot;:&quot;Customer&quot;, 
-      &quot;align&quot;:&quot;right&quot;}</code>
-    </li>
-    <li>
-      a list of name-value tuples, as in ( (&quot;ns1:class&quot;, 
-      &quot;Customer&quot;), (&quot;ns2:align&quot;,&quot;right&quot;) )
-    </li>
-  </ul>
-  <p>For attribute names with a namespace prefix, you must use the second 
-  form.  Attribute names are matched insensitive to upper/lower case.</p>
-  <p>If just testing for <code>class</code> (with or without a namespace), 
-  use <code><a href="pyparsing-module.html#withClass" 
-  class="link">withClass</a></code>.</p>
-  <p>To verify that the attribute exists, but without specifying a value, 
-  pass <code>withAttribute.ANY_VALUE</code> as the value.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   html = '''
-       &lt;div&gt;
-       Some text
-       &lt;div type=&quot;grid&quot;&gt;1 4 0 1 0&lt;/div&gt;
-       &lt;div type=&quot;graph&quot;&gt;1,3 2,3 1,1&lt;/div&gt;
-       &lt;div&gt;this has no type&lt;/div&gt;
-       &lt;/div&gt;
-
-   '''
-   div,div_end = makeHTMLTags(&quot;div&quot;)
-
-   # only match div tag having a type attribute with value &quot;grid&quot;
-   div_grid = div().setParseAction(withAttribute(type=&quot;grid&quot;))
-   grid_expr = div_grid + SkipTo(div | div_end)(&quot;body&quot;)
-   for grid_header in grid_expr.searchString(html):
-       print(grid_header.body)
-
-   # construct a match with any div tag having a type attribute, regardless of the value
-   div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE))
-   div_expr = div_any_type + SkipTo(div | div_end)(&quot;body&quot;)
-   for div_header in div_expr.searchString(html):
-       print(div_header.body)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   1 4 0 1 0
-
-   1 4 0 1 0
-   1,3 2,3 1,1
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="withClass"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">withClass</span>(<span class="sig-arg">classname</span>,
-        <span class="sig-arg">namespace</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#withClass">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Simplified version of <code><a 
-  href="pyparsing-module.html#withAttribute" 
-  class="link">withAttribute</a></code> when matching on a div class - made
-  difficult because <code>class</code> is a reserved word in Python.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   html = '''
-       &lt;div&gt;
-       Some text
-       &lt;div class=&quot;grid&quot;&gt;1 4 0 1 0&lt;/div&gt;
-       &lt;div class=&quot;graph&quot;&gt;1,3 2,3 1,1&lt;/div&gt;
-       &lt;div&gt;this &amp;lt;div&amp;gt; has no class&lt;/div&gt;
-       &lt;/div&gt;
-
-   '''
-   div,div_end = makeHTMLTags(&quot;div&quot;)
-   div_grid = div().setParseAction(withClass(&quot;grid&quot;))
-
-   grid_expr = div_grid + SkipTo(div | div_end)(&quot;body&quot;)
-   for grid_header in grid_expr.searchString(html):
-       print(grid_header.body)
-
-   div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE))
-   div_expr = div_any_type + SkipTo(div | div_end)(&quot;body&quot;)
-   for div_header in div_expr.searchString(html):
-       print(div_header.body)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   1 4 0 1 0
-
-   1 4 0 1 0
-   1,3 2,3 1,1
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="infixNotation"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">infixNotation</span>(<span class="sig-arg">baseExpr</span>,
-        <span class="sig-arg">opList</span>,
-        <span class="sig-arg">lpar</span>=<span class="sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="sig-arg">rpar</span>=<span class="sig-default">Suppress:(&quot;)&quot;)</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for constructing grammars of expressions made up of 
-  operators working in a precedence hierarchy.  Operators may be unary or 
-  binary, left- or right-associative.  Parse actions can also be attached 
-  to operator expressions. The generated parser will also recognize the use
-  of parentheses to override operator precedences (see example below).</p>
-  <p>Note: if you define a deep operator list, you may see performance 
-  issues when using infixNotation. See <a 
-  href="pyparsing.ParserElement-class.html#enablePackrat" 
-  class="link">ParserElement.enablePackrat</a> for a mechanism to 
-  potentially improve your parser performance.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      baseExpr - expression representing the most basic element for the 
-      nested
-    </li>
-    <li>
-      opList - list of tuples, one for each operator precedence level in 
-      the expression grammar; each tuple is of the form (opExpr, numTerms, 
-      rightLeftAssoc, parseAction), where:
-      <ul>
-        <li>
-          opExpr is the pyparsing expression for the operator; may also be 
-          a string, which will be converted to a Literal; if numTerms is 3,
-          opExpr is a tuple of two expressions, for the two operators 
-          separating the 3 terms
-        </li>
-        <li>
-          numTerms is the number of terms for this operator (must be 1, 2, 
-          or 3)
-        </li>
-        <li>
-          rightLeftAssoc is the indicator whether the operator is right or 
-          left associative, using the pyparsing-defined constants 
-          <code>opAssoc.RIGHT</code> and <code>opAssoc.LEFT</code>.
-        </li>
-        <li>
-          parseAction is the parse action to be associated with expressions
-          matching this operator expression (the parse action tuple member 
-          may be omitted); if the parse action is passed a tuple or list of
-          functions, this is equivalent to calling 
-          <code>setParseAction(*fn)</code> (<a 
-          href="pyparsing.ParserElement-class.html#setParseAction" 
-          class="link">ParserElement.setParseAction</a>)
-        </li>
-      </ul>
-    </li>
-    <li>
-      lpar - expression for matching left-parentheses 
-      (default=<code>Suppress('(')</code>)
-    </li>
-    <li>
-      rpar - expression for matching right-parentheses 
-      (default=<code>Suppress(')')</code>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   # simple example of four-function arithmetic with ints and variable names
-   integer = pyparsing_common.signed_integer
-   varname = pyparsing_common.identifier
-
-   arith_expr = infixNotation(integer | varname,
-       [
-       ('-', 1, opAssoc.RIGHT),
-       (oneOf('* /'), 2, opAssoc.LEFT),
-       (oneOf('+ -'), 2, opAssoc.LEFT),
-       ])
-
-   arith_expr.runTests('''
-       5+3*6
-       (5+3)*6
-       -2--11
-       ''', fullDump=False)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   5+3*6
-   [[5, '+', [3, '*', 6]]]
-
-   (5+3)*6
-   [[[5, '+', 3], '*', 6]]
-
-   -2--11
-   [[['-', 2], '-', ['-', 11]]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="operatorPrecedence"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">operatorPrecedence</span>(<span class="sig-arg">baseExpr</span>,
-        <span class="sig-arg">opList</span>,
-        <span class="sig-arg">lpar</span>=<span class="sig-default">Suppress:(&quot;(&quot;)</span>,
-        <span class="sig-arg">rpar</span>=<span class="sig-default">Suppress:(&quot;)&quot;)</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#infixNotation">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Former name of <code><a 
-  href="pyparsing-module.html#infixNotation" 
-  class="link">infixNotation</a></code>, will be dropped in a future 
-  release.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="nestedExpr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">nestedExpr</span>(<span class="sig-arg">opener</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">(</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">closer</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">)</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">content</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">ignoreExpr</span>=<span class="sig-default">quotedString using single or double quotes</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#nestedExpr">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for defining nested lists enclosed in opening and 
-  closing delimiters (&quot;(&quot; and &quot;)&quot; are the default).</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      opener - opening character for a nested list 
-      (default=<code>&quot;(&quot;</code>); can also be a pyparsing 
-      expression
-    </li>
-    <li>
-      closer - closing character for a nested list 
-      (default=<code>&quot;)&quot;</code>); can also be a pyparsing 
-      expression
-    </li>
-    <li>
-      content - expression for items within the nested lists 
-      (default=<code>None</code>)
-    </li>
-    <li>
-      ignoreExpr - expression for ignoring opening and closing delimiters 
-      (default=<code>quotedString</code>)
-    </li>
-  </ul>
-  <p>If an expression is not provided for the content argument, the nested 
-  expression will capture all whitespace-delimited content between 
-  delimiters as a list of separate values.</p>
-  <p>Use the <code>ignoreExpr</code> argument to define expressions that 
-  may contain opening or closing characters that should not be treated as 
-  opening or closing characters for nesting, such as quotedString or a 
-  comment expression.  Specify multiple expressions using an <code><a 
-  href="pyparsing.Or-class.html" class="link">Or</a></code> or <code><a 
-  href="pyparsing.MatchFirst-class.html" 
-  class="link">MatchFirst</a></code>. The default is <a 
-  href="pyparsing-module.html#quotedString" class="link">quotedString</a>, 
-  but if no expressions are to be ignored, then pass <code>None</code> for 
-  this argument.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   data_type = oneOf(&quot;void int short long char float double&quot;)
-   decl_data_type = Combine(data_type + Optional(Word('*')))
-   ident = Word(alphas+'_', alphanums+'_')
-   number = pyparsing_common.number
-   arg = Group(decl_data_type + ident)
-   LPAR,RPAR = map(Suppress, &quot;()&quot;)
-
-   code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment))
-
-   c_function = (decl_data_type(&quot;type&quot;)
-                 + ident(&quot;name&quot;)
-                 + LPAR + Optional(delimitedList(arg), [])(&quot;args&quot;) + RPAR
-                 + code_body(&quot;body&quot;))
-   c_function.ignore(cStyleComment)
-
-   source_code = '''
-       int is_odd(int x) {
-           return (x%2);
-       }
-
-       int dec_to_hex(char hchar) {
-           if (hchar &gt;= '0' &amp;&amp; hchar &lt;= '9') {
-               return (ord(hchar)-ord('0'));
-           } else {
-               return (10+ord(hchar)-ord('A'));
-           }
-       }
-   '''
-   for func in c_function.searchString(source_code):
-       print(&quot;%(name)s (%(type)s) args: %(args)s&quot; % func)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   is_odd (int) args: [['int', 'x']]
-   dec_to_hex (int) args: [['char', 'hchar']]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="indentedBlock"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">indentedBlock</span>(<span class="sig-arg">blockStatementExpr</span>,
-        <span class="sig-arg">indentStack</span>,
-        <span class="sig-arg">indent</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#indentedBlock">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper method for defining space-delimited indentation blocks, such as
-  those used to define block statements in Python source code.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      blockStatementExpr - expression defining syntax of statement that is 
-      repeated within the indented block
-    </li>
-    <li>
-      indentStack - list created by caller to manage indentation stack 
-      (multiple statementWithIndentedBlock expressions within a single 
-      grammar should share a common indentStack)
-    </li>
-    <li>
-      indent - boolean indicating whether block must be indented beyond the
-      the current level; set to False for block of left-most statements 
-      (default=<code>True</code>)
-    </li>
-  </ul>
-  <p>A valid block must contain at least one 
-  <code>blockStatement</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   data = '''
-   def A(z):
-     A1
-     B = 100
-     G = A2
-     A2
-     A3
-   B
-   def BB(a,b,c):
-     BB1
-     def BBA():
-       bba1
-       bba2
-       bba3
-   C
-   D
-   def spam(x,y):
-        def eggs(z):
-            pass
-   '''
-
-
-   indentStack = [1]
-   stmt = Forward()
-
-   identifier = Word(alphas, alphanums)
-   funcDecl = (&quot;def&quot; + identifier + Group( &quot;(&quot; + Optional( delimitedList(identifier) ) + &quot;)&quot; ) + &quot;:&quot;)
-   func_body = indentedBlock(stmt, indentStack)
-   funcDef = Group( funcDecl + func_body )
-
-   rvalue = Forward()
-   funcCall = Group(identifier + &quot;(&quot; + Optional(delimitedList(rvalue)) + &quot;)&quot;)
-   rvalue &lt;&lt; (funcCall | identifier | Word(nums))
-   assignment = Group(identifier + &quot;=&quot; + rvalue)
-   stmt &lt;&lt; ( funcDef | assignment | identifier )
-
-   module_body = OneOrMore(stmt)
-
-   parseTree = module_body.parseString(data)
-   parseTree.pprint()
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['def',
-     'A',
-     ['(', 'z', ')'],
-     ':',
-     [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]],
-    'B',
-    ['def',
-     'BB',
-     ['(', 'a', 'b', 'c', ')'],
-     ':',
-     [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]],
-    'C',
-    'D',
-    ['def',
-     'spam',
-     ['(', 'x', 'y', ')'],
-     ':',
-     [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== VARIABLES DETAILS ==================== -->
-<a name="section-VariablesDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables Details</span></td>
-</tr>
-</table>
-<a name="alphanums"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">alphanums</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="printables"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">printables</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!&quot;#$%&amp;\</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-<code class="variable-string">'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="alphas8bit"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">alphas8bit</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">u'</code><code class="variable-string">&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="commaSeparatedList"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">commaSeparatedList</h3>
-  <p>(Deprecated) Predefined expression of 1 or more printable words or 
-  quoted strings, separated by commas. This expression is deprecated in 
-  favor of <a 
-  href="pyparsing.pyparsing_common-class.html#comma_separated_list" 
-  class="link">pyparsing_common.comma_separated_list</a>.</p>
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-commaSeparatedList
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing-pysrc.html b/htmldoc/pyparsing-pysrc.html
deleted file mode 100644 (file)
index 3dba330..0000000
+++ /dev/null
@@ -1,8847 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        Module&nbsp;pyparsing
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<h1 class="epydoc">Source Code for <a href="pyparsing-module.html">Module pyparsing</a></h1>
-<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#-*- coding: utf-8 -*-</tt>\r </tt>
-<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"># module pyparsing.py</tt>\r </tt>
-<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (c) 2003-2018  Paul T. McGuire</tt>\r </tt>
-<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"># Permission is hereby granted, free of charge, to any person obtaining</tt>\r </tt>
-<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"># a copy of this software and associated documentation files (the</tt>\r </tt>
-<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"># "Software"), to deal in the Software without restriction, including</tt>\r </tt>
-<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"># without limitation the rights to use, copy, modify, merge, publish,</tt>\r </tt>
-<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"># distribute, sublicense, and/or sell copies of the Software, and to</tt>\r </tt>
-<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-comment"># permit persons to whom the Software is furnished to do so, subject to</tt>\r </tt>
-<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-comment"># the following conditions:</tt>\r </tt>
-<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-comment"># The above copyright notice and this permission notice shall be</tt>\r </tt>
-<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-comment"># included in all copies or substantial portions of the Software.</tt>\r </tt>
-<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-comment"># THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</tt>\r </tt>
-<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-comment"># EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</tt>\r </tt>
-<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</tt>\r </tt>
-<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-comment"># IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</tt>\r </tt>
-<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-comment"># CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</tt>\r </tt>
-<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-comment"># TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</tt>\r </tt>
-<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-comment"># SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</tt>\r </tt>
-<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line">\r </tt>
-<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable pyparsing.__doc__=pyparsing-module.html#__doc__"><a title="pyparsing.__doc__" class="py-name" href="#" onclick="return doclink('link-0', '__doc__', 'link-0');">__doc__</a></tt> <tt class="py-op">=</tt> \\r </tt>
-<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">"""\r</tt> </tt>
-<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">pyparsing module - Classes and methods to define and execute parsing grammars\r</tt> </tt>
-<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">=============================================================================\r</tt> </tt>
-<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">The pyparsing module is an alternative approach to creating and executing simple grammars,\r</tt> </tt>
-<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring">vs. the traditional lex/yacc approach, or the use of regular expressions.  With pyparsing, you\r</tt> </tt>
-<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">don't need to learn a new syntax for defining grammars or matching expressions - the parsing module\r</tt> </tt>
-<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">provides a library of classes that you use to construct the grammar directly in Python.\r</tt> </tt>
-<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">Here is a program to parse "Hello, World!" (or any greeting of the form \r</tt> </tt>
-<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">C{"&lt;salutation&gt;, &lt;addressee&gt;!"}), built up using L{Word}, L{Literal}, and L{And} elements \r</tt> </tt>
-<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring">(L{'+'&lt;ParserElement.__add__&gt;} operator gives L{And} expressions, strings are auto-converted to\r</tt> </tt>
-<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">L{Literal} expressions)::\r</tt> </tt>
-<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">    from pyparsing import Word, alphas\r</tt> </tt>
-<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">    # define grammar of a greeting\r</tt> </tt>
-<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">    greet = Word(alphas) + "," + Word(alphas) + "!"\r</tt> </tt>
-<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">    hello = "Hello, World!"\r</tt> </tt>
-<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">    print (hello, "-&gt;", greet.parseString(hello))\r</tt> </tt>
-<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">The program outputs the following::\r</tt> </tt>
-<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">    Hello, World! -&gt; ['Hello', ',', 'World', '!']\r</tt> </tt>
-<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">The Python representation of the grammar is quite readable, owing to the self-explanatory\r</tt> </tt>
-<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">class names, and the use of '+', '|' and '^' operators.\r</tt> </tt>
-<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">The L{ParseResults} object returned from L{ParserElement.parseString&lt;ParserElement.parseString&gt;} can be accessed as a nested list, a dictionary, or an\r</tt> </tt>
-<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">object with named attributes.\r</tt> </tt>
-<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">The pyparsing module handles some of the problems that are typically vexing when writing text parsers:\r</tt> </tt>
-<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring"> - extra or missing whitespace (the above program will also handle "Hello,World!", "Hello  ,  World  !", etc.)\r</tt> </tt>
-<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring"> - quoted strings\r</tt> </tt>
-<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring"> - embedded comments\r</tt> </tt>
-<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">Getting Started -\r</tt> </tt>
-<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">-----------------\r</tt> </tt>
-<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">Visit the classes L{ParserElement} and L{ParseResults} to see the base classes that most other pyparsing\r</tt> </tt>
-<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">classes inherit from. Use the docstrings for examples of how to:\r</tt> </tt>
-<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring"> - construct literal match expressions from L{Literal} and L{CaselessLiteral} classes\r</tt> </tt>
-<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring"> - construct character word-group expressions using the L{Word} class\r</tt> </tt>
-<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring"> - see how to create repetitive expressions using L{ZeroOrMore} and L{OneOrMore} classes\r</tt> </tt>
-<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring"> - use L{'+'&lt;And&gt;}, L{'|'&lt;MatchFirst&gt;}, L{'^'&lt;Or&gt;}, and L{'&amp;'&lt;Each&gt;} operators to combine simple expressions into more complex ones\r</tt> </tt>
-<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring"> - associate names with your parsed results using L{ParserElement.setResultsName}\r</tt> </tt>
-<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring"> - find some helpful expression short-cuts like L{delimitedList} and L{oneOf}\r</tt> </tt>
-<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring"> - find more useful common expressions in the L{pyparsing_common} namespace class\r</tt> </tt>
-<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>\r
-<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">\r </tt>
-<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.3.0"</tt> </tt>\r
-<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable pyparsing.__versionTime__=pyparsing-module.html#__versionTime__"><a title="pyparsing.__versionTime__" class="py-name" href="#" onclick="return doclink('link-1', '__versionTime__', 'link-1');">__versionTime__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"28 Oct 2018 01:57 UTC"</tt> </tt>\r
-<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">"Paul McGuire &lt;ptmcg@users.sourceforge.net&gt;"</tt> </tt>\r
-<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">\r </tt>
-<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">string</tt> </tt>\r
-<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">weakref</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ref</tt> <tt class="py-keyword">as</tt> <tt class="py-name">wkref</tt> </tt>\r
-<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Method pyparsing.Forward.copy()=pyparsing.Forward-class.html#copy,Method pyparsing.Keyword.copy()=pyparsing.Keyword-class.html#copy,Method pyparsing.ParseExpression.copy()=pyparsing.ParseExpression-class.html#copy,Method pyparsing.ParseResults.copy()=pyparsing.ParseResults-class.html#copy,Method pyparsing.ParserElement.copy()=pyparsing.ParserElement-class.html#copy"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-2', 'copy', 'link-2');">copy</a></tt> </tt>\r
-<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>\r
-<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">warnings</tt> </tt>\r
-<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>\r
-<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_constants</tt> </tt>\r
-<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">collections</tt> </tt>\r
-<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Method pyparsing.ParseResults.pprint()=pyparsing.ParseResults-class.html#pprint"><a title="pyparsing.ParseResults.pprint" class="py-name" href="#" onclick="return doclink('link-3', 'pprint', 'link-3');">pprint</a></tt> </tt>\r
-<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>\r
-<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>\r
-<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">datetime</tt> <tt class="py-keyword">import</tt> <tt class="py-name">datetime</tt> </tt>\r
-<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">    <tt class="py-comment"># Python 3</tt>\r </tt>
-<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">itertools</tt> <tt class="py-keyword">import</tt> <tt class="py-name">filterfalse</tt> </tt>\r
-<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">itertools</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ifilterfalse</tt> <tt class="py-keyword">as</tt> <tt class="py-name">filterfalse</tt> </tt>\r
-<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">\r </tt>
-<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">_thread</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RLock</tt> </tt>\r
-<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">threading</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RLock</tt> </tt>\r
-<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">\r </tt>
-<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">    <tt class="py-comment"># Python 3</tt>\r </tt>
-<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">abc</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Iterable</tt> </tt>\r
-<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">abc</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MutableMapping</tt> </tt>\r
-<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">    <tt class="py-comment"># Python 2.7</tt>\r </tt>
-<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">collections</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Iterable</tt> </tt>\r
-<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">collections</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MutableMapping</tt> </tt>\r
-<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">\r </tt>
-<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">collections</tt> <tt class="py-keyword">import</tt> <tt class="py-name">OrderedDict</tt> <tt class="py-keyword">as</tt> <tt class="py-name">_OrderedDict</tt> </tt>\r
-<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">ordereddict</tt> <tt class="py-keyword">import</tt> <tt class="py-name">OrderedDict</tt> <tt class="py-keyword">as</tt> <tt class="py-name">_OrderedDict</tt> </tt>\r
-<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">        <tt class="py-name">_OrderedDict</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">\r </tt>
-<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">types</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SimpleNamespace</tt> </tt>\r
-<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="SimpleNamespace"></a><div id="SimpleNamespace-def"><a name="L125"></a><tt class="py-lineno"> 125</tt> <a class="py-toggle" href="#" id="SimpleNamespace-toggle" onclick="return toggle('SimpleNamespace');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.SimpleNamespace-class.html">SimpleNamespace</a><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">\r </tt>
-<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">\r </tt>
-<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-comment">#~ sys.stderr.write( "testing pyparsing module, version %s, %s\n" % (__version__,__versionTime__ ) )</tt>\r </tt>
-<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">\r </tt>
-<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt>\r </tt>
-<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-string">'And'</tt><tt class="py-op">,</tt> <tt class="py-string">'CaselessKeyword'</tt><tt class="py-op">,</tt> <tt class="py-string">'CaselessLiteral'</tt><tt class="py-op">,</tt> <tt class="py-string">'CharsNotIn'</tt><tt class="py-op">,</tt> <tt class="py-string">'Combine'</tt><tt class="py-op">,</tt> <tt class="py-string">'Dict'</tt><tt class="py-op">,</tt> <tt class="py-string">'Each'</tt><tt class="py-op">,</tt> <tt class="py-string">'Empty'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-string">'FollowedBy'</tt><tt class="py-op">,</tt> <tt class="py-string">'Forward'</tt><tt class="py-op">,</tt> <tt class="py-string">'GoToColumn'</tt><tt class="py-op">,</tt> <tt class="py-string">'Group'</tt><tt class="py-op">,</tt> <tt class="py-string">'Keyword'</tt><tt class="py-op">,</tt> <tt class="py-string">'LineEnd'</tt><tt class="py-op">,</tt> <tt class="py-string">'LineStart'</tt><tt class="py-op">,</tt> <tt class="py-string">'Literal'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">'PrecededBy'</tt><tt class="py-op">,</tt> <tt class="py-string">'MatchFirst'</tt><tt class="py-op">,</tt> <tt class="py-string">'NoMatch'</tt><tt class="py-op">,</tt> <tt class="py-string">'NotAny'</tt><tt class="py-op">,</tt> <tt class="py-string">'OneOrMore'</tt><tt class="py-op">,</tt> <tt class="py-string">'OnlyOnce'</tt><tt class="py-op">,</tt> <tt class="py-string">'Optional'</tt><tt class="py-op">,</tt> <tt class="py-string">'Or'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-string">'ParseBaseException'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParseElementEnhance'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParseException'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParseExpression'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParseFatalException'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-string">'ParseResults'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParseSyntaxException'</tt><tt class="py-op">,</tt> <tt class="py-string">'ParserElement'</tt><tt class="py-op">,</tt> <tt class="py-string">'QuotedString'</tt><tt class="py-op">,</tt> <tt class="py-string">'RecursiveGrammarException'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-string">'Regex'</tt><tt class="py-op">,</tt> <tt class="py-string">'SkipTo'</tt><tt class="py-op">,</tt> <tt class="py-string">'StringEnd'</tt><tt class="py-op">,</tt> <tt class="py-string">'StringStart'</tt><tt class="py-op">,</tt> <tt class="py-string">'Suppress'</tt><tt class="py-op">,</tt> <tt class="py-string">'Token'</tt><tt class="py-op">,</tt> <tt class="py-string">'TokenConverter'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-string">'White'</tt><tt class="py-op">,</tt> <tt class="py-string">'Word'</tt><tt class="py-op">,</tt> <tt class="py-string">'WordEnd'</tt><tt class="py-op">,</tt> <tt class="py-string">'WordStart'</tt><tt class="py-op">,</tt> <tt class="py-string">'ZeroOrMore'</tt><tt class="py-op">,</tt> <tt class="py-string">'Char'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-string">'alphanums'</tt><tt class="py-op">,</tt> <tt class="py-string">'alphas'</tt><tt class="py-op">,</tt> <tt class="py-string">'alphas8bit'</tt><tt class="py-op">,</tt> <tt class="py-string">'anyCloseTag'</tt><tt class="py-op">,</tt> <tt class="py-string">'anyOpenTag'</tt><tt class="py-op">,</tt> <tt class="py-string">'cStyleComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'col'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-string">'commaSeparatedList'</tt><tt class="py-op">,</tt> <tt class="py-string">'commonHTMLEntity'</tt><tt class="py-op">,</tt> <tt class="py-string">'countedArray'</tt><tt class="py-op">,</tt> <tt class="py-string">'cppStyleComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'dblQuotedString'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-string">'dblSlashComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'delimitedList'</tt><tt class="py-op">,</tt> <tt class="py-string">'dictOf'</tt><tt class="py-op">,</tt> <tt class="py-string">'downcaseTokens'</tt><tt class="py-op">,</tt> <tt class="py-string">'empty'</tt><tt class="py-op">,</tt> <tt class="py-string">'hexnums'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-string">'htmlComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'javaStyleComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'line'</tt><tt class="py-op">,</tt> <tt class="py-string">'lineEnd'</tt><tt class="py-op">,</tt> <tt class="py-string">'lineStart'</tt><tt class="py-op">,</tt> <tt class="py-string">'lineno'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-string">'makeHTMLTags'</tt><tt class="py-op">,</tt> <tt class="py-string">'makeXMLTags'</tt><tt class="py-op">,</tt> <tt class="py-string">'matchOnlyAtCol'</tt><tt class="py-op">,</tt> <tt class="py-string">'matchPreviousExpr'</tt><tt class="py-op">,</tt> <tt class="py-string">'matchPreviousLiteral'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-string">'nestedExpr'</tt><tt class="py-op">,</tt> <tt class="py-string">'nullDebugAction'</tt><tt class="py-op">,</tt> <tt class="py-string">'nums'</tt><tt class="py-op">,</tt> <tt class="py-string">'oneOf'</tt><tt class="py-op">,</tt> <tt class="py-string">'opAssoc'</tt><tt class="py-op">,</tt> <tt class="py-string">'operatorPrecedence'</tt><tt class="py-op">,</tt> <tt class="py-string">'printables'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-string">'punc8bit'</tt><tt class="py-op">,</tt> <tt class="py-string">'pythonStyleComment'</tt><tt class="py-op">,</tt> <tt class="py-string">'quotedString'</tt><tt class="py-op">,</tt> <tt class="py-string">'removeQuotes'</tt><tt class="py-op">,</tt> <tt class="py-string">'replaceHTMLEntity'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-string">'replaceWith'</tt><tt class="py-op">,</tt> <tt class="py-string">'restOfLine'</tt><tt class="py-op">,</tt> <tt class="py-string">'sglQuotedString'</tt><tt class="py-op">,</tt> <tt class="py-string">'srange'</tt><tt class="py-op">,</tt> <tt class="py-string">'stringEnd'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-string">'stringStart'</tt><tt class="py-op">,</tt> <tt class="py-string">'traceParseAction'</tt><tt class="py-op">,</tt> <tt class="py-string">'unicodeString'</tt><tt class="py-op">,</tt> <tt class="py-string">'upcaseTokens'</tt><tt class="py-op">,</tt> <tt class="py-string">'withAttribute'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-string">'indentedBlock'</tt><tt class="py-op">,</tt> <tt class="py-string">'originalTextFor'</tt><tt class="py-op">,</tt> <tt class="py-string">'ungroup'</tt><tt class="py-op">,</tt> <tt class="py-string">'infixNotation'</tt><tt class="py-op">,</tt><tt class="py-string">'locatedExpr'</tt><tt class="py-op">,</tt> <tt class="py-string">'withClass'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-string">'CloseMatch'</tt><tt class="py-op">,</tt> <tt class="py-string">'tokenMap'</tt><tt class="py-op">,</tt> <tt class="py-string">'pyparsing_common'</tt><tt class="py-op">,</tt> <tt class="py-string">'pyparsing_unicode'</tt><tt class="py-op">,</tt> <tt class="py-string">'unicode_set'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-op">]</tt> </tt>\r
-<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">\r </tt>
-<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable pyparsing.system_version=pyparsing-module.html#system_version"><a title="pyparsing.system_version" class="py-name" href="#" onclick="return doclink('link-4', 'system_version', 'link-4');">system_version</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable pyparsing.PY_3=pyparsing-module.html#PY_3"><a title="pyparsing.PY_3" class="py-name" href="#" onclick="return doclink('link-5', 'PY_3', 'link-5');">PY_3</a></tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="pyparsing.system_version" class="py-name" href="#" onclick="return doclink('link-6', 'system_version', 'link-4');">system_version</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt> </tt>\r
-<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-7" class="py-name"><a title="pyparsing.PY_3" class="py-name" href="#" onclick="return doclink('link-7', 'PY_3', 'link-5');">PY_3</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">    <tt id="link-8" class="py-name" targets="Variable pyparsing._MAX_INT=pyparsing-module.html#_MAX_INT"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-8', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxsize</tt> </tt>\r
-<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">    <tt class="py-name">basestring</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt> </tt>\r
-<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">    <tt class="py-name">unichr</tt> <tt class="py-op">=</tt> <tt class="py-name">chr</tt> </tt>\r
-<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">    <tt class="py-name">unicode</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt> </tt>\r
-<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">    <tt class="py-name">_ustr</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt> </tt>\r
-<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">\r </tt>
-<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">    <tt class="py-comment"># build list of single arg builtins, that can be used as parse actions</tt>\r </tt>
-<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">    <tt id="link-9" class="py-name" targets="Variable pyparsing.singleArgBuiltins=pyparsing-module.html#singleArgBuiltins"><a title="pyparsing.singleArgBuiltins" class="py-name" href="#" onclick="return doclink('link-9', 'singleArgBuiltins', 'link-9');">singleArgBuiltins</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">sum</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">,</tt> <tt class="py-name">sorted</tt><tt class="py-op">,</tt> <tt class="py-name">reversed</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">,</tt> <tt class="py-name">set</tt><tt class="py-op">,</tt> <tt class="py-name">any</tt><tt class="py-op">,</tt> <tt class="py-name">all</tt><tt class="py-op">,</tt> <tt class="py-name">min</tt><tt class="py-op">,</tt> <tt class="py-name">max</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">\r </tt>
-<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">    <tt id="link-10" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-10', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxint</tt> </tt>\r
-<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">    <tt class="py-name">range</tt> <tt class="py-op">=</tt> <tt class="py-name">xrange</tt> </tt>\r
-<a name="_ustr"></a><div id="_ustr-def"><a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">\r </tt>
-<a name="L167"></a><tt class="py-lineno"> 167</tt> <a class="py-toggle" href="#" id="_ustr-toggle" onclick="return toggle('_ustr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_ustr">_ustr</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ustr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ustr-expanded"><a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-docstring">"""Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries\r</tt> </tt>
-<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">           str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It\r</tt> </tt>
-<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">           then &lt; returns the unicode object | encodes it with the default encoding | ... &gt;.\r</tt> </tt>
-<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">obj</tt> </tt>\r
-<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">\r </tt>
-<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">            <tt class="py-comment"># If this works, then _ustr(obj) has the same behaviour as str(obj), so</tt>\r </tt>
-<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">            <tt class="py-comment"># it won't break any existing code.</tt>\r </tt>
-<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">\r </tt>
-<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeEncodeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">            <tt class="py-comment"># Else encode it</tt>\r </tt>
-<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultencoding</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">            <tt class="py-name">xmlcharref</tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name" targets="Class pyparsing.Regex=pyparsing.Regex-class.html"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-11', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'&amp;#\d+;'</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">            <tt class="py-name">xmlcharref</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method pyparsing.ParserElement.setParseAction()=pyparsing.ParserElement-class.html#setParseAction"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-12', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-string">'\\u'</tt> <tt class="py-op">+</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">xmlcharref</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method pyparsing.ParserElement.transformString()=pyparsing.ParserElement-class.html#transformString"><a title="pyparsing.ParserElement.transformString" class="py-name" href="#" onclick="return doclink('link-13', 'transformString', 'link-13');">transformString</a></tt><tt class="py-op">(</tt><tt class="py-name">ret</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">\r </tt>
-<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">    <tt class="py-comment"># build list of single arg builtins, tolerant of Python version, that can be used as parse actions</tt>\r </tt>
-<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="pyparsing.singleArgBuiltins" class="py-name" href="#" onclick="return doclink('link-14', 'singleArgBuiltins', 'link-9');">singleArgBuiltins</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt> </tt>\r
-<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-15" class="py-name" targets="Variable pyparsing.fname=pyparsing-module.html#fname"><a title="pyparsing.fname" class="py-name" href="#" onclick="return doclink('link-15', 'fname', 'link-15');">fname</a></tt> <tt class="py-keyword">in</tt> <tt class="py-string">"sum len sorted reversed list tuple set any all min max"</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method pyparsing.ParserElement.split()=pyparsing.ParserElement-class.html#split,Method pyparsing.Regex.compiledREtype.split()=pyparsing.Regex.compiledREtype-class.html#split"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-16', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">            <tt id="link-17" class="py-name"><a title="pyparsing.singleArgBuiltins" class="py-name" href="#" onclick="return doclink('link-17', 'singleArgBuiltins', 'link-9');">singleArgBuiltins</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method pyparsing.ParseExpression.append()=pyparsing.ParseExpression-class.html#append,Method pyparsing.ParseResults.append()=pyparsing.ParseResults-class.html#append"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-18', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">__builtin__</tt><tt class="py-op">,</tt><tt id="link-19" class="py-name"><a title="pyparsing.fname" class="py-name" href="#" onclick="return doclink('link-19', 'fname', 'link-15');">fname</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">\r </tt>
-<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-name">_generatorType</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">y</tt> <tt class="py-keyword">for</tt> <tt class="py-name">y</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="_xml_escape"></a><div id="_xml_escape-def"><a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">\r </tt>
-<a name="L198"></a><tt class="py-lineno"> 198</tt> <a class="py-toggle" href="#" id="_xml_escape-toggle" onclick="return toggle('_xml_escape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_xml_escape">_xml_escape</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_xml_escape-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_xml_escape-expanded"><a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">    <tt class="py-docstring">"""Escape &amp;, &lt;, &gt;, ", ', etc. in a string of data."""</tt> </tt>\r
-<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">\r </tt>
-<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">    <tt class="py-comment"># ampersand must be replaced first</tt>\r </tt>
-<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">    <tt class="py-name">from_symbols</tt> <tt class="py-op">=</tt> <tt class="py-string">'&amp;&gt;&lt;"\''</tt> </tt>\r
-<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">    <tt class="py-name">to_symbols</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'&amp;'</tt><tt class="py-op">+</tt><tt class="py-name">s</tt><tt class="py-op">+</tt><tt class="py-string">';'</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-string">"amp gt lt quot apos"</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-20', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">from_</tt><tt class="py-op">,</tt><tt class="py-name">to_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">from_symbols</tt><tt class="py-op">,</tt> <tt class="py-name">to_symbols</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">from_</tt><tt class="py-op">,</tt> <tt class="py-name">to_</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">data</tt> </tt>\r
-</div><a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">\r </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt id="link-21" class="py-name" targets="Variable pyparsing.alphas=pyparsing-module.html#alphas,Method pyparsing.unicode_set.alphas()=pyparsing.unicode_set-class.html#alphas"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-21', 'alphas', 'link-21');">alphas</a></tt>     <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">ascii_uppercase</tt> <tt class="py-op">+</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">ascii_lowercase</tt> </tt>\r
-<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable pyparsing.nums=pyparsing-module.html#nums,Method pyparsing.unicode_set.nums()=pyparsing.unicode_set-class.html#nums"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-22', 'nums', 'link-22');">nums</a></tt>       <tt class="py-op">=</tt> <tt class="py-string">"0123456789"</tt> </tt>\r
-<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable pyparsing.hexnums=pyparsing-module.html#hexnums"><a title="pyparsing.hexnums" class="py-name" href="#" onclick="return doclink('link-23', 'hexnums', 'link-23');">hexnums</a></tt>    <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-24', 'nums', 'link-22');">nums</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"ABCDEFabcdef"</tt> </tt>\r
-<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable pyparsing.alphanums=pyparsing-module.html#alphanums,Method pyparsing.unicode_set.alphanums()=pyparsing.unicode_set-class.html#alphanums"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-25', 'alphanums', 'link-25');">alphanums</a></tt>  <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-26', 'alphas', 'link-21');">alphas</a></tt> <tt class="py-op">+</tt> <tt id="link-27" class="py-name"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-27', 'nums', 'link-22');">nums</a></tt> </tt>\r
-<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable pyparsing._bslash=pyparsing-module.html#_bslash"><a title="pyparsing._bslash" class="py-name" href="#" onclick="return doclink('link-28', '_bslash', 'link-28');">_bslash</a></tt>    <tt class="py-op">=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-number">92</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable pyparsing.printables=pyparsing-module.html#printables,Method pyparsing.unicode_set.printables()=pyparsing.unicode_set-class.html#printables"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-29', 'printables', 'link-29');">printables</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">printable</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">whitespace</tt><tt class="py-op">)</tt> </tt>\r
-<a name="ParseBaseException"></a><div id="ParseBaseException-def"><a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">\r </tt>
-<a name="L215"></a><tt class="py-lineno"> 215</tt> <a class="py-toggle" href="#" id="ParseBaseException-toggle" onclick="return toggle('ParseBaseException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html">ParseBaseException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseBaseException-expanded"><a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">    <tt class="py-docstring">"""base exception class for all parsing runtime exceptions"""</tt> </tt>\r
-<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">    <tt class="py-comment"># Performance tuning: we construct a *lot* of these, so keep this</tt>\r </tt>
-<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">    <tt class="py-comment"># constructor as small and fast as possible</tt>\r </tt>
-<a name="ParseBaseException.__init__"></a><div id="ParseBaseException.__init__-def"><a name="L219"></a><tt class="py-lineno"> 219</tt> <a class="py-toggle" href="#" id="ParseBaseException.__init__-toggle" onclick="return toggle('ParseBaseException.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pstr</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">elem</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.__init__-expanded"><a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">msg</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">pstr</tt> </tt>\r
-<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt> </tt>\r
-<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt> <tt class="py-op">=</tt> <tt class="py-name">pstr</tt> </tt>\r
-<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parserElement</tt> <tt class="py-op">=</tt> <tt class="py-name">elem</tt> </tt>\r
-<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">pstr</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">\r </tt>
-<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>\r
-<a name="ParseBaseException._from_exception"></a><div id="ParseBaseException._from_exception-def"><a name="L231"></a><tt class="py-lineno"> 231</tt> <a class="py-toggle" href="#" id="ParseBaseException._from_exception-toggle" onclick="return toggle('ParseBaseException._from_exception');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#_from_exception">_from_exception</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">pe</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException._from_exception-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException._from_exception-expanded"><a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">        internal factory method to simplify creating one type of ParseException\r</tt> </tt>
-<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">        from another - avoids having __init__ signature conflicts among subclasses\r</tt> </tt>
-<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt><tt class="py-op">,</tt> <tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">parserElement</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">\r </tt>
-<a name="ParseBaseException.__getattr__"></a><div id="ParseBaseException.__getattr__-def"><a name="L238"></a><tt class="py-lineno"> 238</tt> <a class="py-toggle" href="#" id="ParseBaseException.__getattr__-toggle" onclick="return toggle('ParseBaseException.__getattr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">aname</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.__getattr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.__getattr__-expanded"><a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">        <tt class="py-docstring">"""supported attributes by name are:\r</tt> </tt>
-<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">            - lineno - returns the line number of the exception text\r</tt> </tt>
-<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">            - col - returns the column number of the exception text\r</tt> </tt>
-<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">            - line - returns the line containing the exception text\r</tt> </tt>
-<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt><tt class="py-op">(</tt> <tt class="py-name">aname</tt> <tt class="py-op">==</tt> <tt class="py-string">"lineno"</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-30" class="py-name" targets="Function pyparsing.lineno()=pyparsing-module.html#lineno"><a title="pyparsing.lineno" class="py-name" href="#" onclick="return doclink('link-30', 'lineno', 'link-30');">lineno</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt><tt class="py-op">(</tt> <tt class="py-name">aname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">"col"</tt><tt class="py-op">,</tt> <tt class="py-string">"column"</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name" targets="Function pyparsing.col()=pyparsing-module.html#col"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-31', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt><tt class="py-op">(</tt> <tt class="py-name">aname</tt> <tt class="py-op">==</tt> <tt class="py-string">"line"</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-32" class="py-name" targets="Function pyparsing.line()=pyparsing-module.html#line"><a title="pyparsing.line" class="py-name" href="#" onclick="return doclink('link-32', 'line', 'link-32');">line</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pstr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-name">aname</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">\r </tt>
-<a name="ParseBaseException.__str__"></a><div id="ParseBaseException.__str__-def"><a name="L253"></a><tt class="py-lineno"> 253</tt> <a class="py-toggle" href="#" id="ParseBaseException.__str__-toggle" onclick="return toggle('ParseBaseException.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.__str__-expanded"><a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"%s (at char %d), (line:%d, col:%d)"</tt> <tt class="py-op">%</tt> \\r </tt>
-<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">                <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="pyparsing.lineno" class="py-name" href="#" onclick="return doclink('link-33', 'lineno', 'link-30');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">column</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseBaseException.__repr__"></a><div id="ParseBaseException.__repr__-def"><a name="L256"></a><tt class="py-lineno"> 256</tt> <a class="py-toggle" href="#" id="ParseBaseException.__repr__-toggle" onclick="return toggle('ParseBaseException.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#__repr__">__repr__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.__repr__-expanded"><a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseBaseException.markInputline"></a><div id="ParseBaseException.markInputline-def"><a name="L258"></a><tt class="py-lineno"> 258</tt> <a class="py-toggle" href="#" id="ParseBaseException.markInputline-toggle" onclick="return toggle('ParseBaseException.markInputline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#markInputline">markInputline</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">markerString</tt> <tt class="py-op">=</tt> <tt class="py-string">"&gt;!&lt;"</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.markInputline-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.markInputline-expanded"><a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-docstring">"""Extracts the exception line from the input string, and marks\r</tt> </tt>
-<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring">           the location of the exception with a special symbol.\r</tt> </tt>
-<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-name">line_str</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="pyparsing.line" class="py-name" href="#" onclick="return doclink('link-34', 'line', 'link-32');">line</a></tt> </tt>\r
-<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">        <tt class="py-name">line_column</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">column</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">markerString</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">            <tt class="py-name">line_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">line_str</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">line_column</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">                                <tt class="py-name">markerString</tt><tt class="py-op">,</tt> <tt class="py-name">line_str</tt><tt class="py-op">[</tt><tt class="py-name">line_column</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">line_str</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseBaseException.__dir__"></a><div id="ParseBaseException.__dir__-def"><a name="L268"></a><tt class="py-lineno"> 268</tt> <a class="py-toggle" href="#" id="ParseBaseException.__dir__-toggle" onclick="return toggle('ParseBaseException.__dir__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseBaseException-class.html#__dir__">__dir__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseBaseException.__dir__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseBaseException.__dir__-expanded"><a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"lineno col line"</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-35', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">\r </tt>
-<a name="ParseException"></a><div id="ParseException-def"><a name="L271"></a><tt class="py-lineno"> 271</tt> <a class="py-toggle" href="#" id="ParseException-toggle" onclick="return toggle('ParseException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseException-class.html">ParseException</a><tt class="py-op">(</tt><tt class="py-base-class">ParseBaseException</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseException-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseException-expanded"><a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring">    Exception thrown when parse expressions don't match class;\r</tt> </tt>
-<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">    supported attributes by name are:\r</tt> </tt>
-<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-docstring">     - lineno - returns the line number of the exception text\r</tt> </tt>
-<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-docstring">     - col - returns the column number of the exception text\r</tt> </tt>
-<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-docstring">     - line - returns the line containing the exception text\r</tt> </tt>
-<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring">        try:\r</tt> </tt>
-<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">            Word(nums).setName("integer").parseString("ABC")\r</tt> </tt>
-<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-docstring">        except ParseException as pe:\r</tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-docstring">            print(pe)\r</tt> </tt>
-<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-docstring">            print("column: {}".format(pe.col))\r</tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-docstring">       Expected integer (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-docstring">        column: 1\r</tt> </tt>
-<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">\r </tt>
-<a name="ParseFatalException"></a><div id="ParseFatalException-def"><a name="L292"></a><tt class="py-lineno"> 292</tt> <a class="py-toggle" href="#" id="ParseFatalException-toggle" onclick="return toggle('ParseFatalException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseFatalException-class.html">ParseFatalException</a><tt class="py-op">(</tt><tt class="py-base-class">ParseBaseException</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseFatalException-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseFatalException-expanded"><a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-docstring">"""user-throwable exception thrown when inconsistent parse content\r</tt> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-docstring">       is found; stops all parsing immediately"""</tt> </tt>\r
-<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">\r </tt>
-<a name="ParseSyntaxException"></a><div id="ParseSyntaxException-def"><a name="L297"></a><tt class="py-lineno"> 297</tt> <a class="py-toggle" href="#" id="ParseSyntaxException-toggle" onclick="return toggle('ParseSyntaxException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseSyntaxException-class.html">ParseSyntaxException</a><tt class="py-op">(</tt><tt class="py-base-class">ParseFatalException</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseSyntaxException-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseSyntaxException-expanded"><a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-docstring">"""just like L{ParseFatalException}, but thrown internally when an\r</tt> </tt>
-<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-docstring">       L{ErrorStop&lt;And._ErrorStop&gt;} ('-' operator) indicates that parsing is to stop\r</tt> </tt>
-<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring">       immediately because an unbacktrackable syntax error has been found"""</tt> </tt>\r
-<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">\r </tt>
-<a name="RecursiveGrammarException"></a><div id="RecursiveGrammarException-def"><a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-comment">#~ class ReparseException(ParseBaseException):</tt>\r </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">    <tt class="py-comment">#~ """Experimental class - parse actions can raise this exception to cause</tt>\r </tt>
-<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">       <tt class="py-comment">#~ pyparsing to reparse the input string:</tt>\r </tt>
-<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">        <tt class="py-comment">#~ - with a modified input string, and/or</tt>\r </tt>
-<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-comment">#~ - with a modified start location</tt>\r </tt>
-<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">       <tt class="py-comment">#~ Set the values of the ReparseException in the constructor, and raise the</tt>\r </tt>
-<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">       <tt class="py-comment">#~ exception in a parse action to cause pyparsing to use the new string/location.</tt>\r </tt>
-<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">       <tt class="py-comment">#~ Setting the values as None causes no change to be made.</tt>\r </tt>
-<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">       <tt class="py-comment">#~ """</tt>\r </tt>
-<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">    <tt class="py-comment">#~ def __init_( self, newstring, restartLoc ):</tt>\r </tt>
-<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">        <tt class="py-comment">#~ self.newParseText = newstring</tt>\r </tt>
-<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">        <tt class="py-comment">#~ self.reparseLoc = restartLoc</tt>\r </tt>
-<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">\r </tt>
-<a name="L316"></a><tt class="py-lineno"> 316</tt> <a class="py-toggle" href="#" id="RecursiveGrammarException-toggle" onclick="return toggle('RecursiveGrammarException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.RecursiveGrammarException-class.html">RecursiveGrammarException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="RecursiveGrammarException-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RecursiveGrammarException-expanded"><a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">    <tt class="py-docstring">"""exception thrown by L{ParserElement.validate} if the grammar could be improperly recursive"""</tt> </tt>\r
-<a name="RecursiveGrammarException.__init__"></a><div id="RecursiveGrammarException.__init__-def"><a name="L318"></a><tt class="py-lineno"> 318</tt> <a class="py-toggle" href="#" id="RecursiveGrammarException.__init__-toggle" onclick="return toggle('RecursiveGrammarException.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.RecursiveGrammarException-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="RecursiveGrammarException.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="RecursiveGrammarException.__init__-expanded"><a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseElementTrace</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt> </tt>\r
-</div><a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">\r </tt>
-<a name="RecursiveGrammarException.__str__"></a><div id="RecursiveGrammarException.__str__-def"><a name="L321"></a><tt class="py-lineno"> 321</tt> <a class="py-toggle" href="#" id="RecursiveGrammarException.__str__-toggle" onclick="return toggle('RecursiveGrammarException.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.RecursiveGrammarException-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="RecursiveGrammarException.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="RecursiveGrammarException.__str__-expanded"><a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"RecursiveGrammarException: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseElementTrace</tt> </tt>\r
-</div></div><a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">\r </tt>
-<a name="_ParseResultsWithOffset"></a><div id="_ParseResultsWithOffset-def"><a name="L324"></a><tt class="py-lineno"> 324</tt> <a class="py-toggle" href="#" id="_ParseResultsWithOffset-toggle" onclick="return toggle('_ParseResultsWithOffset');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._ParseResultsWithOffset-class.html">_ParseResultsWithOffset</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ParseResultsWithOffset-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_ParseResultsWithOffset-expanded"><a name="_ParseResultsWithOffset.__init__"></a><div id="_ParseResultsWithOffset.__init__-def"><a name="L325"></a><tt class="py-lineno"> 325</tt> <a class="py-toggle" href="#" id="_ParseResultsWithOffset.__init__-toggle" onclick="return toggle('_ParseResultsWithOffset.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._ParseResultsWithOffset-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">p1</tt><tt class="py-op">,</tt><tt class="py-param">p2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ParseResultsWithOffset.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ParseResultsWithOffset.__init__-expanded"><a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tup</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">p1</tt><tt class="py-op">,</tt><tt class="py-name">p2</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="_ParseResultsWithOffset.__getitem__"></a><div id="_ParseResultsWithOffset.__getitem__-def"><a name="L327"></a><tt class="py-lineno"> 327</tt> <a class="py-toggle" href="#" id="_ParseResultsWithOffset.__getitem__-toggle" onclick="return toggle('_ParseResultsWithOffset.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._ParseResultsWithOffset-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">i</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ParseResultsWithOffset.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ParseResultsWithOffset.__getitem__-expanded"><a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tup</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="_ParseResultsWithOffset.__repr__"></a><div id="_ParseResultsWithOffset.__repr__-def"><a name="L329"></a><tt class="py-lineno"> 329</tt> <a class="py-toggle" href="#" id="_ParseResultsWithOffset.__repr__-toggle" onclick="return toggle('_ParseResultsWithOffset.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._ParseResultsWithOffset-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ParseResultsWithOffset.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ParseResultsWithOffset.__repr__-expanded"><a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tup</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="_ParseResultsWithOffset.setOffset"></a><div id="_ParseResultsWithOffset.setOffset-def"><a name="L331"></a><tt class="py-lineno"> 331</tt> <a class="py-toggle" href="#" id="_ParseResultsWithOffset.setOffset-toggle" onclick="return toggle('_ParseResultsWithOffset.setOffset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._ParseResultsWithOffset-class.html#setOffset">setOffset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">i</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ParseResultsWithOffset.setOffset-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ParseResultsWithOffset.setOffset-expanded"><a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tup</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tup</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults"></a><div id="ParseResults-def"><a name="L334"></a><tt class="py-lineno"> 334</tt> <a class="py-toggle" href="#" id="ParseResults-toggle" onclick="return toggle('ParseResults');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html">ParseResults</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseResults-expanded"><a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-docstring">    Structured parse results, to provide multiple means of access to the parsed data:\r</tt> </tt>
-<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-docstring">       - as a list (C{len(results)})\r</tt> </tt>
-<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-docstring">       - by list index (C{results[0], results[1]}, etc.)\r</tt> </tt>
-<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-docstring">       - by attribute (C{results.&lt;resultsName&gt;} - see L{ParserElement.setResultsName})\r</tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums)\r</tt> </tt>
-<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-docstring">        date_str = (integer.setResultsName("year") + '/'\r</tt> </tt>
-<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-docstring">                        + integer.setResultsName("month") + '/'\r</tt> </tt>
-<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-docstring">                        + integer.setResultsName("day"))\r</tt> </tt>
-<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-docstring">        # equivalent form:\r</tt> </tt>
-<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-docstring">        # date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-docstring">        # parseString returns a ParseResults object\r</tt> </tt>
-<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-docstring">        result = date_str.parseString("1999/12/31")\r</tt> </tt>
-<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring">        def test(s, fn=repr):\r</tt> </tt>
-<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring">            print("%s -&gt; %s" % (s, fn(eval(s))))\r</tt> </tt>
-<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">        test("list(result)")\r</tt> </tt>
-<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-docstring">        test("result[0]")\r</tt> </tt>
-<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">        test("result['month']")\r</tt> </tt>
-<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring">        test("result.day")\r</tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-docstring">        test("'month' in result")\r</tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-docstring">        test("'minutes' in result")\r</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-docstring">        test("result.dump()", str)\r</tt> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring">        list(result) -&gt; ['1999', '/', '12', '/', '31']\r</tt> </tt>
-<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">        result[0] -&gt; '1999'\r</tt> </tt>
-<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">        result['month'] -&gt; '12'\r</tt> </tt>
-<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">        result.day -&gt; '31'\r</tt> </tt>
-<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">        'month' in result -&gt; True\r</tt> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">        'minutes' in result -&gt; False\r</tt> </tt>
-<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">        result.dump() -&gt; ['1999', '/', '12', '/', '31']\r</tt> </tt>
-<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">        - day: 31\r</tt> </tt>
-<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">        - month: 12\r</tt> </tt>
-<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">        - year: 1999\r</tt> </tt>
-<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="ParseResults.__new__"></a><div id="ParseResults.__new__-def"><a name="L373"></a><tt class="py-lineno"> 373</tt> <a class="py-toggle" href="#" id="ParseResults.__new__-toggle" onclick="return toggle('ParseResults.__new__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__new__">__new__</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">toklist</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">asList</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">modal</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__new__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__new__-expanded"><a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt> <tt class="py-name">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">toklist</tt> </tt>\r
-<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">        <tt class="py-name">retobj</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Static Method pyparsing.ParseResults.__new__()=pyparsing.ParseResults-class.html#__new__"><a title="pyparsing.ParseResults.__new__" class="py-name" href="#" onclick="return doclink('link-36', '__new__', 'link-36');">__new__</a></tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">        <tt class="py-name">retobj</tt><tt class="py-op">.</tt><tt class="py-name">__doinit</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">retobj</tt> </tt>\r
-</div><a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">\r </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">    <tt class="py-comment"># Performance tuning: we construct a *lot* of these, so keep this</tt>\r </tt>
-<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">    <tt class="py-comment"># constructor as small and fast as possible</tt>\r </tt>
-<a name="ParseResults.__init__"></a><div id="ParseResults.__init__-def"><a name="L382"></a><tt class="py-lineno"> 382</tt> <a class="py-toggle" href="#" id="ParseResults.__init__-toggle" onclick="return toggle('ParseResults.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">toklist</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">asList</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">modal</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">isinstance</tt><tt class="py-op">=</tt><tt class="py-name">isinstance</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__init__-expanded"><a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__doinit</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__doinit</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>\r
-<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__asList</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name" targets="Method pyparsing.ParseResults.asList()=pyparsing.ParseResults-class.html#asList"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-37', 'asList', 'link-37');">asList</a></tt> </tt>\r
-<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__modal</tt> <tt class="py-op">=</tt> <tt class="py-name">modal</tt> </tt>\r
-<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">toklist</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">                <tt class="py-name">toklist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">=</tt> <tt class="py-name">toklist</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt> <tt class="py-name">_generatorType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">toklist</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">\r </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">name</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">modal</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">                <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-comment"># will always return a str, but use _ustr for consistency</tt> </tt>\r
-<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>\r
-<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">toklist</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">                    <tt class="py-name">toklist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">toklist</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-38" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-38', 'asList', 'link-37');">asList</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">,</tt><tt id="link-39" class="py-name" targets="Class pyparsing.ParseResults=pyparsing.ParseResults-class.html"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-39', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt id="link-40" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-40', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-41', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-name">toklist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>\r
-<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">toklist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">KeyError</tt><tt class="py-op">,</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt><tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">toklist</tt> </tt>\r
-</div><a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__getitem__"></a><div id="ParseResults.__getitem__-def"><a name="L421"></a><tt class="py-lineno"> 421</tt> <a class="py-toggle" href="#" id="ParseResults.__getitem__-toggle" onclick="return toggle('ParseResults.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__getitem__-expanded"><a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-42" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-42', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__setitem__"></a><div id="ParseResults.__setitem__-def"><a name="L430"></a><tt class="py-lineno"> 430</tt> <a class="py-toggle" href="#" id="ParseResults.__setitem__-toggle" onclick="return toggle('ParseResults.__setitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">k</tt><tt class="py-op">,</tt> <tt class="py-param">v</tt><tt class="py-op">,</tt> <tt class="py-param">isinstance</tt><tt class="py-op">=</tt><tt class="py-name">isinstance</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__setitem__-expanded"><a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt><tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method pyparsing.ParseResults.get()=pyparsing.ParseResults-class.html#get"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-43', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">v</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">            <tt id="link-44" class="py-name" targets="Method pyparsing.Regex.compiledREtype.sub()=pyparsing.Regex.compiledREtype-class.html#sub,Method pyparsing.Regex.sub()=pyparsing.Regex-class.html#sub"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-44', 'sub', 'link-44');">sub</a></tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>\r
-<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">            <tt id="link-45" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-45', 'sub', 'link-44');">sub</a></tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>\r
-<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-46', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">            <tt id="link-47" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-47', 'sub', 'link-44');">sub</a></tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>\r
-<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-48', 'sub', 'link-44');">sub</a></tt><tt class="py-op">,</tt><tt id="link-49" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-49', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">            <tt id="link-50" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-50', 'sub', 'link-44');">sub</a></tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">wkref</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__delitem__"></a><div id="ParseResults.__delitem__-def"><a name="L443"></a><tt class="py-lineno"> 443</tt> <a class="py-toggle" href="#" id="ParseResults.__delitem__-toggle" onclick="return toggle('ParseResults.__delitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__delitem__">__delitem__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__delitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__delitem__-expanded"><a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">            <tt class="py-name">mylen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">\r </tt>
-<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">            <tt class="py-comment"># convert int to slice</tt>\r </tt>
-<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">                    <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-name">mylen</tt> </tt>\r
-<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">                <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">slice</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-comment"># get removed indices</tt>\r </tt>
-<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">            <tt class="py-name">removed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt class="py-name">indices</tt><tt class="py-op">(</tt><tt class="py-name">mylen</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-name">removed</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-comment"># fixup indices in token dictionary</tt>\r </tt>
-<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">occurrences</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method pyparsing.ParseResults.items()=pyparsing.ParseResults-class.html#items"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-51', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">j</tt> <tt class="py-keyword">in</tt> <tt class="py-name">removed</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">occurrences</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                        <tt class="py-name">occurrences</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">position</tt> <tt class="py-op">-</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">j</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__contains__"></a><div id="ParseResults.__contains__-def"><a name="L464"></a><tt class="py-lineno"> 464</tt> <a class="py-toggle" href="#" id="ParseResults.__contains__-toggle" onclick="return toggle('ParseResults.__contains__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__contains__">__contains__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">k</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__contains__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__contains__-expanded"><a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt> </tt>\r
-</div><a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__len__"></a><div id="ParseResults.__len__-def"><a name="L467"></a><tt class="py-lineno"> 467</tt> <a class="py-toggle" href="#" id="ParseResults.__len__-toggle" onclick="return toggle('ParseResults.__len__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__len__">__len__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseResults.__bool__"></a><div id="ParseResults.__bool__-def"><a name="L468"></a><tt class="py-lineno"> 468</tt> <a class="py-toggle" href="#" id="ParseResults.__bool__-toggle" onclick="return toggle('ParseResults.__bool__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__bool__">__bool__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">    <tt class="py-name">__nonzero__</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name" targets="Method pyparsing.ParseResults.__bool__()=pyparsing.ParseResults-class.html#__bool__"><a title="pyparsing.ParseResults.__bool__" class="py-name" href="#" onclick="return doclink('link-52', '__bool__', 'link-52');">__bool__</a></tt> </tt>\r
-<a name="ParseResults.__iter__"></a><div id="ParseResults.__iter__-def"><a name="L470"></a><tt class="py-lineno"> 470</tt> <a class="py-toggle" href="#" id="ParseResults.__iter__-toggle" onclick="return toggle('ParseResults.__iter__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__iter__">__iter__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">iter</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseResults.__reversed__"></a><div id="ParseResults.__reversed__-def"><a name="L471"></a><tt class="py-lineno"> 471</tt> <a class="py-toggle" href="#" id="ParseResults.__reversed__-toggle" onclick="return toggle('ParseResults.__reversed__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__reversed__">__reversed__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">iter</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="ParseResults._iterkeys"></a><div id="ParseResults._iterkeys-def"><a name="L472"></a><tt class="py-lineno"> 472</tt> <a class="py-toggle" href="#" id="ParseResults._iterkeys-toggle" onclick="return toggle('ParseResults._iterkeys');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#_iterkeys">_iterkeys</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults._iterkeys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults._iterkeys-expanded"><a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">,</tt> <tt class="py-string">"iterkeys"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">iter</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults._itervalues"></a><div id="ParseResults._itervalues-def"><a name="L478"></a><tt class="py-lineno"> 478</tt> <a class="py-toggle" href="#" id="ParseResults._itervalues-toggle" onclick="return toggle('ParseResults._itervalues');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#_itervalues">_itervalues</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults._itervalues-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults._itervalues-expanded"><a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method pyparsing.ParseResults._iterkeys()=pyparsing.ParseResults-class.html#_iterkeys"><a title="pyparsing.ParseResults._iterkeys" class="py-name" href="#" onclick="return doclink('link-53', '_iterkeys', 'link-53');">_iterkeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults._iteritems"></a><div id="ParseResults._iteritems-def"><a name="L481"></a><tt class="py-lineno"> 481</tt> <a class="py-toggle" href="#" id="ParseResults._iteritems-toggle" onclick="return toggle('ParseResults._iteritems');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#_iteritems">_iteritems</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults._iteritems-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults._iteritems-expanded"><a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="pyparsing.ParseResults._iterkeys" class="py-name" href="#" onclick="return doclink('link-54', '_iterkeys', 'link-53');">_iterkeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">\r </tt>
-<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-55" class="py-name"><a title="pyparsing.PY_3" class="py-name" href="#" onclick="return doclink('link-55', 'PY_3', 'link-5');">PY_3</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">        <tt id="link-56" class="py-name" targets="Method pyparsing.ParseResults.keys()=pyparsing.ParseResults-class.html#keys"><a title="pyparsing.ParseResults.keys" class="py-name" href="#" onclick="return doclink('link-56', 'keys', 'link-56');">keys</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="pyparsing.ParseResults._iterkeys" class="py-name" href="#" onclick="return doclink('link-57', '_iterkeys', 'link-53');">_iterkeys</a></tt> </tt>\r
-<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result keys (Python 3.x only)."""</tt> </tt>\r
-<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">\r </tt>
-<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt id="link-58" class="py-name" targets="Method pyparsing.ParseResults.values()=pyparsing.ParseResults-class.html#values"><a title="pyparsing.ParseResults.values" class="py-name" href="#" onclick="return doclink('link-58', 'values', 'link-58');">values</a></tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name" targets="Method pyparsing.ParseResults._itervalues()=pyparsing.ParseResults-class.html#_itervalues"><a title="pyparsing.ParseResults._itervalues" class="py-name" href="#" onclick="return doclink('link-59', '_itervalues', 'link-59');">_itervalues</a></tt> </tt>\r
-<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result values (Python 3.x only)."""</tt> </tt>\r
-<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">\r </tt>
-<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-60', 'items', 'link-51');">items</a></tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name" targets="Method pyparsing.ParseResults._iteritems()=pyparsing.ParseResults-class.html#_iteritems"><a title="pyparsing.ParseResults._iteritems" class="py-name" href="#" onclick="return doclink('link-61', '_iteritems', 'link-61');">_iteritems</a></tt> </tt>\r
-<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result key-value tuples (Python 3.x only)."""</tt> </tt>\r
-<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">\r </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">        <tt class="py-name">iterkeys</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="pyparsing.ParseResults._iterkeys" class="py-name" href="#" onclick="return doclink('link-62', '_iterkeys', 'link-53');">_iterkeys</a></tt> </tt>\r
-<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result keys (Python 2.x only)."""</tt> </tt>\r
-<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">\r </tt>
-<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">        <tt class="py-name">itervalues</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="pyparsing.ParseResults._itervalues" class="py-name" href="#" onclick="return doclink('link-63', '_itervalues', 'link-59');">_itervalues</a></tt> </tt>\r
-<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result values (Python 2.x only)."""</tt> </tt>\r
-<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">\r </tt>
-<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-name">iteritems</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="pyparsing.ParseResults._iteritems" class="py-name" href="#" onclick="return doclink('link-64', '_iteritems', 'link-61');">_iteritems</a></tt> </tt>\r
-<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">        <tt class="py-string">"""Returns an iterator of all named result key-value tuples (Python 2.x only)."""</tt> </tt>\r
-<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.keys"></a><div id="ParseResults.keys-def"><a name="L504"></a><tt class="py-lineno"> 504</tt> <a class="py-toggle" href="#" id="ParseResults.keys-toggle" onclick="return toggle('ParseResults.keys');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#keys">keys</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.keys-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParseResults.keys-expanded"><a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">            <tt class="py-docstring">"""Returns all named result keys (as a list in Python 2.x, as an iterator in Python 3.x)."""</tt> </tt>\r
-<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.values"></a><div id="ParseResults.values-def"><a name="L508"></a><tt class="py-lineno"> 508</tt> <a class="py-toggle" href="#" id="ParseResults.values-toggle" onclick="return toggle('ParseResults.values');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#values">values</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.values-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParseResults.values-expanded"><a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">            <tt class="py-docstring">"""Returns all named result values (as a list in Python 2.x, as an iterator in Python 3.x)."""</tt> </tt>\r
-<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.items"></a><div id="ParseResults.items-def"><a name="L512"></a><tt class="py-lineno"> 512</tt> <a class="py-toggle" href="#" id="ParseResults.items-toggle" onclick="return toggle('ParseResults.items');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#items">items</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.items-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParseResults.items-expanded"><a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">            <tt class="py-docstring">"""Returns all named result key-values (as a list of tuples in Python 2.x, as an iterator in Python 3.x)."""</tt> </tt>\r
-<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.haskeys"></a><div id="ParseResults.haskeys-def"><a name="L516"></a><tt class="py-lineno"> 516</tt> <a class="py-toggle" href="#" id="ParseResults.haskeys-toggle" onclick="return toggle('ParseResults.haskeys');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#haskeys">haskeys</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.haskeys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.haskeys-expanded"><a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-docstring">"""Since keys() returns an iterator, this method is helpful in bypassing\r</tt> </tt>
-<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">           code that looks for the existence of any defined results names."""</tt> </tt>\r
-<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.pop"></a><div id="ParseResults.pop-def"><a name="L521"></a><tt class="py-lineno"> 521</tt> <a class="py-toggle" href="#" id="ParseResults.pop-toggle" onclick="return toggle('ParseResults.pop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#pop">pop</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.pop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.pop-expanded"><a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">        Removes and returns item at specified index (default=C{last}).\r</tt> </tt>
-<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"><tt class="py-docstring">        Supports both C{list} and C{dict} semantics for C{pop()}. If passed no\r</tt> </tt>
-<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-docstring">        argument or an integer argument, it will use C{list} semantics\r</tt> </tt>
-<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-docstring">        and pop tokens from the list of parsed tokens. If passed a\r</tt> </tt>
-<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-docstring">        non-integer argument (most likely a string), it will use C{dict}\r</tt> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-docstring">        semantics and pop the corresponding value from any defined\r</tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-docstring">        results names. A second default return value argument is\r</tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-docstring">        supported, just as in C{dict.pop()}.\r</tt> </tt>
-<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-docstring">            def remove_first(tokens):\r</tt> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-docstring">                tokens.pop(0)\r</tt> </tt>
-<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -&gt; ['0', '123', '321']\r</tt> </tt>
-<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString("0 123 321")) # -&gt; ['123', '321']\r</tt> </tt>
-<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-docstring">            label = Word(alphas)\r</tt> </tt>
-<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring">            patt = label("LABEL") + OneOrMore(Word(nums))\r</tt> </tt>
-<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">            print(patt.parseString("AAB 123 321").dump())\r</tt> </tt>
-<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">            # Use pop() in a parse action to remove named result (note that corresponding value is not\r</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">            # removed from list form of results)\r</tt> </tt>
-<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring">            def remove_LABEL(tokens):\r</tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring">                tokens.pop("LABEL")\r</tt> </tt>
-<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">                return tokens\r</tt> </tt>
-<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-docstring">            patt.addParseAction(remove_LABEL)\r</tt> </tt>
-<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-docstring">            print(patt.parseString("AAB 123 321").dump())\r</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-docstring">            ['AAB', '123', '321']\r</tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-docstring">            - LABEL: AAB\r</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-docstring">            ['AAB', '123', '321']\r</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-65', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">k</tt> <tt class="py-op">==</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">                <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"pop() got an unexpected keyword argument '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt>\r </tt>
-<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt>\r </tt>
-<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">                        <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">            <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">            <tt class="py-name">defaultvalue</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">defaultvalue</tt> </tt>\r
-</div><a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.get"></a><div id="ParseResults.get-def"><a name="L573"></a><tt class="py-lineno"> 573</tt> <a class="py-toggle" href="#" id="ParseResults.get-toggle" onclick="return toggle('ParseResults.get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">defaultValue</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.get-expanded"><a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-docstring">        Returns named result matching the given key, or if there is no\r</tt> </tt>
-<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-docstring">        such name, then returns the given C{defaultValue} or C{None} if no\r</tt> </tt>
-<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-docstring">        C{defaultValue} is specified.\r</tt> </tt>
-<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-docstring">        Similar to C{dict.get()}.\r</tt> </tt>
-<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">            result = date_str.parseString("1999/12/31")\r</tt> </tt>
-<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">            print(result.get("year")) # -&gt; '1999'\r</tt> </tt>
-<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring">            print(result.get("hour", "not specified")) # -&gt; 'not specified'\r</tt> </tt>
-<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">            print(result.get("hour")) # -&gt; None\r</tt> </tt>
-<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">defaultValue</tt> </tt>\r
-</div><a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.insert"></a><div id="ParseResults.insert-def"><a name="L595"></a><tt class="py-lineno"> 595</tt> <a class="py-toggle" href="#" id="ParseResults.insert-toggle" onclick="return toggle('ParseResults.insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#insert">insert</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">index</tt><tt class="py-op">,</tt> <tt class="py-param">insStr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.insert-expanded"><a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"><tt class="py-docstring">        Inserts new element at location index in the list of parsed tokens.\r</tt> </tt>
-<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring">        Similar to C{list.insert()}.\r</tt> </tt>
-<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -&gt; ['0', '123', '321']\r</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">            # use a parse action to insert the parse location in the front of the parsed results\r</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">            def insert_locn(locn, tokens):\r</tt> </tt>
-<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">                tokens.insert(0, locn)\r</tt> </tt>
-<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString("0 123 321")) # -&gt; [0, '0', '123', '321']\r</tt> </tt>
-<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method pyparsing.ParseResults.insert()=pyparsing.ParseResults-class.html#insert"><a title="pyparsing.ParseResults.insert" class="py-name" href="#" onclick="return doclink('link-66', 'insert', 'link-66');">insert</a></tt><tt class="py-op">(</tt><tt class="py-name">index</tt><tt class="py-op">,</tt> <tt class="py-name">insStr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-comment"># fixup indices in token dictionary</tt>\r </tt>
-<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">occurrences</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-67', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">occurrences</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">                <tt class="py-name">occurrences</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">position</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">index</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.append"></a><div id="ParseResults.append-def"><a name="L615"></a><tt class="py-lineno"> 615</tt> <a class="py-toggle" href="#" id="ParseResults.append-toggle" onclick="return toggle('ParseResults.append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#append">append</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.append-expanded"><a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-docstring">        Add single element to end of ParseResults list of elements.\r</tt> </tt>
-<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -&gt; ['0', '123', '321']\r</tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-docstring">            # use a parse action to compute the sum of the parsed integers, and add it to the end\r</tt> </tt>
-<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-docstring">            def append_sum(tokens):\r</tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-docstring">                tokens.append(sum(map(int, tokens)))\r</tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString("0 123 321")) # -&gt; ['0', '123', '321', 444]\r</tt> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-68', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.extend"></a><div id="ParseResults.extend-def"><a name="L629"></a><tt class="py-lineno"> 629</tt> <a class="py-toggle" href="#" id="ParseResults.extend-toggle" onclick="return toggle('ParseResults.extend');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#extend">extend</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">itemseq</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.extend-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.extend-expanded"><a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring">        Add sequence of elements to end of ParseResults list of elements.\r</tt> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">            patt = OneOrMore(Word(alphas))\r</tt> </tt>
-<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">            # use a parse action to append the reverse of the matched strings, to make a palindrome\r</tt> </tt>
-<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">            def make_palindrome(tokens):\r</tt> </tt>
-<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">                tokens.extend(reversed([t[::-1] for t in tokens]))\r</tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">                return ''.join(tokens)\r</tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">            print(patt.addParseAction(make_palindrome).parseString("lskdj sdlkjf lksd")) # -&gt; 'lskdjsdlkjflksddsklfjkldsjdksl'\r</tt> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">itemseq</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-69', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">            <tt class="py-name">self</tt> <tt class="py-op">+=</tt> <tt class="py-name">itemseq</tt> </tt>\r
-<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method pyparsing.ParseResults.extend()=pyparsing.ParseResults-class.html#extend"><a title="pyparsing.ParseResults.extend" class="py-name" href="#" onclick="return doclink('link-70', 'extend', 'link-70');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">itemseq</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.clear"></a><div id="ParseResults.clear-def"><a name="L647"></a><tt class="py-lineno"> 647</tt> <a class="py-toggle" href="#" id="ParseResults.clear-toggle" onclick="return toggle('ParseResults.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#clear">clear</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.clear-expanded"><a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">        Clear all elements and results names.\r</tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method pyparsing.ParseResults.clear()=pyparsing.ParseResults-class.html#clear"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-71', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__getattr__"></a><div id="ParseResults.__getattr__-def"><a name="L654"></a><tt class="py-lineno"> 654</tt> <a class="py-toggle" href="#" id="ParseResults.__getattr__-toggle" onclick="return toggle('ParseResults.__getattr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__getattr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__getattr__-expanded"><a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">\r </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-72" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-72', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>\r
-</div><a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__add__"></a><div id="ParseResults.__add__-def"><a name="L668"></a><tt class="py-lineno"> 668</tt> <a class="py-toggle" href="#" id="ParseResults.__add__-toggle" onclick="return toggle('ParseResults.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__add__">__add__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__add__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__add__-expanded"><a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-73', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">+=</tt> <tt class="py-name">other</tt> </tt>\r
-<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__iadd__"></a><div id="ParseResults.__iadd__-def"><a name="L673"></a><tt class="py-lineno"> 673</tt> <a class="py-toggle" href="#" id="ParseResults.__iadd__-toggle" onclick="return toggle('ParseResults.__iadd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__iadd__">__iadd__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__iadd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__iadd__-expanded"><a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">            <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">            <tt class="py-name">addoffset</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">:</tt> <tt class="py-name">offset</tt> <tt class="py-keyword">if</tt> <tt class="py-name">a</tt><tt class="py-op">&lt;</tt><tt class="py-number">0</tt> <tt class="py-keyword">else</tt> <tt class="py-name">a</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt> </tt>\r
-<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">            <tt class="py-name">otheritems</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-74', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">            <tt class="py-name">otherdictitems</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">addoffset</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt>\r </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">                                <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">vlist</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">otheritems</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">vlist</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">otherdictitems</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>\r
-<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt id="link-75" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-75', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">                    <tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">wkref</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">\r </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">+=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> </tt>\r
-<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__radd__"></a><div id="ParseResults.__radd__-def"><a name="L689"></a><tt class="py-lineno"> 689</tt> <a class="py-toggle" href="#" id="ParseResults.__radd__-toggle" onclick="return toggle('ParseResults.__radd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__radd__">__radd__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__radd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__radd__-expanded"><a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">other</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">            <tt class="py-comment"># useful for merging many ParseResults using sum() builtin</tt>\r </tt>
-<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-76', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">            <tt class="py-comment"># this may raise a TypeError - so be it</tt>\r </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__repr__"></a><div id="ParseResults.__repr__-def"><a name="L697"></a><tt class="py-lineno"> 697</tt> <a class="py-toggle" href="#" id="ParseResults.__repr__-toggle" onclick="return toggle('ParseResults.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__repr__">__repr__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__repr__-expanded"><a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"(%s, %s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__str__"></a><div id="ParseResults.__str__-def"><a name="L700"></a><tt class="py-lineno"> 700</tt> <a class="py-toggle" href="#" id="ParseResults.__str__-toggle" onclick="return toggle('ParseResults.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__str__-expanded"><a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'['</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-77', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">']'</tt> </tt>\r
-</div><a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults._asStringList"></a><div id="ParseResults._asStringList-def"><a name="L703"></a><tt class="py-lineno"> 703</tt> <a class="py-toggle" href="#" id="ParseResults._asStringList-toggle" onclick="return toggle('ParseResults._asStringList');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#_asStringList">_asStringList</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sep</tt><tt class="py-op">=</tt><tt class="py-string">''</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults._asStringList-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults._asStringList-expanded"><a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">out</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sep</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-78', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">sep</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-79', 'ParseResults', 'link-39');">ParseResults</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">                <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">_asStringList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-80', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt>\r
-</div><a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.asList"></a><div id="ParseResults.asList-def"><a name="L714"></a><tt class="py-lineno"> 714</tt> <a class="py-toggle" href="#" id="ParseResults.asList-toggle" onclick="return toggle('ParseResults.asList');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#asList">asList</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.asList-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.asList-expanded"><a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring">        Returns the parse results as a nested list of matching tokens, all converted to strings.\r</tt> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"><tt class="py-docstring">            patt = OneOrMore(Word(alphas))\r</tt> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-docstring">            result = patt.parseString("sldkj lsdkj sldkj")\r</tt> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"><tt class="py-docstring">            # even though the result prints in string-like form, it is actually a pyparsing ParseResults\r</tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-docstring">            print(type(result), result) # -&gt; &lt;class 'pyparsing.ParseResults'&gt; ['sldkj', 'lsdkj', 'sldkj']\r</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-docstring">            # Use asList() to create an actual list\r</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-docstring">            result_list = result.asList()\r</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-docstring">            print(type(result_list), result_list) # -&gt; &lt;class 'list'&gt; ['sldkj', 'lsdkj', 'sldkj']\r</tt> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">res</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-81', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">,</tt><tt id="link-82" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-82', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-name">res</tt> <tt class="py-keyword">for</tt> <tt class="py-name">res</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.asDict"></a><div id="ParseResults.asDict-def"><a name="L730"></a><tt class="py-lineno"> 730</tt> <a class="py-toggle" href="#" id="ParseResults.asDict-toggle" onclick="return toggle('ParseResults.asDict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#asDict">asDict</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.asDict-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.asDict-expanded"><a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">        Returns the named parse results as a nested dictionary.\r</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">            result = date_str.parseString('12/31/1999')\r</tt> </tt>
-<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">            print(type(result), repr(result)) # -&gt; &lt;class 'pyparsing.ParseResults'&gt; (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]})\r</tt> </tt>
-<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">            result_dict = result.asDict()\r</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">            print(type(result_dict), repr(result_dict)) # -&gt; &lt;class 'dict'&gt; {'day': '1999', 'year': '12', 'month': '31'}\r</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">            # even though a ParseResults supports dict-like access, sometime you just need to have a dict\r</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">            import json\r</tt> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">            print(json.dumps(result)) # -&gt; Exception: TypeError: ... is not JSON serializable\r</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">            print(json.dumps(result.asDict())) # -&gt; {"month": "31", "day": "1999", "year": "12"}\r</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-83" class="py-name"><a title="pyparsing.PY_3" class="py-name" href="#" onclick="return doclink('link-83', 'PY_3', 'link-5');">PY_3</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">            <tt class="py-name">item_fn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-84', 'items', 'link-51');">items</a></tt> </tt>\r
-<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt class="py-name">item_fn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt> </tt>\r
-<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">\r </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">toItem</tt><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-85', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method pyparsing.ParseResults.haskeys()=pyparsing.ParseResults-class.html#haskeys"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-86', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method pyparsing.ParseResults.asDict()=pyparsing.ParseResults-class.html#asDict"><a title="pyparsing.ParseResults.asDict" class="py-name" href="#" onclick="return doclink('link-87', 'asDict', 'link-87');">asDict</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">toItem</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">obj</tt> </tt>\r
-</div><a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">\r </tt>
-<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">toItem</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item_fn</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.copy"></a><div id="ParseResults.copy-def"><a name="L765"></a><tt class="py-lineno"> 765</tt> <a class="py-toggle" href="#" id="ParseResults.copy-toggle" onclick="return toggle('ParseResults.copy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#copy">copy</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.copy-expanded"><a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"><tt class="py-docstring">        Returns a new copy of a C{ParseResults} object.\r</tt> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-88', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-89', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> </tt>\r
-<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> </tt>\r
-<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.asXML"></a><div id="ParseResults.asXML-def"><a name="L776"></a><tt class="py-lineno"> 776</tt> <a class="py-toggle" href="#" id="ParseResults.asXML-toggle" onclick="return toggle('ParseResults.asXML');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#asXML">asXML</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doctag</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">namedItemsOnly</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">formatted</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.asXML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.asXML-expanded"><a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"><tt class="py-docstring">        (Deprecated) Returns the parse results as XML. Tags are created for tokens and lists that have defined results names.\r</tt> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-name">nl</tt> <tt class="py-op">=</tt> <tt class="py-string">"\n"</tt> </tt>\r
-<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-name">namedItems</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">k</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">vlist</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-90', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">                                                            <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">vlist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-name">nextLevelIndent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">"  "</tt> </tt>\r
-<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">\r </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-comment"># collapse out indents if formatting is not desired</tt>\r </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">formatted</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">            <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">            <tt class="py-name">nextLevelIndent</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">            <tt class="py-name">nl</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">\r </tt>
-<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-name">selfTag</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doctag</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">            <tt class="py-name">selfTag</tt> <tt class="py-op">=</tt> <tt class="py-name">doctag</tt> </tt>\r
-<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                <tt class="py-name">selfTag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> </tt>\r
-<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">\r </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">selfTag</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">namedItemsOnly</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                <tt class="py-name">selfTag</tt> <tt class="py-op">=</tt> <tt class="py-string">"ITEM"</tt> </tt>\r
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">\r </tt>
-<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-name">nl</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;"</tt><tt class="py-op">,</tt> <tt class="py-name">selfTag</tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;"</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">\r </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">res</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">,</tt><tt id="link-91" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-91', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">namedItems</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">                    <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-name">res</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method pyparsing.ParseResults.asXML()=pyparsing.ParseResults-class.html#asXML"><a title="pyparsing.ParseResults.asXML" class="py-name" href="#" onclick="return doclink('link-92', 'asXML', 'link-92');">asXML</a></tt><tt class="py-op">(</tt><tt class="py-name">namedItems</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">                                        <tt class="py-name">namedItemsOnly</tt> <tt class="py-keyword">and</tt> <tt class="py-name">doctag</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">                                        <tt class="py-name">nextLevelIndent</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">                                        <tt class="py-name">formatted</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">                    <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-name">res</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="pyparsing.ParseResults.asXML" class="py-name" href="#" onclick="return doclink('link-93', 'asXML', 'link-92');">asXML</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">                                        <tt class="py-name">namedItemsOnly</tt> <tt class="py-keyword">and</tt> <tt class="py-name">doctag</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">                                        <tt class="py-name">nextLevelIndent</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">                                        <tt class="py-name">formatted</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">                <tt class="py-comment"># individual token, see if there is a name for it</tt>\r </tt>
-<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">                <tt class="py-name">resTag</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">namedItems</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                    <tt class="py-name">resTag</tt> <tt class="py-op">=</tt> <tt class="py-name">namedItems</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">resTag</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">namedItemsOnly</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">                        <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">                        <tt class="py-name">resTag</tt> <tt class="py-op">=</tt> <tt class="py-string">"ITEM"</tt> </tt>\r
-<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">                <tt class="py-name">xmlBodyText</tt> <tt class="py-op">=</tt> <tt class="py-name">_xml_escape</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">                <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-name">nl</tt><tt class="py-op">,</tt> <tt class="py-name">nextLevelIndent</tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;"</tt><tt class="py-op">,</tt> <tt class="py-name">resTag</tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">                                                <tt class="py-name">xmlBodyText</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">                                                <tt class="py-string">"&lt;/"</tt><tt class="py-op">,</tt> <tt class="py-name">resTag</tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;"</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">\r </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-name">nl</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/"</tt><tt class="py-op">,</tt> <tt class="py-name">selfTag</tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;"</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__lookup"></a><div id="ParseResults.__lookup-def"><a name="L837"></a><tt class="py-lineno"> 837</tt> <a class="py-toggle" href="#" id="ParseResults.__lookup-toggle" onclick="return toggle('ParseResults.__lookup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__lookup">__lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">sub</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__lookup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__lookup-expanded"><a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">vlist</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-94', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">v</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">vlist</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-95" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-95', 'sub', 'link-44');">sub</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">k</tt> </tt>\r
-<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-</div><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.getName"></a><div id="ParseResults.getName-def"><a name="L844"></a><tt class="py-lineno"> 844</tt> <a class="py-toggle" href="#" id="ParseResults.getName-toggle" onclick="return toggle('ParseResults.getName');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#getName">getName</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.getName-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.getName-expanded"><a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt class="py-docstring">r"""\r</tt> </tt>
-<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-docstring">        Returns the results name for this token expression. Useful when several\r</tt> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"><tt class="py-docstring">        different expressions might match at a particular location.\r</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-docstring">            ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d")\r</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-docstring">            house_number_expr = Suppress('#') + Word(nums, alphanums)\r</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">            user_data = (Group(house_number_expr)("house_number")\r</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">                        | Group(ssn_expr)("ssn")\r</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">                        | Group(integer)("age"))\r</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring">            user_info = OneOrMore(user_data)\r</tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">            result = user_info.parseString("22 111-22-3333 #221B")\r</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">            for item in result:\r</tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">                print(item.getName(), ':', item[0])\r</tt> </tt>
-<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">            age : 22\r</tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">            ssn : 111-22-3333\r</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">            house_number : 221B\r</tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> </tt>\r
-<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">            <tt class="py-name">par</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">par</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">par</tt><tt class="py-op">.</tt><tt class="py-name">__lookup</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">               <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">               <tt class="py-name">next</tt><tt class="py-op">(</tt><tt class="py-name">iter</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="pyparsing.ParseResults.values" class="py-name" href="#" onclick="return doclink('link-96', 'values', 'link-58');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">next</tt><tt class="py-op">(</tt><tt class="py-name">iter</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="pyparsing.ParseResults.keys" class="py-name" href="#" onclick="return doclink('link-97', 'keys', 'link-56');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-</div><a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.dump"></a><div id="ParseResults.dump-def"><a name="L881"></a><tt class="py-lineno"> 881</tt> <a class="py-toggle" href="#" id="ParseResults.dump-toggle" onclick="return toggle('ParseResults.dump');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#dump">dump</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">depth</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">full</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.dump-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.dump-expanded"><a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-docstring">        Diagnostic method for listing out the contents of a C{ParseResults}.\r</tt> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-docstring">        Accepts an optional C{indent} argument so that this string can be embedded\r</tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring">        in a nested display of other data.\r</tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">            result = date_str.parseString('12/31/1999')\r</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">            print(result.dump())\r</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-docstring">            ['12', '/', '31', '/', '1999']\r</tt> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"><tt class="py-docstring">            - day: 1999\r</tt> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"><tt class="py-docstring">            - month: 31\r</tt> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-docstring">            - year: 12\r</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-name">NL</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt> </tt>\r
-<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-98', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-99', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">full</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-100', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">                <tt id="link-101" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-101', 'items', 'link-51');">items</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-102', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt id="link-103" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-103', 'items', 'link-51');">items</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">out</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-104', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">NL</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-105', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-string">"%s%s- %s: "</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">*</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt><tt id="link-106" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-106', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                            <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-107', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method pyparsing.ParseResults.dump()=pyparsing.ParseResults-class.html#dump"><a title="pyparsing.ParseResults.dump" class="py-name" href="#" onclick="return doclink('link-108', 'dump', 'link-108');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">                            <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-109', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-110', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">any</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vv</tt><tt class="py-op">,</tt><tt id="link-111" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-111', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">vv</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>\r
-<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">vv</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vv</tt><tt class="py-op">,</tt><tt id="link-112" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-112', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-113', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"\n%s%s[%d]:\n%s%s%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">vv</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="pyparsing.ParseResults.dump" class="py-name" href="#" onclick="return doclink('link-114', 'dump', 'link-108');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-115', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"\n%s%s[%d]:\n%s%s%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">vv</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">\r </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.pprint"></a><div id="ParseResults.pprint-def"><a name="L926"></a><tt class="py-lineno"> 926</tt> <a class="py-toggle" href="#" id="ParseResults.pprint-toggle" onclick="return toggle('ParseResults.pprint');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#pprint">pprint</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.pprint-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.pprint-expanded"><a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring">        Pretty-printer for parsed results as a list, using the C{pprint} module.\r</tt> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">        Accepts additional positional or keyword args as defined for the\r</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">        C{pprint.pprint} method. (U{http://docs.python.org/3/library/pprint.html#pprint.pprint})\r</tt> </tt>
-<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring">            ident = Word(alphas, alphanums)\r</tt> </tt>
-<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring">            num = Word(nums)\r</tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring">            func = Forward()\r</tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">            term = ident | num | Group('(' + func + ')')\r</tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">            func &lt;&lt;= ident + Group(Optional(delimitedList(term)))\r</tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">            result = func.parseString("fna a,b,(fnb c,d,200),100")\r</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">            result.pprint(width=40)\r</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-docstring">            ['fna',\r</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-docstring">             ['a',\r</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-docstring">              'b',\r</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-docstring">              ['(', 'fnb', ['c', 'd', '200'], ')'],\r</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-docstring">              '100']]\r</tt> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">        <tt id="link-116" class="py-name"><a title="pyparsing.ParseResults.pprint" class="py-name" href="#" onclick="return doclink('link-116', 'pprint', 'link-3');">pprint</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="pyparsing.ParseResults.pprint" class="py-name" href="#" onclick="return doclink('link-117', 'pprint', 'link-3');">pprint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-118', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">\r </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">    <tt class="py-comment"># add support for pickle protocol</tt>\r </tt>
-<a name="ParseResults.__getstate__"></a><div id="ParseResults.__getstate__-def"><a name="L950"></a><tt class="py-lineno"> 950</tt> <a class="py-toggle" href="#" id="ParseResults.__getstate__-toggle" onclick="return toggle('ParseResults.__getstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__getstate__-expanded"><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">                 <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-119', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__setstate__"></a><div id="ParseResults.__setstate__-def"><a name="L957"></a><tt class="py-lineno"> 957</tt> <a class="py-toggle" href="#" id="ParseResults.__setstate__-toggle" onclick="return toggle('ParseResults.__setstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__setstate__-expanded"><a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tokdict</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">         <tt class="py-name">par</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">         <tt class="py-name">inAccumNames</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">         <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>\r
-<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__accumNames</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">inAccumNames</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">par</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">wkref</tt><tt class="py-op">(</tt><tt class="py-name">par</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__parent</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-</div><a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__getnewargs__"></a><div id="ParseResults.__getnewargs__-def"><a name="L970"></a><tt class="py-lineno"> 970</tt> <a class="py-toggle" href="#" id="ParseResults.__getnewargs__-toggle" onclick="return toggle('ParseResults.__getnewargs__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__getnewargs__">__getnewargs__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__getnewargs__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__getnewargs__-expanded"><a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__toklist</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__asList</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__modal</tt> </tt>\r
-</div><a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">\r </tt>
-<a name="ParseResults.__dir__"></a><div id="ParseResults.__dir__-def"><a name="L973"></a><tt class="py-lineno"> 973</tt> <a class="py-toggle" href="#" id="ParseResults.__dir__-toggle" onclick="return toggle('ParseResults.__dir__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseResults-class.html#__dir__">__dir__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseResults.__dir__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseResults.__dir__-expanded"><a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="pyparsing.ParseResults.keys" class="py-name" href="#" onclick="return doclink('link-120', 'keys', 'link-56');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">\r </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-name">MutableMapping</tt><tt class="py-op">.</tt><tt class="py-name">register</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-121', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="col"></a><div id="col-def"><a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">\r </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt> <a class="py-toggle" href="#" id="col-toggle" onclick="return toggle('col');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#col">col</a> <tt class="py-op">(</tt><tt class="py-param">loc</tt><tt class="py-op">,</tt><tt class="py-param">strg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="col-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="col-expanded"><a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns current column within a string, counting newlines as line separators.\r</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring">   The first column is number 1.\r</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring">   Note: the default parsing behavior is to expand tabs in the input string\r</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">   before starting the parsing process.  See L{I{ParserElement.parseString}&lt;ParserElement.parseString&gt;} for more information\r</tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">   on parsing strings containing C{&lt;TAB&gt;}s, and suggested methods to maintain a\r</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">   consistent view of the parsed string, the parse location, and line and column\r</tt> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">   positions within the parsed string.\r</tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">   """</tt> </tt>\r
-<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">strg</tt> </tt>\r
-<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> <tt class="py-keyword">if</tt> <tt class="py-number">0</tt><tt class="py-op">&lt;</tt><tt class="py-name">loc</tt><tt class="py-op">&lt;</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">else</tt> <tt class="py-name">loc</tt> <tt class="py-op">-</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">rfind</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">\r </tt>
-<a name="lineno"></a><div id="lineno-def"><a name="L991"></a><tt class="py-lineno"> 991</tt> <a class="py-toggle" href="#" id="lineno-toggle" onclick="return toggle('lineno');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#lineno">lineno</a><tt class="py-op">(</tt><tt class="py-param">loc</tt><tt class="py-op">,</tt><tt class="py-param">strg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="lineno-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lineno-expanded"><a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns current line number within a string, counting newlines as line separators.\r</tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">   The first line is number 1.\r</tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring">   Note: the default parsing behavior is to expand tabs in the input string\r</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-docstring">   before starting the parsing process.  See L{I{ParserElement.parseString}&lt;ParserElement.parseString&gt;} for more information\r</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring">   on parsing strings containing C{&lt;TAB&gt;}s, and suggested methods to maintain a\r</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-docstring">   consistent view of the parsed string, the parse location, and line and column\r</tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-docstring">   positions within the parsed string.\r</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-docstring">   """</tt> </tt>\r
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">strg</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>\r
-</div><a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">\r </tt>
-<a name="line"></a><div id="line-def"><a name="L1003"></a><tt class="py-lineno">1003</tt> <a class="py-toggle" href="#" id="line-toggle" onclick="return toggle('line');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#line">line</a><tt class="py-op">(</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">strg</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="line-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="line-expanded"><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns the line of text containing loc within a string, counting newlines as line separators.\r</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">       """</tt> </tt>\r
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-name">lastCR</tt> <tt class="py-op">=</tt> <tt class="py-name">strg</tt><tt class="py-op">.</tt><tt class="py-name">rfind</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">    <tt class="py-name">nextCR</tt> <tt class="py-op">=</tt> <tt class="py-name">strg</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">nextCR</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">strg</tt><tt class="py-op">[</tt><tt class="py-name">lastCR</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-name">nextCR</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">strg</tt><tt class="py-op">[</tt><tt class="py-name">lastCR</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">\r </tt>
-<a name="_defaultStartDebugAction"></a><div id="_defaultStartDebugAction-def"><a name="L1013"></a><tt class="py-lineno">1013</tt> <a class="py-toggle" href="#" id="_defaultStartDebugAction-toggle" onclick="return toggle('_defaultStartDebugAction');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_defaultStartDebugAction">_defaultStartDebugAction</a><tt class="py-op">(</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_defaultStartDebugAction-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_defaultStartDebugAction-expanded"><a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">"Match "</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">" at loc "</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"(%d,%d)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt id="link-122" class="py-name"><a title="pyparsing.lineno" class="py-name" href="#" onclick="return doclink('link-122', 'lineno', 'link-30');">lineno</a></tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-123" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-123', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">\r </tt>
-<a name="_defaultSuccessDebugAction"></a><div id="_defaultSuccessDebugAction-def"><a name="L1016"></a><tt class="py-lineno">1016</tt> <a class="py-toggle" href="#" id="_defaultSuccessDebugAction-toggle" onclick="return toggle('_defaultSuccessDebugAction');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_defaultSuccessDebugAction">_defaultSuccessDebugAction</a><tt class="py-op">(</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">startloc</tt><tt class="py-op">,</tt> <tt class="py-param">endloc</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">toks</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_defaultSuccessDebugAction-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_defaultSuccessDebugAction-expanded"><a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-string">"Matched "</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">" -&gt; "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">toks</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-124', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">\r </tt>
-<a name="_defaultExceptionDebugAction"></a><div id="_defaultExceptionDebugAction-def"><a name="L1019"></a><tt class="py-lineno">1019</tt> <a class="py-toggle" href="#" id="_defaultExceptionDebugAction-toggle" onclick="return toggle('_defaultExceptionDebugAction');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_defaultExceptionDebugAction">_defaultExceptionDebugAction</a><tt class="py-op">(</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">exc</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_defaultExceptionDebugAction-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_defaultExceptionDebugAction-expanded"><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-string">"Exception raised:"</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">\r </tt>
-<a name="nullDebugAction"></a><div id="nullDebugAction-def"><a name="L1022"></a><tt class="py-lineno">1022</tt> <a class="py-toggle" href="#" id="nullDebugAction-toggle" onclick="return toggle('nullDebugAction');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#nullDebugAction">nullDebugAction</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="nullDebugAction-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="nullDebugAction-expanded"><a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-docstring">"""'Do-nothing' debug action, to suppress debugging output during parsing."""</tt> </tt>\r
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">\r </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-comment"># Only works on Python 3.x - nonlocal is toxic to Python 2 installs</tt>\r </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-comment">#~ 'decorator to trim function calls to match the arity of the target'</tt>\r </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-comment">#~ def _trim_arity(func, maxargs=3):</tt>\r </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">    <tt class="py-comment">#~ if func in singleArgBuiltins:</tt>\r </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-comment">#~ return lambda s,l,t: func(t)</tt>\r </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt class="py-comment">#~ limit = 0</tt>\r </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">    <tt class="py-comment">#~ foundArity = False</tt>\r </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">    <tt class="py-comment">#~ def wrapper(*args):</tt>\r </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-comment">#~ nonlocal limit,foundArity</tt>\r </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-comment">#~ while 1:</tt>\r </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">            <tt class="py-comment">#~ try:</tt>\r </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                <tt class="py-comment">#~ ret = func(*args[limit:])</tt>\r </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">                <tt class="py-comment">#~ foundArity = True</tt>\r </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">                <tt class="py-comment">#~ return ret</tt>\r </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">            <tt class="py-comment">#~ except TypeError:</tt>\r </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">                <tt class="py-comment">#~ if limit == maxargs or foundArity:</tt>\r </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">                    <tt class="py-comment">#~ raise</tt>\r </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">                <tt class="py-comment">#~ limit += 1</tt>\r </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">                <tt class="py-comment">#~ continue</tt>\r </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-comment">#~ return wrapper</tt>\r </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">\r </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-comment"># this version is Python 2.x-3.x cross-compatible</tt>\r </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-string">'decorator to trim function calls to match the arity of the target'</tt> </tt>\r
-<a name="_trim_arity"></a><div id="_trim_arity-def"><a name="L1049"></a><tt class="py-lineno">1049</tt> <a class="py-toggle" href="#" id="_trim_arity-toggle" onclick="return toggle('_trim_arity');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_trim_arity">_trim_arity</a><tt class="py-op">(</tt><tt class="py-param">func</tt><tt class="py-op">,</tt> <tt class="py-param">maxargs</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_trim_arity-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_trim_arity-expanded"><a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">func</tt> <tt class="py-keyword">in</tt> <tt id="link-125" class="py-name"><a title="pyparsing.singleArgBuiltins" class="py-name" href="#" onclick="return doclink('link-125', 'singleArgBuiltins', 'link-9');">singleArgBuiltins</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">func</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">    <tt class="py-name">limit</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">    <tt class="py-name">foundArity</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">False</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">\r </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">    <tt class="py-comment"># traceback return data structure changed in Py3.5 - normalize back to plain tuples</tt>\r </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-126" class="py-name"><a title="pyparsing.system_version" class="py-name" href="#" onclick="return doclink('link-126', 'system_version', 'link-4');">system_version</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extract_stack</tt><tt class="py-op">(</tt><tt class="py-param">limit</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">            <tt class="py-comment"># special handling for Python 3.5.0 - extra deep call stack by 1</tt>\r </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">            <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">3</tt> <tt class="py-keyword">if</tt> <tt id="link-127" class="py-name"><a title="pyparsing.system_version" class="py-name" href="#" onclick="return doclink('link-127', 'system_version', 'link-4');">system_version</a></tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">5</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-op">-</tt><tt class="py-number">2</tt> </tt>\r
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">            <tt class="py-name">frame_summary</tt> <tt class="py-op">=</tt> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">extract_stack</tt><tt class="py-op">(</tt><tt class="py-name">limit</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-name">offset</tt><tt class="py-op">+</tt><tt class="py-name">limit</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">offset</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">frame_summary</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extract_tb</tt><tt class="py-op">(</tt><tt class="py-param">tb</tt><tt class="py-op">,</tt> <tt class="py-param">limit</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">            <tt class="py-name">frames</tt> <tt class="py-op">=</tt> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">extract_tb</tt><tt class="py-op">(</tt><tt class="py-name">tb</tt><tt class="py-op">,</tt> <tt class="py-name">limit</tt><tt class="py-op">=</tt><tt class="py-name">limit</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">            <tt class="py-name">frame_summary</tt> <tt class="py-op">=</tt> <tt class="py-name">frames</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">frame_summary</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">extract_stack</tt> <tt class="py-op">=</tt> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">extract_stack</tt> </tt>\r
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-name">extract_tb</tt> <tt class="py-op">=</tt> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">extract_tb</tt> </tt>\r
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">\r </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">    <tt class="py-comment"># synthesize what would be returned by traceback.extract_stack at the call to</tt>\r </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">    <tt class="py-comment"># user's parse action 'func', so that we don't incur call penalty at parse time</tt>\r </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">\r </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">    <tt class="py-name">LINE_DIFF</tt> <tt class="py-op">=</tt> <tt class="py-number">6</tt> </tt>\r
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">    <tt class="py-comment"># IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND</tt>\r </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">    <tt class="py-comment"># THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!!</tt>\r </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">    <tt class="py-name">this_line</tt> <tt class="py-op">=</tt> <tt class="py-name">extract_stack</tt><tt class="py-op">(</tt><tt class="py-name">limit</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">    <tt class="py-name">pa_call_line_synth</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">this_line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">this_line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">LINE_DIFF</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">\r </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">wrapper</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">                <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">func</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-name">limit</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">                <tt class="py-name">foundArity</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">                <tt class="py-comment"># re-raise TypeErrors if they did not come from our arity testing</tt>\r </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">foundArity</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                        <tt class="py-name">tb</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">extract_tb</tt><tt class="py-op">(</tt><tt class="py-name">tb</tt><tt class="py-op">,</tt> <tt class="py-name">limit</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">pa_call_line_synth</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                            <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">                        <tt class="py-keyword">del</tt> <tt class="py-name">tb</tt> </tt>\r
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">\r </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">limit</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">maxargs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                    <tt class="py-name">limit</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-</div><a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">\r </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">    <tt class="py-comment"># copy func name to wrapper for sensible debug output</tt>\r </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">    <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"&lt;parse action&gt;"</tt> </tt>\r
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">                            <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'__class__'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">=</tt> <tt class="py-name">func_name</tt> </tt>\r
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">\r </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">wrapper</tt> </tt>\r
-</div><a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement"></a><div id="ParserElement-def"><a name="L1113"></a><tt class="py-lineno">1113</tt> <a class="py-toggle" href="#" id="ParserElement-toggle" onclick="return toggle('ParserElement');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html">ParserElement</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParserElement-expanded"><a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">    <tt class="py-docstring">"""Abstract base level parser element class."""</tt> </tt>\r
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">    <tt id="link-128" class="py-name" targets="Variable pyparsing.ParserElement.DEFAULT_WHITE_CHARS=pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-128', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">" \n\t\r"</tt> </tt>\r
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">    <tt id="link-129" class="py-name" targets="Variable pyparsing.ParserElement.verbose_stacktrace=pyparsing.ParserElement-class.html#verbose_stacktrace"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-129', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">\r </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="ParserElement.setDefaultWhitespaceChars"></a><div id="ParserElement.setDefaultWhitespaceChars-def"><a name="L1119"></a><tt class="py-lineno">1119</tt> <a class="py-toggle" href="#" id="ParserElement.setDefaultWhitespaceChars-toggle" onclick="return toggle('ParserElement.setDefaultWhitespaceChars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a><tt class="py-op">(</tt> <tt class="py-param">chars</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setDefaultWhitespaceChars-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setDefaultWhitespaceChars-expanded"><a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt class="py-docstring">r"""\r</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">        Overrides the default whitespace chars\r</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-docstring">            # default whitespace chars are space, &lt;TAB&gt; and newline\r</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-docstring">            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -&gt; ['abc', 'def', 'ghi', 'jkl']\r</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-docstring">            # change to just treat newline as significant\r</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-docstring">            ParserElement.setDefaultWhitespaceChars(" \t")\r</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-docstring">            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -&gt; ['abc', 'def']\r</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt id="link-130" class="py-name" targets="Class pyparsing.ParserElement=pyparsing.ParserElement-class.html"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-130', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-131', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">chars</tt> </tt>\r
-</div><a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">\r </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="ParserElement.inlineLiteralsUsing"></a><div id="ParserElement.inlineLiteralsUsing-def"><a name="L1134"></a><tt class="py-lineno">1134</tt> <a class="py-toggle" href="#" id="ParserElement.inlineLiteralsUsing-toggle" onclick="return toggle('ParserElement.inlineLiteralsUsing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.inlineLiteralsUsing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.inlineLiteralsUsing-expanded"><a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-docstring">        Set class to be used for inclusion of string literals into a parser.\r</tt> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-docstring">            # default literal class used is Literal\r</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-docstring">            date_str.parseString("1999/12/31")  # -&gt; ['1999', '/', '12', '/', '31']\r</tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring">            # change to Suppress\r</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring">            ParserElement.inlineLiteralsUsing(Suppress)\r</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">            date_str.parseString("1999/12/31")  # -&gt; ['1999', '12', '31']\r</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">        <tt id="link-132" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-132', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt>\r
-</div><a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__init__"></a><div id="ParserElement.__init__-def"><a name="L1154"></a><tt class="py-lineno">1154</tt> <a class="py-toggle" href="#" id="ParserElement.__init__-toggle" onclick="return toggle('ParserElement.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__init__-expanded"><a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failAction</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">        <tt class="py-comment">#~ self.name = "&lt;unknown&gt;"  # don't define self.name, let subclasses try/except upcall</tt>\r </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">savelist</tt> </tt>\r
-<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-133', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-134', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt> </tt>\r
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">copyDefaultWhiteChars</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-comment"># used when checking for left-recursion</tt> </tt>\r
-<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepTabs</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-comment"># used to optimize exception handling for subclasses that don't advance parse index</tt> </tt>\r
-<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-comment"># used to mark results names as modal (report only last) or cumulative (list all)</tt> </tt>\r
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> <tt class="py-op">)</tt> <tt class="py-comment">#custom debug actions</tt> </tt>\r
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-comment"># used to avoid redundant calls to preParse</tt> </tt>\r
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.copy"></a><div id="ParserElement.copy-def"><a name="L1177"></a><tt class="py-lineno">1177</tt> <a class="py-toggle" href="#" id="ParserElement.copy-toggle" onclick="return toggle('ParserElement.copy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#copy">copy</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.copy-expanded"><a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">        Make a copy of this C{ParserElement}.  Useful for defining different parse actions\r</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">        for the same parsing pattern, using copies of the original parse element.\r</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">            integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress("K")\r</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">            integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")\r</tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">            print(OneOrMore(integerK | integerM | integer).parseString("5K 100 640K 256M"))\r</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring">            [5120, 100, 655360, 268435456]\r</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">        Equivalent form of C{expr.copy()} is just C{expr()}::\r</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-docstring">            integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")\r</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-name">cpy</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-135', 'copy', 'link-2');">copy</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-136', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-name">cpy</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-name">cpy</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">copyDefaultWhiteChars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">            <tt class="py-name">cpy</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-137', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-138', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt> </tt>\r
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cpy</tt> </tt>\r
-</div><a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setName"></a><div id="ParserElement.setName-def"><a name="L1200"></a><tt class="py-lineno">1200</tt> <a class="py-toggle" href="#" id="ParserElement.setName-toggle" onclick="return toggle('ParserElement.setName');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setName">setName</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setName-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setName-expanded"><a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-docstring">        Define name for this expression, makes debugging and exception messages clearer.\r</tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-docstring">            Word(nums).parseString("ABC")  # -&gt; Exception: Expected W:(0123...) (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"><tt class="py-docstring">            Word(nums).setName("integer").parseString("ABC")  # -&gt; Exception: Expected integer (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>\r
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"exception"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exception</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> </tt>\r
-<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setResultsName"></a><div id="ParserElement.setResultsName-def"><a name="L1214"></a><tt class="py-lineno">1214</tt> <a class="py-toggle" href="#" id="ParserElement.setResultsName-toggle" onclick="return toggle('ParserElement.setResultsName');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">listAllMatches</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setResultsName-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setResultsName-expanded"><a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"><tt class="py-docstring">        Define name for referencing matching tokens as a nested attribute\r</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-docstring">        of the returned parse results.\r</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-docstring">        NOTE: this returns a *copy* of the original C{ParserElement} object;\r</tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-docstring">        this is so that the client can define a basic element, such as an\r</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"><tt class="py-docstring">        integer, and reference it in multiple places with different names.\r</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"><tt class="py-docstring">        You can also set results names using the abbreviated syntax,\r</tt> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-docstring">        C{expr("name")} in place of C{expr.setResultsName("name")} -\r</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-docstring">        see L{I{__call__}&lt;__call__&gt;}.\r</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = (integer.setResultsName("year") + '/'\r</tt> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-docstring">                        + integer.setResultsName("month") + '/'\r</tt> </tt>
-<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-docstring">                        + integer.setResultsName("day"))\r</tt> </tt>
-<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-docstring">            # equivalent form:\r</tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r</tt> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-name">newself</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-139', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">"*"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">            <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">            <tt class="py-name">listAllMatches</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> </tt>\r
-<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt class="py-name">newself</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>\r
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">        <tt class="py-name">newself</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">listAllMatches</tt> </tt>\r
-<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">newself</tt> </tt>\r
-</div><a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setBreak"></a><div id="ParserElement.setBreak-def"><a name="L1242"></a><tt class="py-lineno">1242</tt> <a class="py-toggle" href="#" id="ParserElement.setBreak-toggle" onclick="return toggle('ParserElement.setBreak');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setBreak">setBreak</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">breakFlag</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setBreak-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setBreak-expanded"><a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">        <tt class="py-docstring">"""Method to invoke the Python pdb debugger when this element is\r</tt> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-docstring">           about to be parsed. Set C{breakFlag} to True to enable, False to\r</tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-docstring">           disable.\r</tt> </tt>
-<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">breakFlag</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">            <tt class="py-name">_parseMethod</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> </tt>\r
-<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">breaker</tt><tt class="py-op">(</tt><tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">                <tt class="py-keyword">import</tt> <tt class="py-name">pdb</tt> </tt>\r
-<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">                <tt class="py-name">pdb</tt><tt class="py-op">.</tt><tt class="py-name">set_trace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">_parseMethod</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">            <tt class="py-name">breaker</tt><tt class="py-op">.</tt><tt class="py-name">_originalParseMethod</tt> <tt class="py-op">=</tt> <tt class="py-name">_parseMethod</tt> </tt>\r
-<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">breaker</tt> </tt>\r
-<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">,</tt><tt class="py-string">"_originalParseMethod"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">.</tt><tt class="py-name">_originalParseMethod</tt> </tt>\r
-<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setParseAction"></a><div id="ParserElement.setParseAction-def"><a name="L1260"></a><tt class="py-lineno">1260</tt> <a class="py-toggle" href="#" id="ParserElement.setParseAction-toggle" onclick="return toggle('ParserElement.setParseAction');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">fns</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setParseAction-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setParseAction-expanded"><a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"><tt class="py-docstring">        Define one or more actions to perform when successfully matching parse element definition.\r</tt> </tt>
-<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line"><tt class="py-docstring">        Parse action fn is a callable method with 0-3 arguments, called as C{fn(s,loc,toks)},\r</tt> </tt>
-<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"><tt class="py-docstring">        C{fn(loc,toks)}, C{fn(toks)}, or just C{fn()}, where:\r</tt> </tt>
-<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-docstring">         - s   = the original string being parsed (see note below)\r</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-docstring">         - loc = the location of the matching substring\r</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-docstring">         - toks = a list of the matched tokens, packaged as a C{L{ParseResults}} object\r</tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-docstring">        If the functions in fns modify the tokens, they can return them as the return\r</tt> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-docstring">        value from fn, and the modified list of tokens will replace the original.\r</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-docstring">        Otherwise, fn does not need to return any value.\r</tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">        Optional keyword arguments:\r</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring">         - callDuringTry = (default=C{False}) indicate if parse action should be run during lookaheads and alternate testing\r</tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">        Note: the default parsing behavior is to expand tabs in the input string\r</tt> </tt>
-<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring">        before starting the parsing process.  See L{I{parseString}&lt;parseString&gt;} for more information\r</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring">        on parsing strings containing C{&lt;TAB&gt;}s, and suggested methods to maintain a\r</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring">        consistent view of the parsed string, the parse location, and line and column\r</tt> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">        positions within the parsed string.\r</tt> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums)\r</tt> </tt>
-<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer + '/' + integer + '/' + integer\r</tt> </tt>
-<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">            date_str.parseString("1999/12/31")  # -&gt; ['1999', '/', '12', '/', '31']\r</tt> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring">            # use parse action to convert to ints at parse time\r</tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = integer + '/' + integer + '/' + integer\r</tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-docstring">            # note that integer fields are now ints, not strings\r</tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-docstring">            date_str.parseString("1999/12/31")  # -&gt; [1999, '/', 12, '/', 31]\r</tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">_trim_arity</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">fns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-140', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"callDuringTry"</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.addParseAction"></a><div id="ParserElement.addParseAction-def"><a name="L1298"></a><tt class="py-lineno">1298</tt> <a class="py-toggle" href="#" id="ParserElement.addParseAction-toggle" onclick="return toggle('ParserElement.addParseAction');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">fns</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.addParseAction-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.addParseAction-expanded"><a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"><tt class="py-docstring">        Add one or more parse actions to expression's list of parse actions. See L{I{setParseAction}&lt;setParseAction&gt;}.\r</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring">        See examples in L{I{copy}&lt;copy&gt;}.\r</tt> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt> <tt class="py-op">+=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">_trim_arity</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">fns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-keyword">or</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-141', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"callDuringTry"</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.addCondition"></a><div id="ParserElement.addCondition-def"><a name="L1308"></a><tt class="py-lineno">1308</tt> <a class="py-toggle" href="#" id="ParserElement.addCondition-toggle" onclick="return toggle('ParserElement.addCondition');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#addCondition">addCondition</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">fns</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.addCondition-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.addCondition-expanded"><a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt class="py-docstring">"""Add a boolean predicate function to expression's list of parse actions. See\r</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">        L{I{setParseAction}&lt;setParseAction&gt;} for function call signatures. Unlike C{setParseAction},\r</tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">        functions passed to C{addCondition} need to return boolean success/fail of the condition.\r</tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">        Optional keyword arguments:\r</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">         - message = define a custom message to be used in the raised exception\r</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">         - fatal   = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise ParseException\r</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r</tt> </tt>
-<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"><tt class="py-docstring">            year_int = integer.copy()\r</tt> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line"><tt class="py-docstring">            year_int.addCondition(lambda toks: toks[0] &gt;= 2000, message="Only support years 2000 and later")\r</tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"><tt class="py-docstring">            date_str = year_int + '/' + integer + '/' + integer\r</tt> </tt>
-<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"><tt class="py-docstring">            result = date_str.parseString("1999/12/31")  # -&gt; Exception: Only support years 2000 and later (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-142', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"message"</tt><tt class="py-op">,</tt> <tt class="py-string">"failed user-defined condition"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-name">exc_type</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name" targets="Class pyparsing.ParseFatalException=pyparsing.ParseFatalException-class.html"><a title="pyparsing.ParseFatalException" class="py-name" href="#" onclick="return doclink('link-143', 'ParseFatalException', 'link-143');">ParseFatalException</a></tt> <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-144', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"fatal"</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt id="link-145" class="py-name" targets="Class pyparsing.ParseException=pyparsing.ParseException-class.html"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-145', 'ParseException', 'link-145');">ParseException</a></tt> </tt>\r
-<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">fn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fns</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">pa</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">_trim_arity</tt><tt class="py-op">(</tt><tt class="py-name">fn</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">exc_type</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-146', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">pa</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt> <tt class="py-keyword">or</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-147', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"callDuringTry"</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setFailAction"></a><div id="ParserElement.setFailAction-def"><a name="L1335"></a><tt class="py-lineno">1335</tt> <a class="py-toggle" href="#" id="ParserElement.setFailAction-toggle" onclick="return toggle('ParserElement.setFailAction');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fn</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setFailAction-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setFailAction-expanded"><a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-docstring">"""Define action to perform if parsing fails at this expression.\r</tt> </tt>
-<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line"><tt class="py-docstring">           Fail acton fn is a callable function that takes the arguments\r</tt> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"><tt class="py-docstring">           C{fn(s,loc,expr,err)} where:\r</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"><tt class="py-docstring">            - s = string being parsed\r</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-docstring">            - loc = location where expression match was attempted and failed\r</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-docstring">            - expr = the parse expression that failed\r</tt> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"><tt class="py-docstring">            - err = the exception thrown\r</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"><tt class="py-docstring">           The function returns no value.  It may throw C{L{ParseFatalException}}\r</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line"><tt class="py-docstring">           if it is desired to stop parsing immediately."""</tt> </tt>\r
-<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failAction</tt> <tt class="py-op">=</tt> <tt class="py-name">fn</tt> </tt>\r
-<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement._skipIgnorables"></a><div id="ParserElement._skipIgnorables-def"><a name="L1348"></a><tt class="py-lineno">1348</tt> <a class="py-toggle" href="#" id="ParserElement._skipIgnorables-toggle" onclick="return toggle('ParserElement._skipIgnorables');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#_skipIgnorables">_skipIgnorables</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._skipIgnorables-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement._skipIgnorables-expanded"><a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt class="py-name">exprsFound</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">exprsFound</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">            <tt class="py-name">exprsFound</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">                    <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">                        <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">dummy</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">                        <tt class="py-name">exprsFound</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-148" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-148', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">                    <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt> </tt>\r
-</div><a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.preParse"></a><div id="ParserElement.preParse-def"><a name="L1361"></a><tt class="py-lineno">1361</tt> <a class="py-toggle" href="#" id="ParserElement.preParse-toggle" onclick="return toggle('ParserElement.preParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#preParse">preParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.preParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.preParse-expanded"><a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">            <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_skipIgnorables</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">\r </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">            <tt class="py-name">wt</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> </tt>\r
-<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">            <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">instrlen</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">wt</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">                <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">\r </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt> </tt>\r
-</div><a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.parseImpl"></a><div id="ParserElement.parseImpl-def"><a name="L1373"></a><tt class="py-lineno">1373</tt> <a class="py-toggle" href="#" id="ParserElement.parseImpl-toggle" onclick="return toggle('ParserElement.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.parseImpl-expanded"><a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.postParse"></a><div id="ParserElement.postParse-def"><a name="L1376"></a><tt class="py-lineno">1376</tt> <a class="py-toggle" href="#" id="ParserElement.postParse-toggle" onclick="return toggle('ParserElement.postParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#postParse">postParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">tokenlist</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.postParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.postParse-expanded"><a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">tokenlist</tt> </tt>\r
-</div><a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">\r </tt>
-<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">    <tt class="py-comment">#~ @profile</tt>\r </tt>
-<a name="ParserElement._parseNoCache"></a><div id="ParserElement._parseNoCache-def"><a name="L1380"></a><tt class="py-lineno">1380</tt> <a class="py-toggle" href="#" id="ParserElement._parseNoCache-toggle" onclick="return toggle('ParserElement._parseNoCache');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#_parseNoCache">_parseNoCache</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._parseNoCache-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement._parseNoCache-expanded"><a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">        <tt class="py-name">debugging</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">)</tt> <tt class="py-comment">#and doActions )</tt> </tt>\r
-<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">\r </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">debugging</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failAction</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">            <tt class="py-comment">#~ print ("Match",self,"at loc",loc,"(%d,%d)" % ( lineno(loc,instring), col(loc,instring) ))</tt>\r </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">callPreParse</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method pyparsing.GoToColumn.preParse()=pyparsing.GoToColumn-class.html#preParse,Method pyparsing.ParserElement.preParse()=pyparsing.ParserElement-class.html#preParse"><a title="pyparsing.GoToColumn.preParse
-pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-149', 'preParse', 'link-149');">preParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">            <tt class="py-name">tokensStart</tt> <tt class="py-op">=</tt> <tt class="py-name">preloc</tt> </tt>\r
-<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">                    <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method pyparsing.And.parseImpl()=pyparsing.And-class.html#parseImpl,Method pyparsing.CaselessKeyword.parseImpl()=pyparsing.CaselessKeyword-class.html#parseImpl,Method pyparsing.CaselessLiteral.parseImpl()=pyparsing.CaselessLiteral-class.html#parseImpl,Method pyparsing.CharsNotIn.parseImpl()=pyparsing.CharsNotIn-class.html#parseImpl,Method pyparsing.CloseMatch.parseImpl()=pyparsing.CloseMatch-class.html#parseImpl,Method pyparsing.Each.parseImpl()=pyparsing.Each-class.html#parseImpl,Method pyparsing.FollowedBy.parseImpl()=pyparsing.FollowedBy-class.html#parseImpl,Method pyparsing.GoToColumn.parseImpl()=pyparsing.GoToColumn-class.html#parseImpl,Method pyparsing.Keyword.parseImpl()=pyparsing.Keyword-class.html#parseImpl,Method pyparsing.LineEnd.parseImpl()=pyparsing.LineEnd-class.html#parseImpl,Method pyparsing.LineStart.parseImpl()=pyparsing.LineStart-class.html#parseImpl,Method pyparsing.Literal.parseImpl()=pyparsing.Literal-class.html#parseImpl,Method pyparsing.MatchFirst.parseImpl()=pyparsing.MatchFirst-class.html#parseImpl,Method pyparsing.NoMatch.parseImpl()=pyparsing.NoMatch-class.html#parseImpl,Method pyparsing.NotAny.parseImpl()=pyparsing.NotAny-class.html#parseImpl,Method pyparsing.Optional.parseImpl()=pyparsing.Optional-class.html#parseImpl,Method pyparsing.Or.parseImpl()=pyparsing.Or-class.html#parseImpl,Method pyparsing.ParseElementEnhance.parseImpl()=pyparsing.ParseElementEnhance-class.html#parseImpl,Method pyparsing.ParserElement.parseImpl()=pyparsing.ParserElement-class.html#parseImpl,Method pyparsing.PrecededBy.parseImpl()=pyparsing.PrecededBy-class.html#parseImpl,Method pyparsing.QuotedString.parseImpl()=pyparsing.QuotedString-class.html#parseImpl,Method pyparsing.Regex.parseImpl()=pyparsing.Regex-class.html#parseImpl,Method pyparsing.SkipTo.parseImpl()=pyparsing.SkipTo-class.html#parseImpl,Method pyparsing.StringEnd.parseImpl()=pyparsing.StringEnd-class.html#parseImpl,Method pyparsing.StringStart.parseImpl()=pyparsing.StringStart-class.html#parseImpl,Method pyparsing.White.parseImpl()=pyparsing.White-class.html#parseImpl,Method pyparsing.Word.parseImpl()=pyparsing.Word-class.html#parseImpl,Method pyparsing.WordEnd.parseImpl()=pyparsing.WordEnd-class.html#parseImpl,Method pyparsing.WordStart.parseImpl()=pyparsing.WordStart-class.html#parseImpl,Method pyparsing.ZeroOrMore.parseImpl()=pyparsing.ZeroOrMore-class.html#parseImpl"><a title="pyparsing.And.parseImpl
-pyparsing.CaselessKeyword.parseImpl
-pyparsing.CaselessLiteral.parseImpl
-pyparsing.CharsNotIn.parseImpl
-pyparsing.CloseMatch.parseImpl
-pyparsing.Each.parseImpl
-pyparsing.FollowedBy.parseImpl
-pyparsing.GoToColumn.parseImpl
-pyparsing.Keyword.parseImpl
-pyparsing.LineEnd.parseImpl
-pyparsing.LineStart.parseImpl
-pyparsing.Literal.parseImpl
-pyparsing.MatchFirst.parseImpl
-pyparsing.NoMatch.parseImpl
-pyparsing.NotAny.parseImpl
-pyparsing.Optional.parseImpl
-pyparsing.Or.parseImpl
-pyparsing.ParseElementEnhance.parseImpl
-pyparsing.ParserElement.parseImpl
-pyparsing.PrecededBy.parseImpl
-pyparsing.QuotedString.parseImpl
-pyparsing.Regex.parseImpl
-pyparsing.SkipTo.parseImpl
-pyparsing.StringEnd.parseImpl
-pyparsing.StringStart.parseImpl
-pyparsing.White.parseImpl
-pyparsing.Word.parseImpl
-pyparsing.WordEnd.parseImpl
-pyparsing.WordStart.parseImpl
-pyparsing.ZeroOrMore.parseImpl" class="py-name" href="#" onclick="return doclink('link-150', 'parseImpl', 'link-150');">parseImpl</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-151', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-152" class="py-name" targets="Class pyparsing.ParseBaseException=pyparsing.ParseBaseException-class.html"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-152', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">                <tt class="py-comment">#~ print ("Exception raised:", err)</tt>\r </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failAction</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failAction</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">callPreParse</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-153', 'preParse', 'link-149');">preParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">            <tt class="py-name">tokensStart</tt> <tt class="py-op">=</tt> <tt class="py-name">preloc</tt> </tt>\r
-<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-keyword">or</tt> <tt class="py-name">preloc</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">                    <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="pyparsing.And.parseImpl
-pyparsing.CaselessKeyword.parseImpl
-pyparsing.CaselessLiteral.parseImpl
-pyparsing.CharsNotIn.parseImpl
-pyparsing.CloseMatch.parseImpl
-pyparsing.Each.parseImpl
-pyparsing.FollowedBy.parseImpl
-pyparsing.GoToColumn.parseImpl
-pyparsing.Keyword.parseImpl
-pyparsing.LineEnd.parseImpl
-pyparsing.LineStart.parseImpl
-pyparsing.Literal.parseImpl
-pyparsing.MatchFirst.parseImpl
-pyparsing.NoMatch.parseImpl
-pyparsing.NotAny.parseImpl
-pyparsing.Optional.parseImpl
-pyparsing.Or.parseImpl
-pyparsing.ParseElementEnhance.parseImpl
-pyparsing.ParserElement.parseImpl
-pyparsing.PrecededBy.parseImpl
-pyparsing.QuotedString.parseImpl
-pyparsing.Regex.parseImpl
-pyparsing.SkipTo.parseImpl
-pyparsing.StringEnd.parseImpl
-pyparsing.StringStart.parseImpl
-pyparsing.White.parseImpl
-pyparsing.Word.parseImpl
-pyparsing.WordEnd.parseImpl
-pyparsing.WordStart.parseImpl
-pyparsing.ZeroOrMore.parseImpl" class="py-name" href="#" onclick="return doclink('link-154', 'parseImpl', 'link-150');">parseImpl</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-155" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-155', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">                <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="pyparsing.And.parseImpl
-pyparsing.CaselessKeyword.parseImpl
-pyparsing.CaselessLiteral.parseImpl
-pyparsing.CharsNotIn.parseImpl
-pyparsing.CloseMatch.parseImpl
-pyparsing.Each.parseImpl
-pyparsing.FollowedBy.parseImpl
-pyparsing.GoToColumn.parseImpl
-pyparsing.Keyword.parseImpl
-pyparsing.LineEnd.parseImpl
-pyparsing.LineStart.parseImpl
-pyparsing.Literal.parseImpl
-pyparsing.MatchFirst.parseImpl
-pyparsing.NoMatch.parseImpl
-pyparsing.NotAny.parseImpl
-pyparsing.Optional.parseImpl
-pyparsing.Or.parseImpl
-pyparsing.ParseElementEnhance.parseImpl
-pyparsing.ParserElement.parseImpl
-pyparsing.PrecededBy.parseImpl
-pyparsing.QuotedString.parseImpl
-pyparsing.Regex.parseImpl
-pyparsing.SkipTo.parseImpl
-pyparsing.StringEnd.parseImpl
-pyparsing.StringStart.parseImpl
-pyparsing.White.parseImpl
-pyparsing.Word.parseImpl
-pyparsing.WordEnd.parseImpl
-pyparsing.WordStart.parseImpl
-pyparsing.ZeroOrMore.parseImpl" class="py-name" href="#" onclick="return doclink('link-156', 'parseImpl', 'link-150');">parseImpl</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">\r </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method pyparsing.Combine.postParse()=pyparsing.Combine-class.html#postParse,Method pyparsing.Dict.postParse()=pyparsing.Dict-class.html#postParse,Method pyparsing.Group.postParse()=pyparsing.Group-class.html#postParse,Method pyparsing.ParserElement.postParse()=pyparsing.ParserElement-class.html#postParse,Method pyparsing.Suppress.postParse()=pyparsing.Suppress-class.html#postParse"><a title="pyparsing.Combine.postParse
-pyparsing.Dict.postParse
-pyparsing.Group.postParse
-pyparsing.ParserElement.postParse
-pyparsing.Suppress.postParse" class="py-name" href="#" onclick="return doclink('link-157', 'postParse', 'link-157');">postParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">\r </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">        <tt class="py-name">retTokens</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-158', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt> <tt class="py-name">tokens</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">,</tt> <tt id="link-159" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-159', 'asList', 'link-37');">asList</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt><tt class="py-op">,</tt> <tt class="py-name">modal</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">doActions</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callDuringTry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">debugging</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">fn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">                        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">                            <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">fn</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">retTokens</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">                        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">parse_action_exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">                            <tt class="py-name">exc</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-160', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-string">"exception raised in parse action"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">                            <tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">__cause__</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_action_exc</tt> </tt>\r
-<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">                            <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">\r </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">tokens</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tokens</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">retTokens</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">                            <tt class="py-name">retTokens</tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-161', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt> <tt class="py-name">tokens</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">                                                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">                                                      <tt id="link-162" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-162', 'asList', 'link-37');">asList</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tokens</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-163', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">                                                      <tt class="py-name">modal</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-164" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-164', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">                    <tt class="py-comment">#~ print "Exception raised in user parse action:", err</tt>\r </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">fn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">                        <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">fn</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">retTokens</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">parse_action_exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">                        <tt class="py-name">exc</tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-165', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-string">"exception raised in parse action"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">                        <tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">__cause__</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_action_exc</tt> </tt>\r
-<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">\r </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">tokens</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tokens</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">retTokens</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">                        <tt class="py-name">retTokens</tt> <tt class="py-op">=</tt> <tt id="link-166" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-166', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt> <tt class="py-name">tokens</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">                                                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">                                                  <tt id="link-167" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-167', 'asList', 'link-37');">asList</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tokens</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-168', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">                                                  <tt class="py-name">modal</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">debugging</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">            <tt class="py-comment">#~ print ("Matched",self,"-&gt;",retTokens.asList())</tt>\r </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tokensStart</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">retTokens</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">\r </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">retTokens</tt> </tt>\r
-</div><a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.tryParse"></a><div id="ParserElement.tryParse-def"><a name="L1463"></a><tt class="py-lineno">1463</tt> <a class="py-toggle" href="#" id="ParserElement.tryParse-toggle" onclick="return toggle('ParserElement.tryParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#tryParse">tryParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.tryParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.tryParse-expanded"><a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-169" class="py-name"><a title="pyparsing.ParseFatalException" class="py-name" href="#" onclick="return doclink('link-169', 'ParseFatalException', 'link-143');">ParseFatalException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-170" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-170', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.canParseNext"></a><div id="ParserElement.canParseNext-def"><a name="L1469"></a><tt class="py-lineno">1469</tt> <a class="py-toggle" href="#" id="ParserElement.canParseNext-toggle" onclick="return toggle('ParserElement.canParseNext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.canParseNext-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.canParseNext-expanded"><a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method pyparsing.ParserElement.tryParse()=pyparsing.ParserElement-class.html#tryParse"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-171', 'tryParse', 'link-171');">tryParse</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-172" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-172', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">,</tt> <tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement._UnboundedCache"></a><div id="ParserElement._UnboundedCache-def"><a name="L1477"></a><tt class="py-lineno">1477</tt> <a class="py-toggle" href="#" id="ParserElement._UnboundedCache-toggle" onclick="return toggle('ParserElement._UnboundedCache');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParserElement._UnboundedCache-class.html">_UnboundedCache</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._UnboundedCache-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement._UnboundedCache-expanded"><a name="ParserElement._UnboundedCache.__init__"></a><div id="ParserElement._UnboundedCache.__init__-def"><a name="L1478"></a><tt class="py-lineno">1478</tt> <a class="py-toggle" href="#" id="ParserElement._UnboundedCache.__init__-toggle" onclick="return toggle('ParserElement._UnboundedCache.__init__');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement._UnboundedCache-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._UnboundedCache.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParserElement._UnboundedCache.__init__-expanded"><a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">            <tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>\r
-<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">\r </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-173', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">not_in_cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line">\r </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">set</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">                <tt class="py-name">cache</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>\r
-</div><a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">\r </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">clear</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">                <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-174', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">\r </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">cache_len</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">\r </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-175', 'get', 'link-43');">get</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-176" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-176', 'get', 'link-43');">get</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">set</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">set</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-177', 'clear', 'link-71');">clear</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-178" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-178', 'clear', 'link-71');">clear</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method pyparsing.ParseResults.__len__()=pyparsing.ParseResults-class.html#__len__"><a title="pyparsing.ParseResults.__len__" class="py-name" href="#" onclick="return doclink('link-179', '__len__', 'link-179');">__len__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">cache_len</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">\r </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">_OrderedDict</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="ParserElement._FifoCache"></a><div id="ParserElement._FifoCache-def"><a name="L1500"></a><tt class="py-lineno">1500</tt> <a class="py-toggle" href="#" id="ParserElement._FifoCache-toggle" onclick="return toggle('ParserElement._FifoCache');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParserElement._FifoCache-class.html">_FifoCache</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._FifoCache-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParserElement._FifoCache-expanded"><a name="ParserElement._FifoCache.__init__"></a><div id="ParserElement._FifoCache.__init__-def"><a name="L1501"></a><tt class="py-lineno">1501</tt> <a class="py-toggle" href="#" id="ParserElement._FifoCache.__init__-toggle" onclick="return toggle('ParserElement._FifoCache.__init__');">-</a><tt class="py-line">            <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement._FifoCache-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._FifoCache.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++++++++++++++"></div><div id="ParserElement._FifoCache.__init__-expanded"><a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">\r </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">                <tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt class="py-name">_OrderedDict</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">\r </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-180', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">not_in_cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">\r </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">set</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>\r
-<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">                    <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line">                        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line">                            <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">popitem</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">                        <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line">                            <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">\r </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">clear</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-181', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">\r </tt>
-<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">cache_len</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">\r </tt>
-<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-182', 'get', 'link-43');">get</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-183', 'get', 'link-43');">get</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">set</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">set</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-184', 'clear', 'link-71');">clear</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-185" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-185', 'clear', 'link-71');">clear</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="pyparsing.ParseResults.__len__" class="py-name" href="#" onclick="return doclink('link-186', '__len__', 'link-179');">__len__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">cache_len</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">\r </tt>
-<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="ParserElement._FifoCache"></a><div id="ParserElement._FifoCache-def"><a name="L1529"></a><tt class="py-lineno">1529</tt> <a class="py-toggle" href="#" id="ParserElement._FifoCache-toggle" onclick="return toggle('ParserElement._FifoCache');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParserElement._FifoCache-class.html">_FifoCache</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._FifoCache-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ParserElement._FifoCache-expanded"><a name="ParserElement._FifoCache.__init__"></a><div id="ParserElement._FifoCache.__init__-def"><a name="L1530"></a><tt class="py-lineno">1530</tt> <a class="py-toggle" href="#" id="ParserElement._FifoCache.__init__-toggle" onclick="return toggle('ParserElement._FifoCache.__init__');">-</a><tt class="py-line">            <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement._FifoCache-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._FifoCache.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++++++++++++++"></div><div id="ParserElement._FifoCache.__init__-expanded"><a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">not_in_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">\r </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">                <tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>\r
-<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">                <tt class="py-name">key_fifo</tt> <tt class="py-op">=</tt> <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">deque</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">\r </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-187', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">not_in_cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">\r </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">set</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>\r
-<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">                    <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">key_fifo</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">                        <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method pyparsing.ParseResults.pop()=pyparsing.ParseResults-class.html#pop"><a title="pyparsing.ParseResults.pop" class="py-name" href="#" onclick="return doclink('link-188', 'pop', 'link-188');">pop</a></tt><tt class="py-op">(</tt><tt class="py-name">key_fifo</tt><tt class="py-op">.</tt><tt class="py-name">popleft</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">                    <tt class="py-name">key_fifo</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-189', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">\r </tt>
-<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">clear</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-190', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">                    <tt class="py-name">key_fifo</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-191', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">\r </tt>
-<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">cache_len</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">\r </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-192', 'get', 'link-43');">get</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-193" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-193', 'get', 'link-43');">get</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">set</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">set</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-194', 'clear', 'link-71');">clear</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt id="link-195" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-195', 'clear', 'link-71');">clear</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="pyparsing.ParseResults.__len__" class="py-name" href="#" onclick="return doclink('link-196', '__len__', 'link-179');">__len__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">MethodType</tt><tt class="py-op">(</tt><tt class="py-name">cache_len</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">\r </tt>
-<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">    <tt class="py-comment"># argument cache for optimizing repeated calls when backtracking through recursive expressions</tt>\r </tt>
-<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">    <tt id="link-197" class="py-name" targets="Variable pyparsing.ParserElement.packrat_cache=pyparsing.ParserElement-class.html#packrat_cache"><a title="pyparsing.ParserElement.packrat_cache" class="py-name" href="#" onclick="return doclink('link-197', 'packrat_cache', 'link-197');">packrat_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># this is set later by enabledPackrat(); this is here so that resetCache() doesn't fail</tt> </tt>\r
-<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">    <tt id="link-198" class="py-name" targets="Variable pyparsing.ParserElement.packrat_cache_lock=pyparsing.ParserElement-class.html#packrat_cache_lock"><a title="pyparsing.ParserElement.packrat_cache_lock" class="py-name" href="#" onclick="return doclink('link-198', 'packrat_cache_lock', 'link-198');">packrat_cache_lock</a></tt> <tt class="py-op">=</tt> <tt class="py-name">RLock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">    <tt id="link-199" class="py-name" targets="Variable pyparsing.ParserElement.packrat_cache_stats=pyparsing.ParserElement-class.html#packrat_cache_stats"><a title="pyparsing.ParserElement.packrat_cache_stats" class="py-name" href="#" onclick="return doclink('link-199', 'packrat_cache_stats', 'link-199');">packrat_cache_stats</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">\r </tt>
-<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line">    <tt class="py-comment"># this method gets repeatedly called during backtracking with the same arguments -</tt>\r </tt>
-<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">    <tt class="py-comment"># we can cache these arguments and save ourselves the trouble of re-parsing the contained expression</tt>\r </tt>
-<a name="ParserElement._parseCache"></a><div id="ParserElement._parseCache-def"><a name="L1564"></a><tt class="py-lineno">1564</tt> <a class="py-toggle" href="#" id="ParserElement._parseCache-toggle" onclick="return toggle('ParserElement._parseCache');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#_parseCache">_parseCache</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement._parseCache-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement._parseCache-expanded"><a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line">        <tt class="py-name">HIT</tt><tt class="py-op">,</tt> <tt class="py-name">MISS</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">        <tt class="py-name">lookup</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">        <tt class="py-keyword">with</tt> <tt id="link-200" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-200', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="pyparsing.ParserElement.packrat_cache_lock" class="py-name" href="#" onclick="return doclink('link-201', 'packrat_cache_lock', 'link-198');">packrat_cache_lock</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">            <tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-202', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="pyparsing.ParserElement.packrat_cache" class="py-name" href="#" onclick="return doclink('link-203', 'packrat_cache', 'link-197');">packrat_cache</a></tt> </tt>\r
-<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-204', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">lookup</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">not_in_cache</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">                <tt id="link-205" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-205', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="pyparsing.ParserElement.packrat_cache_stats" class="py-name" href="#" onclick="return doclink('link-206', 'packrat_cache_stats', 'link-199');">packrat_cache_stats</a></tt><tt class="py-op">[</tt><tt class="py-name">MISS</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parseNoCache</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-207" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-207', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">pe</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">                    <tt class="py-comment"># cache a copy of the exception, without the traceback</tt>\r </tt>
-<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">lookup</tt><tt class="py-op">,</tt> <tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">                    <tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">lookup</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-208', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>\r
-<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">                <tt id="link-209" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-209', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="pyparsing.ParserElement.packrat_cache_stats" class="py-name" href="#" onclick="return doclink('link-210', 'packrat_cache_stats', 'link-199');">packrat_cache_stats</a></tt><tt class="py-op">[</tt><tt class="py-name">HIT</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">value</tt> </tt>\r
-<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-211', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">\r </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">    <tt class="py-name">_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">_parseNoCache</tt> </tt>\r
-<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">\r </tt>
-<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="ParserElement.resetCache"></a><div id="ParserElement.resetCache-def"><a name="L1590"></a><tt class="py-lineno">1590</tt> <a class="py-toggle" href="#" id="ParserElement.resetCache-toggle" onclick="return toggle('ParserElement.resetCache');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#resetCache">resetCache</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.resetCache-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.resetCache-expanded"><a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">        <tt id="link-212" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-212', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="pyparsing.ParserElement.packrat_cache" class="py-name" href="#" onclick="return doclink('link-213', 'packrat_cache', 'link-197');">packrat_cache</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="pyparsing.ParseResults.clear" class="py-name" href="#" onclick="return doclink('link-214', 'clear', 'link-71');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">        <tt id="link-215" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-215', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="pyparsing.ParserElement.packrat_cache_stats" class="py-name" href="#" onclick="return doclink('link-216', 'packrat_cache_stats', 'link-199');">packrat_cache_stats</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-217" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-217', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="pyparsing.ParserElement.packrat_cache_stats" class="py-name" href="#" onclick="return doclink('link-218', 'packrat_cache_stats', 'link-199');">packrat_cache_stats</a></tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">\r </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">    <tt id="link-219" class="py-name" targets="Variable pyparsing.ParserElement._packratEnabled=pyparsing.ParserElement-class.html#_packratEnabled"><a title="pyparsing.ParserElement._packratEnabled" class="py-name" href="#" onclick="return doclink('link-219', '_packratEnabled', 'link-219');">_packratEnabled</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="ParserElement.enablePackrat"></a><div id="ParserElement.enablePackrat-def"><a name="L1596"></a><tt class="py-lineno">1596</tt> <a class="py-toggle" href="#" id="ParserElement.enablePackrat-toggle" onclick="return toggle('ParserElement.enablePackrat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a><tt class="py-op">(</tt><tt class="py-param">cache_size_limit</tt><tt class="py-op">=</tt><tt class="py-number">128</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.enablePackrat-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.enablePackrat-expanded"><a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">        <tt class="py-docstring">"""Enables "packrat" parsing, which adds memoizing to the parsing logic.\r</tt> </tt>
-<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line"><tt class="py-docstring">           Repeated parse attempts at the same string location (which happens\r</tt> </tt>
-<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"><tt class="py-docstring">           often in many complex grammars) can immediately return a cached value,\r</tt> </tt>
-<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"><tt class="py-docstring">           instead of re-executing parsing/validating code.  Memoizing is done of\r</tt> </tt>
-<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"><tt class="py-docstring">           both valid results and parsing exceptions.\r</tt> </tt>
-<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-docstring">           Parameters:\r</tt> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-docstring">            - cache_size_limit - (default=C{128}) - if an integer value is provided\r</tt> </tt>
-<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-docstring">              will limit the size of the packrat cache; if None is passed, then\r</tt> </tt>
-<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-docstring">              the cache size will be unbounded; if 0 is passed, the cache will\r</tt> </tt>
-<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-docstring">              be effectively disabled.\r</tt> </tt>
-<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-docstring">           This speedup may break existing programs that use parse actions that\r</tt> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-docstring">           have side-effects.  For this reason, packrat parsing is disabled when\r</tt> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-docstring">           you first import pyparsing.  To activate the packrat feature, your\r</tt> </tt>
-<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-docstring">           program must call the class method C{ParserElement.enablePackrat()}.  If\r</tt> </tt>
-<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-docstring">           your program uses C{psyco} to "compile as you go", you must call\r</tt> </tt>
-<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-docstring">           C{enablePackrat} before calling C{psyco.full()}.  If you do not do this,\r</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-docstring">           Python will crash.  For best results, call C{enablePackrat()} immediately\r</tt> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-docstring">           after importing pyparsing.\r</tt> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-docstring">           Example::\r</tt> </tt>
-<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">               import pyparsing\r</tt> </tt>
-<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-docstring">               pyparsing.ParserElement.enablePackrat()\r</tt> </tt>
-<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-220" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-220', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="pyparsing.ParserElement._packratEnabled" class="py-name" href="#" onclick="return doclink('link-221', '_packratEnabled', 'link-219');">_packratEnabled</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">            <tt id="link-222" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-222', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="pyparsing.ParserElement._packratEnabled" class="py-name" href="#" onclick="return doclink('link-223', '_packratEnabled', 'link-219');">_packratEnabled</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cache_size_limit</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">                <tt id="link-224" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-224', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="pyparsing.ParserElement.packrat_cache" class="py-name" href="#" onclick="return doclink('link-225', 'packrat_cache', 'link-197');">packrat_cache</a></tt> <tt class="py-op">=</tt> <tt id="link-226" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-226', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_UnboundedCache</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">                <tt id="link-227" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-227', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="pyparsing.ParserElement.packrat_cache" class="py-name" href="#" onclick="return doclink('link-228', 'packrat_cache', 'link-197');">packrat_cache</a></tt> <tt class="py-op">=</tt> <tt id="link-229" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-229', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_FifoCache</tt><tt class="py-op">(</tt><tt class="py-name">cache_size_limit</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">            <tt id="link-230" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-230', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> <tt class="py-op">=</tt> <tt id="link-231" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-231', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_parseCache</tt> </tt>\r
-</div><a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.parseString"></a><div id="ParserElement.parseString-def"><a name="L1630"></a><tt class="py-lineno">1630</tt> <a class="py-toggle" href="#" id="ParserElement.parseString-toggle" onclick="return toggle('ParserElement.parseString');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#parseString">parseString</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.parseString-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.parseString-expanded"><a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-docstring">        Execute the parse expression with the given string.\r</tt> </tt>
-<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-docstring">        This is the main interface to the client code, once the complete\r</tt> </tt>
-<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line"><tt class="py-docstring">        expression has been built.\r</tt> </tt>
-<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line"><tt class="py-docstring">        If you want the grammar to require that the entire input string be\r</tt> </tt>
-<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"><tt class="py-docstring">        successfully parsed, then set C{parseAll} to True (equivalent to ending\r</tt> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-docstring">        the grammar with C{L{StringEnd()}}).\r</tt> </tt>
-<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-docstring">        Note: C{parseString} implicitly calls C{expandtabs()} on the input string,\r</tt> </tt>
-<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line"><tt class="py-docstring">        in order to report proper column numbers in parse actions.\r</tt> </tt>
-<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line"><tt class="py-docstring">        If the input string contains tabs and\r</tt> </tt>
-<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line"><tt class="py-docstring">        the grammar uses parse actions that use the C{loc} argument to index into the\r</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line"><tt class="py-docstring">        string being parsed, you can ensure you have a consistent view of the input\r</tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-docstring">        string by:\r</tt> </tt>
-<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-docstring">         - calling C{parseWithTabs} on your grammar before calling C{parseString}\r</tt> </tt>
-<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line"><tt class="py-docstring">           (see L{I{parseWithTabs}&lt;parseWithTabs&gt;})\r</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"><tt class="py-docstring">         - define your parse action using the full C{(s,loc,toks)} signature, and\r</tt> </tt>
-<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"><tt class="py-docstring">           reference the input string using the parse action's C{s} argument\r</tt> </tt>
-<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"><tt class="py-docstring">         - explictly expand the tabs in your input string before calling\r</tt> </tt>
-<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"><tt class="py-docstring">           C{parseString}\r</tt> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"><tt class="py-docstring">            Word('a').parseString('aaaaabaaa')  # -&gt; ['aaaaa']\r</tt> </tt>
-<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line"><tt class="py-docstring">            Word('a').parseString('aaaaabaaa', parseAll=True)  # -&gt; Exception: Expected end of text\r</tt> </tt>
-<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">        <tt id="link-232" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-232', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Static Method pyparsing.ParserElement.resetCache()=pyparsing.ParserElement-class.html#resetCache"><a title="pyparsing.ParserElement.resetCache" class="py-name" href="#" onclick="return doclink('link-233', 'resetCache', 'link-233');">resetCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Method pyparsing.Forward.streamline()=pyparsing.Forward-class.html#streamline,Method pyparsing.ParseElementEnhance.streamline()=pyparsing.ParseElementEnhance-class.html#streamline,Method pyparsing.ParseExpression.streamline()=pyparsing.ParseExpression-class.html#streamline,Method pyparsing.ParserElement.streamline()=pyparsing.ParserElement-class.html#streamline"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-234', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">            <tt class="py-comment">#~ self.saveAsList = True</tt>\r </tt>
-<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-235', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepTabs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">            <tt class="py-name">instring</tt> <tt class="py-op">=</tt> <tt class="py-name">instring</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">            <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parseAll</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">                <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-236', 'preParse', 'link-149');">preParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">                <tt class="py-name">se</tt> <tt class="py-op">=</tt> <tt id="link-237" class="py-name" targets="Class pyparsing.Empty=pyparsing.Empty-class.html"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-237', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-238" class="py-name" targets="Class pyparsing.StringEnd=pyparsing.StringEnd-class.html"><a title="pyparsing.StringEnd" class="py-name" href="#" onclick="return doclink('link-238', 'StringEnd', 'link-238');">StringEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">                <tt class="py-name">se</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-239" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-239', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-240" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-240', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-241', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">                <tt class="py-comment"># catch and re-raise exception from here, clears out pyparsing internal stack trace</tt>\r </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">tokens</tt> </tt>\r
-</div><a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.scanString"></a><div id="ParserElement.scanString-def"><a name="L1680"></a><tt class="py-lineno">1680</tt> <a class="py-toggle" href="#" id="ParserElement.scanString-toggle" onclick="return toggle('ParserElement.scanString');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#scanString">scanString</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">maxMatches</tt><tt class="py-op">=</tt><tt id="link-242" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-242', '_MAX_INT', 'link-8');">_MAX_INT</a></tt><tt class="py-op">,</tt> <tt class="py-param">overlap</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.scanString-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.scanString-expanded"><a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-docstring">        Scan the input string for expression matches.  Each match will return the\r</tt> </tt>
-<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"><tt class="py-docstring">        matching tokens, start location, and end location.  May be called with optional\r</tt> </tt>
-<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line"><tt class="py-docstring">        C{maxMatches} argument, to clip scanning after 'n' matches are found.  If\r</tt> </tt>
-<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line"><tt class="py-docstring">        C{overlap} is specified, then overlapping matches will be reported.\r</tt> </tt>
-<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"><tt class="py-docstring">        Note that the start and end locations are reported relative to the string\r</tt> </tt>
-<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line"><tt class="py-docstring">        being parsed.  See L{I{parseString}&lt;parseString&gt;} for more information on parsing\r</tt> </tt>
-<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"><tt class="py-docstring">        strings with embedded tabs.\r</tt> </tt>
-<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"><tt class="py-docstring">            source = "sldjf123lsdjjkf345sldkjf879lkjsfd987"\r</tt> </tt>
-<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line"><tt class="py-docstring">            print(source)\r</tt> </tt>
-<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"><tt class="py-docstring">            for tokens,start,end in Word(alphas).scanString(source):\r</tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-docstring">                print(' '*start + '^'*(end-start))\r</tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"><tt class="py-docstring">                print(' '*start + tokens[0])\r</tt> </tt>
-<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"><tt class="py-docstring">            sldjf123lsdjjkf345sldkjf879lkjsfd987\r</tt> </tt>
-<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"><tt class="py-docstring">            ^^^^^\r</tt> </tt>
-<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line"><tt class="py-docstring">            sldjf\r</tt> </tt>
-<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"><tt class="py-docstring">                    ^^^^^^^\r</tt> </tt>
-<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line"><tt class="py-docstring">                    lsdjjkf\r</tt> </tt>
-<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-docstring">                              ^^^^^^\r</tt> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-docstring">                              sldkjf\r</tt> </tt>
-<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-docstring">                                       ^^^^^^\r</tt> </tt>
-<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-docstring">                                       lkjsfd\r</tt> </tt>
-<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-243', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-244', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">\r </tt>
-<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepTabs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">            <tt class="py-name">instring</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">        <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">        <tt class="py-name">preparseFn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-245', 'preParse', 'link-149');">preParse</a></tt> </tt>\r
-<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">        <tt class="py-name">parseFn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> </tt>\r
-<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt id="link-246" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-246', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="pyparsing.ParserElement.resetCache" class="py-name" href="#" onclick="return doclink('link-247', 'resetCache', 'link-233');">resetCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">        <tt id="link-248" class="py-name" targets="Method pyparsing.ParserElement.matches()=pyparsing.ParserElement-class.html#matches"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-248', 'matches', 'link-248');">matches</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">instrlen</tt> <tt class="py-keyword">and</tt> <tt id="link-249" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-249', 'matches', 'link-248');">matches</a></tt> <tt class="py-op">&lt;</tt> <tt class="py-name">maxMatches</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">                    <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">preparseFn</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">                    <tt class="py-name">nextLoc</tt><tt class="py-op">,</tt><tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">parseFn</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-250" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-250', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">                    <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">preloc</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>\r
-<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">nextLoc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">                        <tt id="link-251" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-251', 'matches', 'link-248');">matches</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">                        <tt class="py-keyword">yield</tt> <tt class="py-name">tokens</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">nextLoc</tt> </tt>\r
-<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">overlap</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">                            <tt class="py-name">nextloc</tt> <tt class="py-op">=</tt> <tt class="py-name">preparseFn</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-name">nextloc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">                                <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">nextLoc</tt> </tt>\r
-<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">                            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">                                <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">                            <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">nextLoc</tt> </tt>\r
-<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">                        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">preloc</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>\r
-<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-252" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-252', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-253" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-253', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-254', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">                <tt class="py-comment"># catch and re-raise exception from here, clears out pyparsing internal stack trace</tt>\r </tt>
-<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-</div><a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.transformString"></a><div id="ParserElement.transformString-def"><a name="L1751"></a><tt class="py-lineno">1751</tt> <a class="py-toggle" href="#" id="ParserElement.transformString-toggle" onclick="return toggle('ParserElement.transformString');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#transformString">transformString</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.transformString-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.transformString-expanded"><a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line"><tt class="py-docstring">        Extension to C{L{scanString}}, to modify matching text with modified tokens that may\r</tt> </tt>
-<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line"><tt class="py-docstring">        be returned from a parse action.  To use C{transformString}, define a grammar and\r</tt> </tt>
-<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line"><tt class="py-docstring">        attach a parse action to it that modifies the returned token list.\r</tt> </tt>
-<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt class="py-docstring">        Invoking C{transformString()} on a target string will then scan for matches,\r</tt> </tt>
-<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-docstring">        and replace the matched text patterns according to the logic in the parse\r</tt> </tt>
-<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-docstring">        action.  C{transformString()} returns the resulting transformed string.\r</tt> </tt>
-<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-docstring">            wd = Word(alphas)\r</tt> </tt>
-<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-docstring">            wd.setParseAction(lambda toks: toks[0].title())\r</tt> </tt>
-<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-docstring">            print(wd.transformString("now is the winter of our discontent made glorious summer by this sun of york."))\r</tt> </tt>
-<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"><tt class="py-docstring">        Prints::\r</tt> </tt>
-<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"><tt class="py-docstring">            Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York.\r</tt> </tt>
-<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">        <tt class="py-name">lastE</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">        <tt class="py-comment"># force preservation of &lt;TAB&gt;s, to minimize unwanted transformation of string, and to</tt>\r </tt>
-<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">        <tt class="py-comment"># keep string locs straight between transformString and scanString</tt>\r </tt>
-<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepTabs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name" targets="Method pyparsing.ParserElement.scanString()=pyparsing.ParserElement-class.html#scanString"><a title="pyparsing.ParserElement.scanString" class="py-name" href="#" onclick="return doclink('link-255', 'scanString', 'link-255');">scanString</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-256', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">lastE</tt><tt class="py-op">:</tt><tt class="py-name">s</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt><tt id="link-257" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-257', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">                        <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-258', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line">                        <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">t</tt> </tt>\r
-<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-259', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">                <tt class="py-name">lastE</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>\r
-<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-260', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">lastE</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">            <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">o</tt> <tt class="py-keyword">for</tt> <tt class="py-name">o</tt> <tt class="py-keyword">in</tt> <tt class="py-name">out</tt> <tt class="py-keyword">if</tt> <tt class="py-name">o</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">,</tt><tt class="py-name">_flatten</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-261" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-261', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-262" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-262', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-263', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line">                <tt class="py-comment"># catch and re-raise exception from here, clears out pyparsing internal stack trace</tt>\r </tt>
-<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-</div><a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.searchString"></a><div id="ParserElement.searchString-def"><a name="L1794"></a><tt class="py-lineno">1794</tt> <a class="py-toggle" href="#" id="ParserElement.searchString-toggle" onclick="return toggle('ParserElement.searchString');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#searchString">searchString</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">maxMatches</tt><tt class="py-op">=</tt><tt id="link-264" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-264', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.searchString-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.searchString-expanded"><a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-docstring">        Another extension to C{L{scanString}}, simplifying the access to the tokens found\r</tt> </tt>
-<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"><tt class="py-docstring">        to match the given parse expression.  May be called with optional\r</tt> </tt>
-<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"><tt class="py-docstring">        C{maxMatches} argument, to clip searching after 'n' matches are found.\r</tt> </tt>
-<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line"><tt class="py-docstring">            # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters\r</tt> </tt>
-<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"><tt class="py-docstring">            cap_word = Word(alphas.upper(), alphas.lower())\r</tt> </tt>
-<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"><tt class="py-docstring">            print(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity"))\r</tt> </tt>
-<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line"><tt class="py-docstring">            # the sum() builtin can be used to merge results into a single ParseResults object\r</tt> </tt>
-<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"><tt class="py-docstring">            print(sum(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity")))\r</tt> </tt>
-<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line"><tt class="py-docstring">            [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']]\r</tt> </tt>
-<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line"><tt class="py-docstring">            ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity']\r</tt> </tt>
-<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-265" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-265', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">t</tt> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="pyparsing.ParserElement.scanString" class="py-name" href="#" onclick="return doclink('link-266', 'scanString', 'link-255');">scanString</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">maxMatches</tt> <tt class="py-op">)</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-267" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-267', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-268" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-268', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-269', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line">                <tt class="py-comment"># catch and re-raise exception from here, clears out pyparsing internal stack trace</tt>\r </tt>
-<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-</div><a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.split"></a><div id="ParserElement.split-def"><a name="L1821"></a><tt class="py-lineno">1821</tt> <a class="py-toggle" href="#" id="ParserElement.split-toggle" onclick="return toggle('ParserElement.split');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#split">split</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">maxsplit</tt><tt class="py-op">=</tt><tt id="link-270" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-270', '_MAX_INT', 'link-8');">_MAX_INT</a></tt><tt class="py-op">,</tt> <tt class="py-param">includeSeparators</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.split-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.split-expanded"><a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line"><tt class="py-docstring">        Generator method to split a string using the given expression as a separator.\r</tt> </tt>
-<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line"><tt class="py-docstring">        May be called with optional C{maxsplit} argument, to limit the number of splits;\r</tt> </tt>
-<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line"><tt class="py-docstring">        and the optional C{includeSeparators} argument (default=C{False}), if the separating\r</tt> </tt>
-<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"><tt class="py-docstring">        matching text should be included in the split results.\r</tt> </tt>
-<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"><tt class="py-docstring">            punc = oneOf(list(".,;:/-!?"))\r</tt> </tt>
-<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line"><tt class="py-docstring">            print(list(punc.split("This, this?, this sentence, is badly punctuated!")))\r</tt> </tt>
-<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"><tt class="py-docstring">            ['This', ' this', '', ' this sentence', ' is badly punctuated', '']\r</tt> </tt>
-<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt class="py-name">splits</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">        <tt class="py-name">last</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="pyparsing.ParserElement.scanString" class="py-name" href="#" onclick="return doclink('link-271', 'scanString', 'link-255');">scanString</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">maxMatches</tt><tt class="py-op">=</tt><tt class="py-name">maxsplit</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">            <tt class="py-keyword">yield</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">last</tt><tt class="py-op">:</tt><tt class="py-name">s</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">includeSeparators</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">                <tt class="py-keyword">yield</tt> <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">            <tt class="py-name">last</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>\r
-<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-keyword">yield</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">last</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__add__"></a><div id="ParserElement.__add__-def"><a name="L1843"></a><tt class="py-lineno">1843</tt> <a class="py-toggle" href="#" id="ParserElement.__add__-toggle" onclick="return toggle('ParserElement.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__add__">__add__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__add__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__add__-expanded"><a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of + operator - returns C{L{And}}. Adding strings to a ParserElement\r</tt> </tt>
-<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"><tt class="py-docstring">        converts them to L{Literal}s by default.\r</tt> </tt>
-<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"><tt class="py-docstring">            greet = Word(alphas) + "," + Word(alphas) + "!"\r</tt> </tt>
-<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-docstring">            hello = "Hello, World!"\r</tt> </tt>
-<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-docstring">            print (hello, "-&gt;", greet.parseString(hello))\r</tt> </tt>
-<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"><tt class="py-docstring">        Prints::\r</tt> </tt>
-<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line"><tt class="py-docstring">            Hello, World! -&gt; ['Hello', ',', 'World', '!']\r</tt> </tt>
-<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-272', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-273" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-273', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-274" class="py-name" targets="Class pyparsing.And=pyparsing.And-class.html"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-274', 'And', 'link-274');">And</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> <tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__radd__"></a><div id="ParserElement.__radd__-def"><a name="L1863"></a><tt class="py-lineno">1863</tt> <a class="py-toggle" href="#" id="ParserElement.__radd__-toggle" onclick="return toggle('ParserElement.__radd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__radd__">__radd__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__radd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__radd__-expanded"><a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of + operator when left operand is not a C{L{ParserElement}}\r</tt> </tt>
-<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-275" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-275', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-276" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-276', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__sub__"></a><div id="ParserElement.__sub__-def"><a name="L1875"></a><tt class="py-lineno">1875</tt> <a class="py-toggle" href="#" id="ParserElement.__sub__-toggle" onclick="return toggle('ParserElement.__sub__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__sub__">__sub__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__sub__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__sub__-expanded"><a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of - operator, returns C{L{And}} with error stop\r</tt> </tt>
-<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-277" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-277', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-278" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-278', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">+</tt> <tt id="link-279" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-279', 'And', 'link-274');">And</a></tt><tt class="py-op">.</tt><tt class="py-name">_ErrorStop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">other</tt> </tt>\r
-</div><a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__rsub__"></a><div id="ParserElement.__rsub__-def"><a name="L1887"></a><tt class="py-lineno">1887</tt> <a class="py-toggle" href="#" id="ParserElement.__rsub__-toggle" onclick="return toggle('ParserElement.__rsub__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__rsub__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__rsub__-expanded"><a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of - operator when left operand is not a C{L{ParserElement}}\r</tt> </tt>
-<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-280" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-280', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-281" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-281', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__mul__"></a><div id="ParserElement.__mul__-def"><a name="L1899"></a><tt class="py-lineno">1899</tt> <a class="py-toggle" href="#" id="ParserElement.__mul__-toggle" onclick="return toggle('ParserElement.__mul__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__mul__">__mul__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__mul__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__mul__-expanded"><a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of * operator, allows use of C{expr * 3} in place of\r</tt> </tt>
-<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"><tt class="py-docstring">        C{expr + expr + expr}.  Expressions may also me multiplied by a 2-integer\r</tt> </tt>
-<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"><tt class="py-docstring">        tuple, similar to C{{min,max}} multipliers in regular expressions.  Tuples\r</tt> </tt>
-<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line"><tt class="py-docstring">        may also include C{None} as in:\r</tt> </tt>
-<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line"><tt class="py-docstring">         - C{expr*(n,None)} or C{expr*(n,)} is equivalent\r</tt> </tt>
-<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line"><tt class="py-docstring">              to C{expr*n + L{ZeroOrMore}(expr)}\r</tt> </tt>
-<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"><tt class="py-docstring">              (read as "at least n instances of C{expr}")\r</tt> </tt>
-<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"><tt class="py-docstring">         - C{expr*(None,n)} is equivalent to C{expr*(0,n)}\r</tt> </tt>
-<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line"><tt class="py-docstring">              (read as "0 to n instances of C{expr}")\r</tt> </tt>
-<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line"><tt class="py-docstring">         - C{expr*(None,None)} is equivalent to C{L{ZeroOrMore}(expr)}\r</tt> </tt>
-<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line"><tt class="py-docstring">         - C{expr*(1,None)} is equivalent to C{L{OneOrMore}(expr)}\r</tt> </tt>
-<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line"><tt class="py-docstring">        Note that C{expr*(None,n)} does not raise an exception if\r</tt> </tt>
-<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line"><tt class="py-docstring">        more than n exprs exist in the input stream; that is,\r</tt> </tt>
-<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"><tt class="py-docstring">        C{expr*(None,n)} does not enforce a maximum number of expr\r</tt> </tt>
-<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line"><tt class="py-docstring">        occurrences.  If this behavior is desired, then write\r</tt> </tt>
-<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"><tt class="py-docstring">        C{expr*(None,n) + ~expr}\r</tt> </tt>
-<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">            <tt class="py-name">minElements</tt><tt class="py-op">,</tt> <tt class="py-name">optElements</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt><tt class="py-number">0</tt> </tt>\r
-<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt><tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-282" class="py-name" targets="Class pyparsing.ZeroOrMore=pyparsing.ZeroOrMore-class.html"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-282', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-283" class="py-name" targets="Class pyparsing.OneOrMore=pyparsing.OneOrMore-class.html"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-283', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">*</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-284" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-284', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">                <tt class="py-name">minElements</tt><tt class="py-op">,</tt> <tt class="py-name">optElements</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt> </tt>\r
-<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">                <tt class="py-name">optElements</tt> <tt class="py-op">-=</tt> <tt class="py-name">minElements</tt> </tt>\r
-<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot multiply 'ParserElement' and ('%s','%s') objects"</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot multiply 'ParserElement' and '%s' objects"</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">\r </tt>
-<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">minElements</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot multiply ParserElement by negative value"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">optElements</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"second tuple value must be greater or equal to first tuple value"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">minElements</tt> <tt class="py-op">==</tt> <tt class="py-name">optElements</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot multiply ParserElement by 0 or (0,0)"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">\r </tt>
-<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">optElements</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">makeOptionalList</tt><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">n</tt><tt class="py-op">&gt;</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-285" class="py-name" targets="Class pyparsing.Optional=pyparsing.Optional-class.html"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-285', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt> <tt class="py-op">+</tt> <tt class="py-name">makeOptionalList</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-286" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-286', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">minElements</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">minElements</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">                    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> <tt class="py-op">+</tt> <tt class="py-name">makeOptionalList</tt><tt class="py-op">(</tt><tt class="py-name">optElements</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">                    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-287" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-287', 'And', 'link-274');">And</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">minElements</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">makeOptionalList</tt><tt class="py-op">(</tt><tt class="py-name">optElements</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">                <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">makeOptionalList</tt><tt class="py-op">(</tt><tt class="py-name">optElements</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">minElements</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">                <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>\r
-<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">                <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-288" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-288', 'And', 'link-274');">And</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">minElements</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__rmul__"></a><div id="ParserElement.__rmul__-def"><a name="L1967"></a><tt class="py-lineno">1967</tt> <a class="py-toggle" href="#" id="ParserElement.__rmul__-toggle" onclick="return toggle('ParserElement.__rmul__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__rmul__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__rmul__-expanded"><a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name" targets="Method pyparsing.ParserElement.__mul__()=pyparsing.ParserElement-class.html#__mul__"><a title="pyparsing.ParserElement.__mul__" class="py-name" href="#" onclick="return doclink('link-289', '__mul__', 'link-289');">__mul__</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__or__"></a><div id="ParserElement.__or__-def"><a name="L1970"></a><tt class="py-lineno">1970</tt> <a class="py-toggle" href="#" id="ParserElement.__or__-toggle" onclick="return toggle('ParserElement.__or__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__or__">__or__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__or__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__or__-expanded"><a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of | operator - returns C{L{MatchFirst}}\r</tt> </tt>
-<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-290" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-290', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-291" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-291', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-292" class="py-name" targets="Class pyparsing.MatchFirst=pyparsing.MatchFirst-class.html"><a title="pyparsing.MatchFirst" class="py-name" href="#" onclick="return doclink('link-292', 'MatchFirst', 'link-292');">MatchFirst</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> <tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__ror__"></a><div id="ParserElement.__ror__-def"><a name="L1982"></a><tt class="py-lineno">1982</tt> <a class="py-toggle" href="#" id="ParserElement.__ror__-toggle" onclick="return toggle('ParserElement.__ror__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__ror__">__ror__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__ror__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__ror__-expanded"><a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of | operator when left operand is not a C{L{ParserElement}}\r</tt> </tt>
-<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-293', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-294" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-294', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">|</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__xor__"></a><div id="ParserElement.__xor__-def"><a name="L1994"></a><tt class="py-lineno">1994</tt> <a class="py-toggle" href="#" id="ParserElement.__xor__-toggle" onclick="return toggle('ParserElement.__xor__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__xor__">__xor__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__xor__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__xor__-expanded"><a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of ^ operator - returns C{L{Or}}\r</tt> </tt>
-<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-295" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-295', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-296" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-296', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-297" class="py-name" targets="Class pyparsing.Or=pyparsing.Or-class.html"><a title="pyparsing.Or" class="py-name" href="#" onclick="return doclink('link-297', 'Or', 'link-297');">Or</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> <tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__rxor__"></a><div id="ParserElement.__rxor__-def"><a name="L2006"></a><tt class="py-lineno">2006</tt> <a class="py-toggle" href="#" id="ParserElement.__rxor__-toggle" onclick="return toggle('ParserElement.__rxor__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__rxor__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__rxor__-expanded"><a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of ^ operator when left operand is not a C{L{ParserElement}}\r</tt> </tt>
-<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-298" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-298', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-299" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-299', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">^</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__and__"></a><div id="ParserElement.__and__-def"><a name="L2018"></a><tt class="py-lineno">2018</tt> <a class="py-toggle" href="#" id="ParserElement.__and__-toggle" onclick="return toggle('ParserElement.__and__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__and__">__and__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__and__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__and__-expanded"><a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of &amp; operator - returns C{L{Each}}\r</tt> </tt>
-<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-300" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-300', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-301" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-301', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-302" class="py-name" targets="Class pyparsing.Each=pyparsing.Each-class.html"><a title="pyparsing.Each" class="py-name" href="#" onclick="return doclink('link-302', 'Each', 'link-302');">Each</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> <tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__rand__"></a><div id="ParserElement.__rand__-def"><a name="L2030"></a><tt class="py-lineno">2030</tt> <a class="py-toggle" href="#" id="ParserElement.__rand__-toggle" onclick="return toggle('ParserElement.__rand__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__rand__">__rand__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__rand__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__rand__-expanded"><a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of &amp; operator when left operand is not a C{L{ParserElement}}\r</tt> </tt>
-<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-303" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-303', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-304" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-304', 'ParserElement', 'link-130');">ParserElement</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot combine element of type %s with ParserElement"</tt> <tt class="py-op">%</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">&amp;</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__invert__"></a><div id="ParserElement.__invert__-def"><a name="L2042"></a><tt class="py-lineno">2042</tt> <a class="py-toggle" href="#" id="ParserElement.__invert__-toggle" onclick="return toggle('ParserElement.__invert__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__invert__">__invert__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__invert__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__invert__-expanded"><a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line"><tt class="py-docstring">        Implementation of ~ operator - returns C{L{NotAny}}\r</tt> </tt>
-<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-305" class="py-name" targets="Class pyparsing.NotAny=pyparsing.NotAny-class.html"><a title="pyparsing.NotAny" class="py-name" href="#" onclick="return doclink('link-305', 'NotAny', 'link-305');">NotAny</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__call__"></a><div id="ParserElement.__call__-def"><a name="L2048"></a><tt class="py-lineno">2048</tt> <a class="py-toggle" href="#" id="ParserElement.__call__-toggle" onclick="return toggle('ParserElement.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__call__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__call__-expanded"><a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line"><tt class="py-docstring">        Shortcut for C{L{setResultsName}}, with C{listAllMatches=False}.\r</tt> </tt>
-<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line"><tt class="py-docstring">        If C{name} is given with a trailing C{'*'} character, then C{listAllMatches} will be\r</tt> </tt>
-<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line"><tt class="py-docstring">        passed as C{True}.\r</tt> </tt>
-<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line"><tt class="py-docstring">        If C{name} is omitted, same as calling C{L{copy}}.\r</tt> </tt>
-<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line"><tt class="py-docstring">            # these are equivalent\r</tt> </tt>
-<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line"><tt class="py-docstring">            userdata = Word(alphas).setResultsName("name") + Word(nums+"-").setResultsName("socsecno")\r</tt> </tt>
-<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line"><tt class="py-docstring">            userdata = Word(alphas)("name") + Word(nums+"-")("socsecno")\r</tt> </tt>
-<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name" targets="Method pyparsing.ParseExpression.setResultsName()=pyparsing.ParseExpression-class.html#setResultsName,Method pyparsing.ParserElement.setResultsName()=pyparsing.ParserElement-class.html#setResultsName"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-306', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-307', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.suppress"></a><div id="ParserElement.suppress-def"><a name="L2067"></a><tt class="py-lineno">2067</tt> <a class="py-toggle" href="#" id="ParserElement.suppress-toggle" onclick="return toggle('ParserElement.suppress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#suppress">suppress</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.suppress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.suppress-expanded"><a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line"><tt class="py-docstring">        Suppresses the output of this C{ParserElement}; useful to keep punctuation from\r</tt> </tt>
-<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line"><tt class="py-docstring">        cluttering up returned output.\r</tt> </tt>
-<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-308" class="py-name" targets="Class pyparsing.Suppress=pyparsing.Suppress-class.html"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-308', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.leaveWhitespace"></a><div id="ParserElement.leaveWhitespace-def"><a name="L2074"></a><tt class="py-lineno">2074</tt> <a class="py-toggle" href="#" id="ParserElement.leaveWhitespace-toggle" onclick="return toggle('ParserElement.leaveWhitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.leaveWhitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.leaveWhitespace-expanded"><a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line"><tt class="py-docstring">        Disables the skipping of whitespace before matching the characters in the\r</tt> </tt>
-<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line"><tt class="py-docstring">        C{ParserElement}'s defined pattern.  This is normally only used internally by\r</tt> </tt>
-<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line"><tt class="py-docstring">        the pyparsing module, but may be needed in some whitespace-sensitive grammars.\r</tt> </tt>
-<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setWhitespaceChars"></a><div id="ParserElement.setWhitespaceChars-def"><a name="L2083"></a><tt class="py-lineno">2083</tt> <a class="py-toggle" href="#" id="ParserElement.setWhitespaceChars-toggle" onclick="return toggle('ParserElement.setWhitespaceChars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chars</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setWhitespaceChars-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setWhitespaceChars-expanded"><a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line"><tt class="py-docstring">        Overrides the default whitespace chars\r</tt> </tt>
-<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">=</tt> <tt class="py-name">chars</tt> </tt>\r
-<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">copyDefaultWhiteChars</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.parseWithTabs"></a><div id="ParserElement.parseWithTabs-def"><a name="L2092"></a><tt class="py-lineno">2092</tt> <a class="py-toggle" href="#" id="ParserElement.parseWithTabs-toggle" onclick="return toggle('ParserElement.parseWithTabs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.parseWithTabs-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.parseWithTabs-expanded"><a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line"><tt class="py-docstring">        Overrides default behavior to expand C{&lt;TAB&gt;}s to spaces before parsing the input string.\r</tt> </tt>
-<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line"><tt class="py-docstring">        Must be called before C{parseString} when the input grammar contains elements that\r</tt> </tt>
-<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line"><tt class="py-docstring">        match C{&lt;TAB&gt;} characters.\r</tt> </tt>
-<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepTabs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.ignore"></a><div id="ParserElement.ignore-def"><a name="L2101"></a><tt class="py-lineno">2101</tt> <a class="py-toggle" href="#" id="ParserElement.ignore-toggle" onclick="return toggle('ParserElement.ignore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#ignore">ignore</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.ignore-expanded"><a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line"><tt class="py-docstring">        Define expression to be ignored (e.g., comments) while doing pattern\r</tt> </tt>
-<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line"><tt class="py-docstring">        matching; may be called repeatedly, to define multiple comment or other\r</tt> </tt>
-<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line"><tt class="py-docstring">        ignorable patterns.\r</tt> </tt>
-<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line"><tt class="py-docstring">            patt = OneOrMore(Word(alphas))\r</tt> </tt>
-<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line"><tt class="py-docstring">            patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj']\r</tt> </tt>
-<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line"><tt class="py-docstring">            patt.ignore(cStyleComment)\r</tt> </tt>
-<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line"><tt class="py-docstring">            patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj', 'lskjd']\r</tt> </tt>
-<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-309" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-309', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">\r </tt>
-<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-310" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-310', 'Suppress', 'link-308');">Suppress</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">other</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-311', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-312', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt id="link-313" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-313', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-314', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setDebugActions"></a><div id="ParserElement.setDebugActions-def"><a name="L2124"></a><tt class="py-lineno">2124</tt> <a class="py-toggle" href="#" id="ParserElement.setDebugActions-toggle" onclick="return toggle('ParserElement.setDebugActions');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">startAction</tt><tt class="py-op">,</tt> <tt class="py-param">successAction</tt><tt class="py-op">,</tt> <tt class="py-param">exceptionAction</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setDebugActions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setDebugActions-expanded"><a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line"><tt class="py-docstring">        Enable display of debugging messages while doing pattern matching.\r</tt> </tt>
-<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debugActions</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">startAction</tt> <tt class="py-keyword">or</tt> <tt class="py-name">_defaultStartDebugAction</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">                             <tt class="py-name">successAction</tt> <tt class="py-keyword">or</tt> <tt class="py-name">_defaultSuccessDebugAction</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">                             <tt class="py-name">exceptionAction</tt> <tt class="py-keyword">or</tt> <tt class="py-name">_defaultExceptionDebugAction</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.setDebug"></a><div id="ParserElement.setDebug-def"><a name="L2134"></a><tt class="py-lineno">2134</tt> <a class="py-toggle" href="#" id="ParserElement.setDebug-toggle" onclick="return toggle('ParserElement.setDebug');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#setDebug">setDebug</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">flag</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.setDebug-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.setDebug-expanded"><a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line"><tt class="py-docstring">        Enable display of debugging messages while doing pattern matching.\r</tt> </tt>
-<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line"><tt class="py-docstring">        Set C{flag} to True to enable, False to disable.\r</tt> </tt>
-<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line"><tt class="py-docstring">            wd = Word(alphas).setName("alphaword")\r</tt> </tt>
-<a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line"><tt class="py-docstring">            integer = Word(nums).setName("numword")\r</tt> </tt>
-<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line"><tt class="py-docstring">            term = wd | integer\r</tt> </tt>
-<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line"><tt class="py-docstring">            # turn on debugging for wd\r</tt> </tt>
-<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line"><tt class="py-docstring">            wd.setDebug()\r</tt> </tt>
-<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line"><tt class="py-docstring">            OneOrMore(term).parseString("abc 123 xyz 890")\r</tt> </tt>
-<a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2149"></a><tt class="py-lineno">2149</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line"><tt class="py-docstring">            Match alphaword at loc 0(1,1)\r</tt> </tt>
-<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line"><tt class="py-docstring">            Matched alphaword -&gt; ['abc']\r</tt> </tt>
-<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line"><tt class="py-docstring">            Match alphaword at loc 3(1,4)\r</tt> </tt>
-<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line"><tt class="py-docstring">            Exception raised:Expected alphaword (at char 4), (line:1, col:5)\r</tt> </tt>
-<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line"><tt class="py-docstring">            Match alphaword at loc 7(1,8)\r</tt> </tt>
-<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line"><tt class="py-docstring">            Matched alphaword -&gt; ['xyz']\r</tt> </tt>
-<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line"><tt class="py-docstring">            Match alphaword at loc 11(1,12)\r</tt> </tt>
-<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line"><tt class="py-docstring">            Exception raised:Expected alphaword (at char 12), (line:1, col:13)\r</tt> </tt>
-<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-line"><tt class="py-docstring">            Match alphaword at loc 15(1,16)\r</tt> </tt>
-<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line"><tt class="py-docstring">            Exception raised:Expected alphaword (at char 15), (line:1, col:16)\r</tt> </tt>
-<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line"><tt class="py-docstring">        The output shown is that produced by the default debug actions - custom debug actions can be\r</tt> </tt>
-<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line"><tt class="py-docstring">        specified using L{setDebugActions}. Prior to attempting\r</tt> </tt>
-<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line"><tt class="py-docstring">        to match the C{wd} expression, the debugging message C{"Match &lt;exprname&gt; at loc &lt;n&gt;(&lt;line&gt;,&lt;col&gt;)"}\r</tt> </tt>
-<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line"><tt class="py-docstring">        is shown. Then if the parse succeeds, a C{"Matched"} message is shown, or an C{"Exception raised"}\r</tt> </tt>
-<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line"><tt class="py-docstring">        message is shown. Also note the use of L{setName} to assign a human-readable name to the expression,\r</tt> </tt>
-<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line"><tt class="py-docstring">        which makes debugging and exception messages easier to understand - for instance, the default\r</tt> </tt>
-<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line"><tt class="py-docstring">        name created for the C{Word} expression without calling C{setName} is C{"W:(ABCD...)"}.\r</tt> </tt>
-<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">flag</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name" targets="Method pyparsing.ParserElement.setDebugActions()=pyparsing.ParserElement-class.html#setDebugActions"><a title="pyparsing.ParserElement.setDebugActions" class="py-name" href="#" onclick="return doclink('link-315', 'setDebugActions', 'link-315');">setDebugActions</a></tt><tt class="py-op">(</tt> <tt class="py-name">_defaultStartDebugAction</tt><tt class="py-op">,</tt> <tt class="py-name">_defaultSuccessDebugAction</tt><tt class="py-op">,</tt> <tt class="py-name">_defaultExceptionDebugAction</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__str__"></a><div id="ParserElement.__str__-def"><a name="L2175"></a><tt class="py-lineno">2175</tt> <a class="py-toggle" href="#" id="ParserElement.__str__-toggle" onclick="return toggle('ParserElement.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__str__-expanded"><a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-</div><a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__repr__"></a><div id="ParserElement.__repr__-def"><a name="L2178"></a><tt class="py-lineno">2178</tt> <a class="py-toggle" href="#" id="ParserElement.__repr__-toggle" onclick="return toggle('ParserElement.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__repr__">__repr__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__repr__-expanded"><a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.streamline"></a><div id="ParserElement.streamline-def"><a name="L2181"></a><tt class="py-lineno">2181</tt> <a class="py-toggle" href="#" id="ParserElement.streamline-toggle" onclick="return toggle('ParserElement.streamline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#streamline">streamline</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.streamline-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.streamline-expanded"><a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.checkRecursion"></a><div id="ParserElement.checkRecursion-def"><a name="L2186"></a><tt class="py-lineno">2186</tt> <a class="py-toggle" href="#" id="ParserElement.checkRecursion-toggle" onclick="return toggle('ParserElement.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.checkRecursion-expanded"><a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>\r
-</div><a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.validate"></a><div id="ParserElement.validate-def"><a name="L2189"></a><tt class="py-lineno">2189</tt> <a class="py-toggle" href="#" id="ParserElement.validate-toggle" onclick="return toggle('ParserElement.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#validate">validate</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">validateTrace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.validate-expanded"><a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line"><tt class="py-docstring">        Check defined expressions for valid structure, check for infinite recursive definitions.\r</tt> </tt>
-<a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name" targets="Method pyparsing.And.checkRecursion()=pyparsing.And-class.html#checkRecursion,Method pyparsing.Each.checkRecursion()=pyparsing.Each-class.html#checkRecursion,Method pyparsing.MatchFirst.checkRecursion()=pyparsing.MatchFirst-class.html#checkRecursion,Method pyparsing.Or.checkRecursion()=pyparsing.Or-class.html#checkRecursion,Method pyparsing.ParseElementEnhance.checkRecursion()=pyparsing.ParseElementEnhance-class.html#checkRecursion,Method pyparsing.ParserElement.checkRecursion()=pyparsing.ParserElement-class.html#checkRecursion"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-316', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.parseFile"></a><div id="ParserElement.parseFile-def"><a name="L2195"></a><tt class="py-lineno">2195</tt> <a class="py-toggle" href="#" id="ParserElement.parseFile-toggle" onclick="return toggle('ParserElement.parseFile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#parseFile">parseFile</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">file_or_filename</tt><tt class="py-op">,</tt> <tt class="py-param">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.parseFile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.parseFile-expanded"><a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line"><tt class="py-docstring">        Execute the parse expression on the given file or filename.\r</tt> </tt>
-<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line"><tt class="py-docstring">        If a filename is specified (instead of a file object),\r</tt> </tt>
-<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line"><tt class="py-docstring">        the entire file is opened, read, and closed before parsing.\r</tt> </tt>
-<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line">            <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">file_or_filename</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line">            <tt class="py-keyword">with</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">file_or_filename</tt><tt class="py-op">,</tt> <tt class="py-string">"r"</tt><tt class="py-op">)</tt> <tt class="py-keyword">as</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line">                <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name" targets="Method pyparsing.ParserElement.parseString()=pyparsing.ParserElement-class.html#parseString"><a title="pyparsing.ParserElement.parseString" class="py-name" href="#" onclick="return doclink('link-317', 'parseString', 'link-317');">parseString</a></tt><tt class="py-op">(</tt><tt class="py-name">file_contents</tt><tt class="py-op">,</tt> <tt class="py-name">parseAll</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-318" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-318', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-319" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-319', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-320" class="py-name"><a title="pyparsing.ParserElement.verbose_stacktrace" class="py-name" href="#" onclick="return doclink('link-320', 'verbose_stacktrace', 'link-129');">verbose_stacktrace</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line">                <tt class="py-comment"># catch and re-raise exception from here, clears out pyparsing internal stack trace</tt>\r </tt>
-<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">exc</tt> </tt>\r
-</div><a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__eq__"></a><div id="ParserElement.__eq__-def"><a name="L2215"></a><tt class="py-lineno">2215</tt> <a class="py-toggle" href="#" id="ParserElement.__eq__-toggle" onclick="return toggle('ParserElement.__eq__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__eq__">__eq__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__eq__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__eq__-expanded"><a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-321" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-321', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt> <tt class="py-keyword">or</tt> <tt class="py-name">vars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">vars</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-322', 'matches', 'link-248');">matches</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-323" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-323', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-name">other</tt> </tt>\r
-</div><a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__ne__"></a><div id="ParserElement.__ne__-def"><a name="L2223"></a><tt class="py-lineno">2223</tt> <a class="py-toggle" href="#" id="ParserElement.__ne__-toggle" onclick="return toggle('ParserElement.__ne__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__ne__">__ne__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__ne__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__ne__-expanded"><a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__hash__"></a><div id="ParserElement.__hash__-def"><a name="L2226"></a><tt class="py-lineno">2226</tt> <a class="py-toggle" href="#" id="ParserElement.__hash__-toggle" onclick="return toggle('ParserElement.__hash__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__hash__-expanded"><a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__req__"></a><div id="ParserElement.__req__-def"><a name="L2229"></a><tt class="py-lineno">2229</tt> <a class="py-toggle" href="#" id="ParserElement.__req__-toggle" onclick="return toggle('ParserElement.__req__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__req__">__req__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__req__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__req__-expanded"><a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt> </tt>\r
-</div><a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.__rne__"></a><div id="ParserElement.__rne__-def"><a name="L2232"></a><tt class="py-lineno">2232</tt> <a class="py-toggle" href="#" id="ParserElement.__rne__-toggle" onclick="return toggle('ParserElement.__rne__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#__rne__">__rne__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.__rne__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.__rne__-expanded"><a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.matches"></a><div id="ParserElement.matches-def"><a name="L2235"></a><tt class="py-lineno">2235</tt> <a class="py-toggle" href="#" id="ParserElement.matches-toggle" onclick="return toggle('ParserElement.matches');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#matches">matches</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">testString</tt><tt class="py-op">,</tt> <tt class="py-param">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.matches-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.matches-expanded"><a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line"><tt class="py-docstring">        Method for quick testing of a parser against a test string. Good for simple\r</tt> </tt>
-<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line"><tt class="py-docstring">        inline microtests of sub expressions while building up larger parser.\r</tt> </tt>
-<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters:\r</tt> </tt>
-<a name="L2241"></a><tt class="py-lineno">2241</tt>  <tt class="py-line"><tt class="py-docstring">         - testString - to test against this expression for a match\r</tt> </tt>
-<a name="L2242"></a><tt class="py-lineno">2242</tt>  <tt class="py-line"><tt class="py-docstring">         - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests\r</tt> </tt>
-<a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line"><tt class="py-docstring">            expr = Word(nums)\r</tt> </tt>
-<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line"><tt class="py-docstring">            assert expr.matches("100")\r</tt> </tt>
-<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="pyparsing.ParserElement.parseString" class="py-name" href="#" onclick="return doclink('link-324', 'parseString', 'link-317');">parseString</a></tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">testString</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">parseAll</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-325" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-325', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-line">\r </tt>
-<a name="ParserElement.runTests"></a><div id="ParserElement.runTests-def"><a name="L2254"></a><tt class="py-lineno">2254</tt> <a class="py-toggle" href="#" id="ParserElement.runTests-toggle" onclick="return toggle('ParserElement.runTests');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParserElement-class.html#runTests">runTests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tests</tt><tt class="py-op">,</tt> <tt class="py-param">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">comment</tt><tt class="py-op">=</tt><tt class="py-string">'#'</tt><tt class="py-op">,</tt> <tt class="py-param">fullDump</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">printResults</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">failureTests</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParserElement.runTests-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.runTests-expanded"><a name="L2255"></a><tt class="py-lineno">2255</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line"><tt class="py-docstring">        Execute the parse expression on a series of test strings, showing each\r</tt> </tt>
-<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line"><tt class="py-docstring">        test, the parsed results or where the parse failed. Quick and easy way to\r</tt> </tt>
-<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line"><tt class="py-docstring">        run a parse expression against a list of sample strings.\r</tt> </tt>
-<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters:\r</tt> </tt>
-<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line"><tt class="py-docstring">         - tests - a list of separate test strings, or a multiline string of test strings\r</tt> </tt>
-<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line"><tt class="py-docstring">         - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests\r</tt> </tt>
-<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line"><tt class="py-docstring">         - comment - (default=C{'#'}) - expression for indicating embedded comments in the test\r</tt> </tt>
-<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line"><tt class="py-docstring">              string; pass None to disable comment filtering\r</tt> </tt>
-<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-line"><tt class="py-docstring">         - fullDump - (default=C{True}) - dump results as list followed by results names in nested outline;\r</tt> </tt>
-<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-line"><tt class="py-docstring">              if False, only dump nested list\r</tt> </tt>
-<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line"><tt class="py-docstring">         - printResults - (default=C{True}) prints test output to stdout\r</tt> </tt>
-<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-line"><tt class="py-docstring">         - failureTests - (default=C{False}) indicates if these tests are expected to fail parsing\r</tt> </tt>
-<a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line"><tt class="py-docstring">        Returns: a (success, results) tuple, where success indicates that all tests succeeded\r</tt> </tt>
-<a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line"><tt class="py-docstring">        (or failed if C{failureTests} is True), and the results contain a list of lines of each\r</tt> </tt>
-<a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line"><tt class="py-docstring">        test's output\r</tt> </tt>
-<a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line"><tt class="py-docstring">            number_expr = pyparsing_common.number.copy()\r</tt> </tt>
-<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line"><tt class="py-docstring">            result = number_expr.runTests('''\r</tt> </tt>
-<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line"><tt class="py-docstring">                # unsigned integer\r</tt> </tt>
-<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line"><tt class="py-docstring">                100\r</tt> </tt>
-<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line"><tt class="py-docstring">                # negative integer\r</tt> </tt>
-<a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line"><tt class="py-docstring">                -100\r</tt> </tt>
-<a name="L2282"></a><tt class="py-lineno">2282</tt>  <tt class="py-line"><tt class="py-docstring">                # float with scientific notation\r</tt> </tt>
-<a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line"><tt class="py-docstring">                6.02e23\r</tt> </tt>
-<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line"><tt class="py-docstring">                # integer with scientific notation\r</tt> </tt>
-<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line"><tt class="py-docstring">                1e-12\r</tt> </tt>
-<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line"><tt class="py-docstring">                ''')\r</tt> </tt>
-<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line"><tt class="py-docstring">            print("Success" if result[0] else "Failed!")\r</tt> </tt>
-<a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-line"><tt class="py-docstring">            result = number_expr.runTests('''\r</tt> </tt>
-<a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-line"><tt class="py-docstring">                # stray character\r</tt> </tt>
-<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-line"><tt class="py-docstring">                100Z\r</tt> </tt>
-<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line"><tt class="py-docstring">                # missing leading digit before '.'\r</tt> </tt>
-<a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line"><tt class="py-docstring">                -.100\r</tt> </tt>
-<a name="L2294"></a><tt class="py-lineno">2294</tt>  <tt class="py-line"><tt class="py-docstring">                # too many '.'\r</tt> </tt>
-<a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line"><tt class="py-docstring">                3.14.159\r</tt> </tt>
-<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line"><tt class="py-docstring">                ''', failureTests=True)\r</tt> </tt>
-<a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line"><tt class="py-docstring">            print("Success" if result[0] else "Failed!")\r</tt> </tt>
-<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line"><tt class="py-docstring">            # unsigned integer\r</tt> </tt>
-<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line"><tt class="py-docstring">            100\r</tt> </tt>
-<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line"><tt class="py-docstring">            [100]\r</tt> </tt>
-<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line"><tt class="py-docstring">            # negative integer\r</tt> </tt>
-<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line"><tt class="py-docstring">            -100\r</tt> </tt>
-<a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line"><tt class="py-docstring">            [-100]\r</tt> </tt>
-<a name="L2306"></a><tt class="py-lineno">2306</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line"><tt class="py-docstring">            # float with scientific notation\r</tt> </tt>
-<a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line"><tt class="py-docstring">            6.02e23\r</tt> </tt>
-<a name="L2309"></a><tt class="py-lineno">2309</tt>  <tt class="py-line"><tt class="py-docstring">            [6.02e+23]\r</tt> </tt>
-<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-line"><tt class="py-docstring">            # integer with scientific notation\r</tt> </tt>
-<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line"><tt class="py-docstring">            1e-12\r</tt> </tt>
-<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line"><tt class="py-docstring">            [1e-12]\r</tt> </tt>
-<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2315"></a><tt class="py-lineno">2315</tt>  <tt class="py-line"><tt class="py-docstring">            Success\r</tt> </tt>
-<a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line"><tt class="py-docstring">            # stray character\r</tt> </tt>
-<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-line"><tt class="py-docstring">            100Z\r</tt> </tt>
-<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line"><tt class="py-docstring">               ^\r</tt> </tt>
-<a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-line"><tt class="py-docstring">            FAIL: Expected end of text (at char 3), (line:1, col:4)\r</tt> </tt>
-<a name="L2321"></a><tt class="py-lineno">2321</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line"><tt class="py-docstring">            # missing leading digit before '.'\r</tt> </tt>
-<a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line"><tt class="py-docstring">            -.100\r</tt> </tt>
-<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line"><tt class="py-docstring">            ^\r</tt> </tt>
-<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line"><tt class="py-docstring">            FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-line"><tt class="py-docstring">            # too many '.'\r</tt> </tt>
-<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line"><tt class="py-docstring">            3.14.159\r</tt> </tt>
-<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line"><tt class="py-docstring">                ^\r</tt> </tt>
-<a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line"><tt class="py-docstring">            FAIL: Expected end of text (at char 4), (line:1, col:5)\r</tt> </tt>
-<a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line"><tt class="py-docstring">            Success\r</tt> </tt>
-<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line"><tt class="py-docstring">        Each test string must be on a single line. If you want to test a string that spans multiple\r</tt> </tt>
-<a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-line"><tt class="py-docstring">        lines, create a test like this::\r</tt> </tt>
-<a name="L2336"></a><tt class="py-lineno">2336</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line"><tt class="py-docstring">            expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines")\r</tt> </tt>
-<a name="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line"><tt class="py-docstring">        (Note that this is a raw string literal, you must include the leading 'r'.)\r</tt> </tt>
-<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tests</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line">            <tt class="py-name">tests</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">,</tt> <tt class="py-name">tests</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">splitlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">comment</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line">            <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt id="link-326" class="py-name" targets="Class pyparsing.Literal=pyparsing.Literal-class.html"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-326', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">comment</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line">        <tt class="py-name">allResults</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-line">        <tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tests</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">comment</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">comment</tt><tt class="py-op">.</tt><tt id="link-327" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-327', 'matches', 'link-248');">matches</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">comments</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2350"></a><tt class="py-lineno">2350</tt>  <tt class="py-line">                <tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-328', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L2352"></a><tt class="py-lineno">2352</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2353"></a><tt class="py-lineno">2353</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-line">            <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">comments</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line">            <tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2356"></a><tt class="py-lineno">2356</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line">                <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">r'\n'</tt><tt class="py-op">,</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2358"></a><tt class="py-lineno">2358</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="pyparsing.ParserElement.parseString" class="py-name" href="#" onclick="return doclink('link-329', 'parseString', 'link-317');">parseString</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">parseAll</tt><tt class="py-op">=</tt><tt class="py-name">parseAll</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-330', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="pyparsing.ParseResults.dump" class="py-name" href="#" onclick="return doclink('link-331', 'dump', 'link-108');">dump</a></tt><tt class="py-op">(</tt><tt class="py-name">full</tt><tt class="py-op">=</tt><tt class="py-name">fullDump</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-line">                <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">failureTests</tt> </tt>\r
-<a name="L2361"></a><tt class="py-lineno">2361</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-332" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-332', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">pe</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-line">                <tt class="py-name">fatal</tt> <tt class="py-op">=</tt> <tt class="py-string">"(FATAL)"</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">,</tt> <tt id="link-333" class="py-name"><a title="pyparsing.ParseFatalException" class="py-name" href="#" onclick="return doclink('link-333', 'ParseFatalException', 'link-143');">ParseFatalException</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-string">""</tt> </tt>\r
-<a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2364"></a><tt class="py-lineno">2364</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-334', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt id="link-335" class="py-name"><a title="pyparsing.line" class="py-name" href="#" onclick="return doclink('link-335', 'line', 'link-32');">line</a></tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-336', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt id="link-337" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-337', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'^'</tt> <tt class="py-op">+</tt> <tt class="py-name">fatal</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2367"></a><tt class="py-lineno">2367</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-338', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> <tt class="py-op">+</tt> <tt class="py-string">'^'</tt> <tt class="py-op">+</tt> <tt class="py-name">fatal</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-339', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"FAIL: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-line">                <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> <tt class="py-keyword">and</tt> <tt class="py-name">failureTests</tt> </tt>\r
-<a name="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">pe</tt> </tt>\r
-<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-340', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"FAIL-EXCEPTION: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2373"></a><tt class="py-lineno">2373</tt>  <tt class="py-line">                <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> <tt class="py-keyword">and</tt> <tt class="py-name">failureTests</tt> </tt>\r
-<a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">exc</tt> </tt>\r
-<a name="L2375"></a><tt class="py-lineno">2375</tt>  <tt class="py-line">\r </tt>
-<a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">printResults</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">fullDump</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-341" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-341', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2379"></a><tt class="py-lineno">2379</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2380"></a><tt class="py-lineno">2380</tt>  <tt class="py-line">\r </tt>
-<a name="L2381"></a><tt class="py-lineno">2381</tt>  <tt class="py-line">            <tt class="py-name">allResults</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-342', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-line">\r </tt>
-<a name="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">success</tt><tt class="py-op">,</tt> <tt class="py-name">allResults</tt> </tt>\r
-</div></div><a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line">\r </tt>
-<a name="Token"></a><div id="Token-def"><a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line">\r </tt>
-<a name="L2386"></a><tt class="py-lineno">2386</tt> <a class="py-toggle" href="#" id="Token-toggle" onclick="return toggle('Token');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Token-class.html">Token</a><tt class="py-op">(</tt><tt class="py-base-class">ParserElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Token-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Token-expanded"><a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2388"></a><tt class="py-lineno">2388</tt>  <tt class="py-line"><tt class="py-docstring">    Abstract C{ParserElement} subclass, for defining atomic matching patterns.\r</tt> </tt>
-<a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Token.__init__"></a><div id="Token.__init__-def"><a name="L2390"></a><tt class="py-lineno">2390</tt> <a class="py-toggle" href="#" id="Token.__init__-toggle" onclick="return toggle('Token.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Token-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Token.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Token.__init__-expanded"><a name="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-343" class="py-name" targets="Class pyparsing.Token=pyparsing.Token-class.html"><a title="pyparsing.Token" class="py-name" href="#" onclick="return doclink('link-343', 'Token', 'link-343');">Token</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name" targets="Method pyparsing.And.__init__()=pyparsing.And-class.html#__init__,Method pyparsing.CaselessKeyword.__init__()=pyparsing.CaselessKeyword-class.html#__init__,Method pyparsing.CaselessLiteral.__init__()=pyparsing.CaselessLiteral-class.html#__init__,Method pyparsing.Char.__init__()=pyparsing.Char-class.html#__init__,Method pyparsing.CharsNotIn.__init__()=pyparsing.CharsNotIn-class.html#__init__,Method pyparsing.CloseMatch.__init__()=pyparsing.CloseMatch-class.html#__init__,Method pyparsing.Combine.__init__()=pyparsing.Combine-class.html#__init__,Method pyparsing.Dict.__init__()=pyparsing.Dict-class.html#__init__,Method pyparsing.Each.__init__()=pyparsing.Each-class.html#__init__,Method pyparsing.Empty.__init__()=pyparsing.Empty-class.html#__init__,Method pyparsing.FollowedBy.__init__()=pyparsing.FollowedBy-class.html#__init__,Method pyparsing.Forward.__init__()=pyparsing.Forward-class.html#__init__,Method pyparsing.GoToColumn.__init__()=pyparsing.GoToColumn-class.html#__init__,Method pyparsing.Group.__init__()=pyparsing.Group-class.html#__init__,Method pyparsing.Keyword.__init__()=pyparsing.Keyword-class.html#__init__,Method pyparsing.LineEnd.__init__()=pyparsing.LineEnd-class.html#__init__,Method pyparsing.LineStart.__init__()=pyparsing.LineStart-class.html#__init__,Method pyparsing.Literal.__init__()=pyparsing.Literal-class.html#__init__,Method pyparsing.MatchFirst.__init__()=pyparsing.MatchFirst-class.html#__init__,Method pyparsing.NoMatch.__init__()=pyparsing.NoMatch-class.html#__init__,Method pyparsing.NotAny.__init__()=pyparsing.NotAny-class.html#__init__,Method pyparsing.OnlyOnce.__init__()=pyparsing.OnlyOnce-class.html#__init__,Method pyparsing.Optional.__init__()=pyparsing.Optional-class.html#__init__,Method pyparsing.Or.__init__()=pyparsing.Or-class.html#__init__,Method pyparsing.ParseBaseException.__init__()=pyparsing.ParseBaseException-class.html#__init__,Method pyparsing.ParseElementEnhance.__init__()=pyparsing.ParseElementEnhance-class.html#__init__,Method pyparsing.ParseExpression.__init__()=pyparsing.ParseExpression-class.html#__init__,Method pyparsing.ParseResults.__init__()=pyparsing.ParseResults-class.html#__init__,Method pyparsing.ParserElement.__init__()=pyparsing.ParserElement-class.html#__init__,Method pyparsing.PrecededBy.__init__()=pyparsing.PrecededBy-class.html#__init__,Method pyparsing.QuotedString.__init__()=pyparsing.QuotedString-class.html#__init__,Method pyparsing.RecursiveGrammarException.__init__()=pyparsing.RecursiveGrammarException-class.html#__init__,Method pyparsing.Regex.__init__()=pyparsing.Regex-class.html#__init__,Method pyparsing.SkipTo.__init__()=pyparsing.SkipTo-class.html#__init__,Method pyparsing.StringEnd.__init__()=pyparsing.StringEnd-class.html#__init__,Method pyparsing.StringStart.__init__()=pyparsing.StringStart-class.html#__init__,Method pyparsing.Token.__init__()=pyparsing.Token-class.html#__init__,Method pyparsing.TokenConverter.__init__()=pyparsing.TokenConverter-class.html#__init__,Method pyparsing.White.__init__()=pyparsing.White-class.html#__init__,Method pyparsing.Word.__init__()=pyparsing.Word-class.html#__init__,Method pyparsing.WordEnd.__init__()=pyparsing.WordEnd-class.html#__init__,Method pyparsing.WordStart.__init__()=pyparsing.WordStart-class.html#__init__,Method pyparsing.ZeroOrMore.__init__()=pyparsing.ZeroOrMore-class.html#__init__"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-344', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line">\r </tt>
-<a name="Empty"></a><div id="Empty-def"><a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line">\r </tt>
-<a name="L2394"></a><tt class="py-lineno">2394</tt> <a class="py-toggle" href="#" id="Empty-toggle" onclick="return toggle('Empty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Empty-class.html">Empty</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Empty-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Empty-expanded"><a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2396"></a><tt class="py-lineno">2396</tt>  <tt class="py-line"><tt class="py-docstring">    An empty token, will always match.\r</tt> </tt>
-<a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Empty.__init__"></a><div id="Empty.__init__-def"><a name="L2398"></a><tt class="py-lineno">2398</tt> <a class="py-toggle" href="#" id="Empty.__init__-toggle" onclick="return toggle('Empty.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Empty-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Empty.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Empty.__init__-expanded"><a name="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-345" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-345', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-346', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">"Empty"</tt> </tt>\r
-<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div></div><a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line">\r </tt>
-<a name="NoMatch"></a><div id="NoMatch-def"><a name="L2404"></a><tt class="py-lineno">2404</tt>  <tt class="py-line">\r </tt>
-<a name="L2405"></a><tt class="py-lineno">2405</tt> <a class="py-toggle" href="#" id="NoMatch-toggle" onclick="return toggle('NoMatch');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.NoMatch-class.html">NoMatch</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NoMatch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NoMatch-expanded"><a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line"><tt class="py-docstring">    A token that will never match.\r</tt> </tt>
-<a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="NoMatch.__init__"></a><div id="NoMatch.__init__-def"><a name="L2409"></a><tt class="py-lineno">2409</tt> <a class="py-toggle" href="#" id="NoMatch.__init__-toggle" onclick="return toggle('NoMatch.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.NoMatch-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NoMatch.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NoMatch.__init__-expanded"><a name="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-347" class="py-name" targets="Class pyparsing.NoMatch=pyparsing.NoMatch-class.html"><a title="pyparsing.NoMatch" class="py-name" href="#" onclick="return doclink('link-347', 'NoMatch', 'link-347');">NoMatch</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-348', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2411"></a><tt class="py-lineno">2411</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">"NoMatch"</tt> </tt>\r
-<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Unmatchable token"</tt> </tt>\r
-</div><a name="L2415"></a><tt class="py-lineno">2415</tt>  <tt class="py-line">\r </tt>
-<a name="NoMatch.parseImpl"></a><div id="NoMatch.parseImpl-def"><a name="L2416"></a><tt class="py-lineno">2416</tt> <a class="py-toggle" href="#" id="NoMatch.parseImpl-toggle" onclick="return toggle('NoMatch.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.NoMatch-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NoMatch.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NoMatch.parseImpl-expanded"><a name="L2417"></a><tt class="py-lineno">2417</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-349" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-349', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line">\r </tt>
-<a name="Literal"></a><div id="Literal-def"><a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-line">\r </tt>
-<a name="L2420"></a><tt class="py-lineno">2420</tt> <a class="py-toggle" href="#" id="Literal-toggle" onclick="return toggle('Literal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Literal-class.html">Literal</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Literal-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Literal-expanded"><a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line"><tt class="py-docstring">    Token to exactly match a specified string.\r</tt> </tt>
-<a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2424"></a><tt class="py-lineno">2424</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2425"></a><tt class="py-lineno">2425</tt>  <tt class="py-line"><tt class="py-docstring">        Literal('blah').parseString('blah')  # -&gt; ['blah']\r</tt> </tt>
-<a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-line"><tt class="py-docstring">        Literal('blah').parseString('blahfooblah')  # -&gt; ['blah']\r</tt> </tt>
-<a name="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line"><tt class="py-docstring">        Literal('blah').parseString('bla')  # -&gt; Exception: Expected "blah"\r</tt> </tt>
-<a name="L2428"></a><tt class="py-lineno">2428</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line"><tt class="py-docstring">    For case-insensitive matching, use L{CaselessLiteral}.\r</tt> </tt>
-<a name="L2430"></a><tt class="py-lineno">2430</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line"><tt class="py-docstring">    For keyword matching (force word break before and after the matched string),\r</tt> </tt>
-<a name="L2432"></a><tt class="py-lineno">2432</tt>  <tt class="py-line"><tt class="py-docstring">    use L{Keyword} or L{CaselessKeyword}.\r</tt> </tt>
-<a name="L2433"></a><tt class="py-lineno">2433</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Literal.__init__"></a><div id="Literal.__init__-def"><a name="L2434"></a><tt class="py-lineno">2434</tt> <a class="py-toggle" href="#" id="Literal.__init__-toggle" onclick="return toggle('Literal.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Literal-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">matchString</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Literal.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Literal.__init__-expanded"><a name="L2435"></a><tt class="py-lineno">2435</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-350" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-350', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-351', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name" targets="Method pyparsing.Regex.compiledREtype.match()=pyparsing.Regex.compiledREtype-class.html#match"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-352', 'match', 'link-352');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt> </tt>\r
-<a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">matchString</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2438"></a><tt class="py-lineno">2438</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstMatchChar</tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2440"></a><tt class="py-lineno">2440</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"null string passed to Literal; use Empty() instead"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2442"></a><tt class="py-lineno">2442</tt>  <tt class="py-line">                            <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2443"></a><tt class="py-lineno">2443</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt id="link-353" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-353', 'Empty', 'link-237');">Empty</a></tt> </tt>\r
-<a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">'"%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-354', 'match', 'link-352');">match</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2445"></a><tt class="py-lineno">2445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2447"></a><tt class="py-lineno">2447</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L2448"></a><tt class="py-lineno">2448</tt>  <tt class="py-line">\r </tt>
-<a name="L2449"></a><tt class="py-lineno">2449</tt>  <tt class="py-line">    <tt class="py-comment"># Performance tuning: this routine gets called a *lot*</tt>\r </tt>
-<a name="L2450"></a><tt class="py-lineno">2450</tt>  <tt class="py-line">    <tt class="py-comment"># if this is a single character match string  and the first character matches,</tt>\r </tt>
-<a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line">    <tt class="py-comment"># short-circuit as quickly as possible, and avoid calling startswith</tt>\r </tt>
-<a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line">    <tt class="py-comment">#~ @profile</tt>\r </tt>
-<a name="Literal.parseImpl"></a><div id="Literal.parseImpl-def"><a name="L2453"></a><tt class="py-lineno">2453</tt> <a class="py-toggle" href="#" id="Literal.parseImpl-toggle" onclick="return toggle('Literal.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Literal-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Literal.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Literal.parseImpl-expanded"><a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstMatchChar</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2455"></a><tt class="py-lineno">2455</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-355', 'match', 'link-352');">match</a></tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-356', 'match', 'link-352');">match</a></tt> </tt>\r
-<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-357" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-357', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2458"></a><tt class="py-lineno">2458</tt>  <tt class="py-line"><tt class="py-name">_L</tt> <tt class="py-op">=</tt> <tt id="link-358" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-358', 'Literal', 'link-326');">Literal</a></tt> </tt>\r
-<a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line"><tt id="link-359" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-359', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt> <tt class="py-op">=</tt> <tt id="link-360" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-360', 'Literal', 'link-326');">Literal</a></tt> </tt>\r
-<a name="Keyword"></a><div id="Keyword-def"><a name="L2460"></a><tt class="py-lineno">2460</tt>  <tt class="py-line">\r </tt>
-<a name="L2461"></a><tt class="py-lineno">2461</tt> <a class="py-toggle" href="#" id="Keyword-toggle" onclick="return toggle('Keyword');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Keyword-class.html">Keyword</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Keyword-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Keyword-expanded"><a name="L2462"></a><tt class="py-lineno">2462</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-line"><tt class="py-docstring">    Token to exactly match a specified string as a keyword, that is, it must be\r</tt> </tt>
-<a name="L2464"></a><tt class="py-lineno">2464</tt>  <tt class="py-line"><tt class="py-docstring">    immediately followed by a non-keyword character.  Compare with C{L{Literal}}:\r</tt> </tt>
-<a name="L2465"></a><tt class="py-lineno">2465</tt>  <tt class="py-line"><tt class="py-docstring">     - C{Literal("if")} will match the leading C{'if'} in C{'ifAndOnlyIf'}.\r</tt> </tt>
-<a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line"><tt class="py-docstring">     - C{Keyword("if")} will not; it will only match the leading C{'if'} in C{'if x=1'}, or C{'if(y==2)'}\r</tt> </tt>
-<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line"><tt class="py-docstring">    Accepts two optional constructor arguments in addition to the keyword string:\r</tt> </tt>
-<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line"><tt class="py-docstring">     - C{identChars} is a string of characters that would be valid identifier characters,\r</tt> </tt>
-<a name="L2469"></a><tt class="py-lineno">2469</tt>  <tt class="py-line"><tt class="py-docstring">          defaulting to all alphanumerics + "_" and "$"\r</tt> </tt>
-<a name="L2470"></a><tt class="py-lineno">2470</tt>  <tt class="py-line"><tt class="py-docstring">     - C{caseless} allows case-insensitive matching, default is C{False}.\r</tt> </tt>
-<a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2472"></a><tt class="py-lineno">2472</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-line"><tt class="py-docstring">        Keyword("start").parseString("start")  # -&gt; ['start']\r</tt> </tt>
-<a name="L2474"></a><tt class="py-lineno">2474</tt>  <tt class="py-line"><tt class="py-docstring">        Keyword("start").parseString("starting")  # -&gt; Exception\r</tt> </tt>
-<a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2476"></a><tt class="py-lineno">2476</tt>  <tt class="py-line"><tt class="py-docstring">    For case-insensitive matching, use L{CaselessKeyword}.\r</tt> </tt>
-<a name="L2477"></a><tt class="py-lineno">2477</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line">    <tt id="link-361" class="py-name" targets="Variable pyparsing.Keyword.DEFAULT_KEYWORD_CHARS=pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS"><a title="pyparsing.Keyword.DEFAULT_KEYWORD_CHARS" class="py-name" href="#" onclick="return doclink('link-361', 'DEFAULT_KEYWORD_CHARS', 'link-361');">DEFAULT_KEYWORD_CHARS</a></tt> <tt class="py-op">=</tt> <tt id="link-362" class="py-name"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-362', 'alphanums', 'link-25');">alphanums</a></tt><tt class="py-op">+</tt><tt class="py-string">"_$"</tt> </tt>\r
-<a name="L2479"></a><tt class="py-lineno">2479</tt>  <tt class="py-line">\r </tt>
-<a name="Keyword.__init__"></a><div id="Keyword.__init__-def"><a name="L2480"></a><tt class="py-lineno">2480</tt> <a class="py-toggle" href="#" id="Keyword.__init__-toggle" onclick="return toggle('Keyword.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Keyword-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">matchString</tt><tt class="py-op">,</tt> <tt class="py-param">identChars</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">caseless</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Keyword.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyword.__init__-expanded"><a name="L2481"></a><tt class="py-lineno">2481</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-363" class="py-name" targets="Class pyparsing.Keyword=pyparsing.Keyword-class.html"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-363', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-364', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2482"></a><tt class="py-lineno">2482</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">identChars</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line">            <tt class="py-name">identChars</tt> <tt class="py-op">=</tt> <tt id="link-365" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-365', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="pyparsing.Keyword.DEFAULT_KEYWORD_CHARS" class="py-name" href="#" onclick="return doclink('link-366', 'DEFAULT_KEYWORD_CHARS', 'link-361');">DEFAULT_KEYWORD_CHARS</a></tt> </tt>\r
-<a name="L2484"></a><tt class="py-lineno">2484</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-367', 'match', 'link-352');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt> </tt>\r
-<a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">matchString</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2487"></a><tt class="py-lineno">2487</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstMatchChar</tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2488"></a><tt class="py-lineno">2488</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2489"></a><tt class="py-lineno">2489</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"null string passed to Keyword; use Empty() instead"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line">                            <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2491"></a><tt class="py-lineno">2491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">'"%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-368', 'match', 'link-352');">match</a></tt> </tt>\r
-<a name="L2492"></a><tt class="py-lineno">2492</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2494"></a><tt class="py-lineno">2494</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caseless</tt> <tt class="py-op">=</tt> <tt class="py-name">caseless</tt> </tt>\r
-<a name="L2496"></a><tt class="py-lineno">2496</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">caseless</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2497"></a><tt class="py-lineno">2497</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caselessmatch</tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2498"></a><tt class="py-lineno">2498</tt>  <tt class="py-line">            <tt class="py-name">identChars</tt> <tt class="py-op">=</tt> <tt class="py-name">identChars</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2499"></a><tt class="py-lineno">2499</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line">\r </tt>
-<a name="Keyword.parseImpl"></a><div id="Keyword.parseImpl-def"><a name="L2501"></a><tt class="py-lineno">2501</tt> <a class="py-toggle" href="#" id="Keyword.parseImpl-toggle" onclick="return toggle('Keyword.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Keyword-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Keyword.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyword.parseImpl-expanded"><a name="L2502"></a><tt class="py-lineno">2502</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caseless</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2503"></a><tt class="py-lineno">2503</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caselessmatch</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2504"></a><tt class="py-lineno">2504</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt class="py-name">loc</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-369', 'match', 'link-352');">match</a></tt> </tt>\r
-<a name="L2507"></a><tt class="py-lineno">2507</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2508"></a><tt class="py-lineno">2508</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstMatchChar</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2509"></a><tt class="py-lineno">2509</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-370', 'match', 'link-352');">match</a></tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2511"></a><tt class="py-lineno">2511</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">loc</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-371" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-371', 'match', 'link-352');">match</a></tt> </tt>\r
-<a name="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-372" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-372', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2514"></a><tt class="py-lineno">2514</tt>  <tt class="py-line">\r </tt>
-<a name="Keyword.copy"></a><div id="Keyword.copy-def"><a name="L2515"></a><tt class="py-lineno">2515</tt> <a class="py-toggle" href="#" id="Keyword.copy-toggle" onclick="return toggle('Keyword.copy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Keyword-class.html#copy">copy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Keyword.copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyword.copy-expanded"><a name="L2516"></a><tt class="py-lineno">2516</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-373" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-373', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-374', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2517"></a><tt class="py-lineno">2517</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt> <tt class="py-op">=</tt> <tt id="link-375" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-375', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="pyparsing.Keyword.DEFAULT_KEYWORD_CHARS" class="py-name" href="#" onclick="return doclink('link-376', 'DEFAULT_KEYWORD_CHARS', 'link-361');">DEFAULT_KEYWORD_CHARS</a></tt> </tt>\r
-<a name="L2518"></a><tt class="py-lineno">2518</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">c</tt> </tt>\r
-</div><a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-line">\r </tt>
-<a name="L2520"></a><tt class="py-lineno">2520</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="Keyword.setDefaultKeywordChars"></a><div id="Keyword.setDefaultKeywordChars-def"><a name="L2521"></a><tt class="py-lineno">2521</tt> <a class="py-toggle" href="#" id="Keyword.setDefaultKeywordChars-toggle" onclick="return toggle('Keyword.setDefaultKeywordChars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Keyword-class.html#setDefaultKeywordChars">setDefaultKeywordChars</a><tt class="py-op">(</tt> <tt class="py-param">chars</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Keyword.setDefaultKeywordChars-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyword.setDefaultKeywordChars-expanded"><a name="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line">        <tt class="py-docstring">"""Overrides the default Keyword chars\r</tt> </tt>
-<a name="L2523"></a><tt class="py-lineno">2523</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line">        <tt id="link-377" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-377', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="pyparsing.Keyword.DEFAULT_KEYWORD_CHARS" class="py-name" href="#" onclick="return doclink('link-378', 'DEFAULT_KEYWORD_CHARS', 'link-361');">DEFAULT_KEYWORD_CHARS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">chars</tt> </tt>\r
-</div></div><a name="L2525"></a><tt class="py-lineno">2525</tt>  <tt class="py-line">\r </tt>
-<a name="CaselessLiteral"></a><div id="CaselessLiteral-def"><a name="L2526"></a><tt class="py-lineno">2526</tt> <a class="py-toggle" href="#" id="CaselessLiteral-toggle" onclick="return toggle('CaselessLiteral');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.CaselessLiteral-class.html">CaselessLiteral</a><tt class="py-op">(</tt><tt class="py-base-class">Literal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessLiteral-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CaselessLiteral-expanded"><a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-line"><tt class="py-docstring">    Token to match a specified string, ignoring case of letters.\r</tt> </tt>
-<a name="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line"><tt class="py-docstring">    Note: the matched results will always be in the case of the given\r</tt> </tt>
-<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line"><tt class="py-docstring">    match string, NOT the case of the input text.\r</tt> </tt>
-<a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2532"></a><tt class="py-lineno">2532</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(CaselessLiteral("CMD")).parseString("cmd CMD Cmd10") # -&gt; ['CMD', 'CMD', 'CMD']\r</tt> </tt>
-<a name="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2535"></a><tt class="py-lineno">2535</tt>  <tt class="py-line"><tt class="py-docstring">    (Contrast with example for L{CaselessKeyword}.)\r</tt> </tt>
-<a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="CaselessLiteral.__init__"></a><div id="CaselessLiteral.__init__-def"><a name="L2537"></a><tt class="py-lineno">2537</tt> <a class="py-toggle" href="#" id="CaselessLiteral.__init__-toggle" onclick="return toggle('CaselessLiteral.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CaselessLiteral-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">matchString</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessLiteral.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CaselessLiteral.__init__-expanded"><a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-379" class="py-name" targets="Class pyparsing.CaselessLiteral=pyparsing.CaselessLiteral-class.html"><a title="pyparsing.CaselessLiteral" class="py-name" href="#" onclick="return doclink('link-379', 'CaselessLiteral', 'link-379');">CaselessLiteral</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-380', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">matchString</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2539"></a><tt class="py-lineno">2539</tt>  <tt class="py-line">        <tt class="py-comment"># Preserve the defining literal.</tt>\r </tt>
-<a name="L2540"></a><tt class="py-lineno">2540</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">returnString</tt> <tt class="py-op">=</tt> <tt class="py-name">matchString</tt> </tt>\r
-<a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">"'%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">returnString</tt> </tt>\r
-<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-</div><a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-line">\r </tt>
-<a name="CaselessLiteral.parseImpl"></a><div id="CaselessLiteral.parseImpl-def"><a name="L2544"></a><tt class="py-lineno">2544</tt> <a class="py-toggle" href="#" id="CaselessLiteral.parseImpl-toggle" onclick="return toggle('CaselessLiteral.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CaselessLiteral-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessLiteral.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CaselessLiteral.parseImpl-expanded"><a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-381', 'match', 'link-352');">match</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">returnString</tt> </tt>\r
-<a name="L2547"></a><tt class="py-lineno">2547</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-382" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-382', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line">\r </tt>
-<a name="CaselessKeyword"></a><div id="CaselessKeyword-def"><a name="L2549"></a><tt class="py-lineno">2549</tt> <a class="py-toggle" href="#" id="CaselessKeyword-toggle" onclick="return toggle('CaselessKeyword');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.CaselessKeyword-class.html">CaselessKeyword</a><tt class="py-op">(</tt><tt class="py-base-class">Keyword</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessKeyword-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CaselessKeyword-expanded"><a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line"><tt class="py-docstring">    Caseless version of L{Keyword}.\r</tt> </tt>
-<a name="L2552"></a><tt class="py-lineno">2552</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2553"></a><tt class="py-lineno">2553</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(CaselessKeyword("CMD")).parseString("cmd CMD Cmd10") # -&gt; ['CMD', 'CMD']\r</tt> </tt>
-<a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2556"></a><tt class="py-lineno">2556</tt>  <tt class="py-line"><tt class="py-docstring">    (Contrast with example for L{CaselessLiteral}.)\r</tt> </tt>
-<a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="CaselessKeyword.__init__"></a><div id="CaselessKeyword.__init__-def"><a name="L2558"></a><tt class="py-lineno">2558</tt> <a class="py-toggle" href="#" id="CaselessKeyword.__init__-toggle" onclick="return toggle('CaselessKeyword.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CaselessKeyword-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">matchString</tt><tt class="py-op">,</tt> <tt class="py-param">identChars</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessKeyword.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CaselessKeyword.__init__-expanded"><a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-383" class="py-name" targets="Class pyparsing.CaselessKeyword=pyparsing.CaselessKeyword-class.html"><a title="pyparsing.CaselessKeyword" class="py-name" href="#" onclick="return doclink('link-383', 'CaselessKeyword', 'link-383');">CaselessKeyword</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-384', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">matchString</tt><tt class="py-op">,</tt> <tt class="py-name">identChars</tt><tt class="py-op">,</tt> <tt class="py-name">caseless</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-line">\r </tt>
-<a name="CaselessKeyword.parseImpl"></a><div id="CaselessKeyword.parseImpl-def"><a name="L2561"></a><tt class="py-lineno">2561</tt> <a class="py-toggle" href="#" id="CaselessKeyword.parseImpl-toggle" onclick="return toggle('CaselessKeyword.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CaselessKeyword-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CaselessKeyword.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CaselessKeyword.parseImpl-expanded"><a name="L2562"></a><tt class="py-lineno">2562</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caselessmatch</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">             <tt class="py-op">(</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> <tt class="py-keyword">or</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">identChars</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2564"></a><tt class="py-lineno">2564</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-385', 'match', 'link-352');">match</a></tt> </tt>\r
-<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-386" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-386', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2566"></a><tt class="py-lineno">2566</tt>  <tt class="py-line">\r </tt>
-<a name="CloseMatch"></a><div id="CloseMatch-def"><a name="L2567"></a><tt class="py-lineno">2567</tt> <a class="py-toggle" href="#" id="CloseMatch-toggle" onclick="return toggle('CloseMatch');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.CloseMatch-class.html">CloseMatch</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CloseMatch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CloseMatch-expanded"><a name="L2568"></a><tt class="py-lineno">2568</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2569"></a><tt class="py-lineno">2569</tt>  <tt class="py-line"><tt class="py-docstring">    A variation on L{Literal} which matches "close" matches, that is,\r</tt> </tt>
-<a name="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-line"><tt class="py-docstring">    strings with at most 'n' mismatching characters. C{CloseMatch} takes parameters:\r</tt> </tt>
-<a name="L2571"></a><tt class="py-lineno">2571</tt>  <tt class="py-line"><tt class="py-docstring">     - C{match_string} - string to be matched\r</tt> </tt>
-<a name="L2572"></a><tt class="py-lineno">2572</tt>  <tt class="py-line"><tt class="py-docstring">     - C{maxMismatches} - (C{default=1}) maximum number of mismatches allowed to count as a match\r</tt> </tt>
-<a name="L2573"></a><tt class="py-lineno">2573</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-line"><tt class="py-docstring">    The results from a successful parse will contain the matched text from the input string and the following named results:\r</tt> </tt>
-<a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line"><tt class="py-docstring">     - C{mismatches} - a list of the positions within the match_string where mismatches were found\r</tt> </tt>
-<a name="L2576"></a><tt class="py-lineno">2576</tt>  <tt class="py-line"><tt class="py-docstring">     - C{original} - the original match_string used to compare against the input string\r</tt> </tt>
-<a name="L2577"></a><tt class="py-lineno">2577</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2578"></a><tt class="py-lineno">2578</tt>  <tt class="py-line"><tt class="py-docstring">    If C{mismatches} is an empty list, then the match was an exact match.\r</tt> </tt>
-<a name="L2579"></a><tt class="py-lineno">2579</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2581"></a><tt class="py-lineno">2581</tt>  <tt class="py-line"><tt class="py-docstring">        patt = CloseMatch("ATCATCGAATGGA")\r</tt> </tt>
-<a name="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line"><tt class="py-docstring">        patt.parseString("ATCATCGAAXGGA") # -&gt; (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']})\r</tt> </tt>
-<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line"><tt class="py-docstring">        patt.parseString("ATCAXCGAAXGGA") # -&gt; Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1)\r</tt> </tt>
-<a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2585"></a><tt class="py-lineno">2585</tt>  <tt class="py-line"><tt class="py-docstring">        # exact match\r</tt> </tt>
-<a name="L2586"></a><tt class="py-lineno">2586</tt>  <tt class="py-line"><tt class="py-docstring">        patt.parseString("ATCATCGAATGGA") # -&gt; (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']})\r</tt> </tt>
-<a name="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2588"></a><tt class="py-lineno">2588</tt>  <tt class="py-line"><tt class="py-docstring">        # close match allowing up to 2 mismatches\r</tt> </tt>
-<a name="L2589"></a><tt class="py-lineno">2589</tt>  <tt class="py-line"><tt class="py-docstring">        patt = CloseMatch("ATCATCGAATGGA", maxMismatches=2)\r</tt> </tt>
-<a name="L2590"></a><tt class="py-lineno">2590</tt>  <tt class="py-line"><tt class="py-docstring">        patt.parseString("ATCAXCGAAXGGA") # -&gt; (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']})\r</tt> </tt>
-<a name="L2591"></a><tt class="py-lineno">2591</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="CloseMatch.__init__"></a><div id="CloseMatch.__init__-def"><a name="L2592"></a><tt class="py-lineno">2592</tt> <a class="py-toggle" href="#" id="CloseMatch.__init__-toggle" onclick="return toggle('CloseMatch.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CloseMatch-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">match_string</tt><tt class="py-op">,</tt> <tt class="py-param">maxMismatches</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CloseMatch.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CloseMatch.__init__-expanded"><a name="L2593"></a><tt class="py-lineno">2593</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-387" class="py-name" targets="Class pyparsing.CloseMatch=pyparsing.CloseMatch-class.html"><a title="pyparsing.CloseMatch" class="py-name" href="#" onclick="return doclink('link-387', 'CloseMatch', 'link-387');">CloseMatch</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-388', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2594"></a><tt class="py-lineno">2594</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">match_string</tt> </tt>\r
-<a name="L2595"></a><tt class="py-lineno">2595</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt> <tt class="py-op">=</tt> <tt class="py-name">match_string</tt> </tt>\r
-<a name="L2596"></a><tt class="py-lineno">2596</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxMismatches</tt> <tt class="py-op">=</tt> <tt class="py-name">maxMismatches</tt> </tt>\r
-<a name="L2597"></a><tt class="py-lineno">2597</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected %r (with up to %d mismatches)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxMismatches</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2598"></a><tt class="py-lineno">2598</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2599"></a><tt class="py-lineno">2599</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L2600"></a><tt class="py-lineno">2600</tt>  <tt class="py-line">\r </tt>
-<a name="CloseMatch.parseImpl"></a><div id="CloseMatch.parseImpl-def"><a name="L2601"></a><tt class="py-lineno">2601</tt> <a class="py-toggle" href="#" id="CloseMatch.parseImpl-toggle" onclick="return toggle('CloseMatch.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CloseMatch-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CloseMatch.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CloseMatch.parseImpl-expanded"><a name="L2602"></a><tt class="py-lineno">2602</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L2603"></a><tt class="py-lineno">2603</tt>  <tt class="py-line">        <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2604"></a><tt class="py-lineno">2604</tt>  <tt class="py-line">        <tt class="py-name">maxloc</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2605"></a><tt class="py-lineno">2605</tt>  <tt class="py-line">\r </tt>
-<a name="L2606"></a><tt class="py-lineno">2606</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">maxloc</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">instrlen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2607"></a><tt class="py-lineno">2607</tt>  <tt class="py-line">            <tt class="py-name">match_string</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt> </tt>\r
-<a name="L2608"></a><tt class="py-lineno">2608</tt>  <tt class="py-line">            <tt class="py-name">match_stringloc</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L2609"></a><tt class="py-lineno">2609</tt>  <tt class="py-line">            <tt class="py-name">mismatches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2610"></a><tt class="py-lineno">2610</tt>  <tt class="py-line">            <tt class="py-name">maxMismatches</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxMismatches</tt> </tt>\r
-<a name="L2611"></a><tt class="py-lineno">2611</tt>  <tt class="py-line">\r </tt>
-<a name="L2612"></a><tt class="py-lineno">2612</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">match_stringloc</tt><tt class="py-op">,</tt><tt class="py-name">s_m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">:</tt><tt class="py-name">maxloc</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2613"></a><tt class="py-lineno">2613</tt>  <tt class="py-line">                <tt class="py-name">src</tt><tt class="py-op">,</tt><tt class="py-name">mat</tt> <tt class="py-op">=</tt> <tt class="py-name">s_m</tt> </tt>\r
-<a name="L2614"></a><tt class="py-lineno">2614</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">src</tt> <tt class="py-op">!=</tt> <tt class="py-name">mat</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2615"></a><tt class="py-lineno">2615</tt>  <tt class="py-line">                    <tt class="py-name">mismatches</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-389', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">match_stringloc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2616"></a><tt class="py-lineno">2616</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">mismatches</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxMismatches</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2617"></a><tt class="py-lineno">2617</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> </tt>\r
-<a name="L2618"></a><tt class="py-lineno">2618</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2619"></a><tt class="py-lineno">2619</tt>  <tt class="py-line">                <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">match_stringloc</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L2620"></a><tt class="py-lineno">2620</tt>  <tt class="py-line">                <tt class="py-name">results</tt> <tt class="py-op">=</tt> <tt id="link-390" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-390', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2621"></a><tt class="py-lineno">2621</tt>  <tt class="py-line">                <tt class="py-name">results</tt><tt class="py-op">[</tt><tt class="py-string">'original'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">match_string</tt> </tt>\r
-<a name="L2622"></a><tt class="py-lineno">2622</tt>  <tt class="py-line">                <tt class="py-name">results</tt><tt class="py-op">[</tt><tt class="py-string">'mismatches'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mismatches</tt> </tt>\r
-<a name="L2623"></a><tt class="py-lineno">2623</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">results</tt> </tt>\r
-<a name="L2624"></a><tt class="py-lineno">2624</tt>  <tt class="py-line">\r </tt>
-<a name="L2625"></a><tt class="py-lineno">2625</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-391" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-391', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2626"></a><tt class="py-lineno">2626</tt>  <tt class="py-line">\r </tt>
-<a name="Word"></a><div id="Word-def"><a name="L2627"></a><tt class="py-lineno">2627</tt>  <tt class="py-line">\r </tt>
-<a name="L2628"></a><tt class="py-lineno">2628</tt> <a class="py-toggle" href="#" id="Word-toggle" onclick="return toggle('Word');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Word-class.html">Word</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Word-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Word-expanded"><a name="L2629"></a><tt class="py-lineno">2629</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2630"></a><tt class="py-lineno">2630</tt>  <tt class="py-line"><tt class="py-docstring">    Token for matching words composed of allowed character sets.\r</tt> </tt>
-<a name="L2631"></a><tt class="py-lineno">2631</tt>  <tt class="py-line"><tt class="py-docstring">    Defined with string containing all allowed initial characters,\r</tt> </tt>
-<a name="L2632"></a><tt class="py-lineno">2632</tt>  <tt class="py-line"><tt class="py-docstring">    an optional string containing allowed body characters (if omitted,\r</tt> </tt>
-<a name="L2633"></a><tt class="py-lineno">2633</tt>  <tt class="py-line"><tt class="py-docstring">    defaults to the initial character set), and an optional minimum,\r</tt> </tt>
-<a name="L2634"></a><tt class="py-lineno">2634</tt>  <tt class="py-line"><tt class="py-docstring">    maximum, and/or exact length.  The default value for C{min} is 1 (a\r</tt> </tt>
-<a name="L2635"></a><tt class="py-lineno">2635</tt>  <tt class="py-line"><tt class="py-docstring">    minimum value &lt; 1 is not valid); the default values for C{max} and C{exact}\r</tt> </tt>
-<a name="L2636"></a><tt class="py-lineno">2636</tt>  <tt class="py-line"><tt class="py-docstring">    are 0, meaning no maximum or exact length restriction. An optional\r</tt> </tt>
-<a name="L2637"></a><tt class="py-lineno">2637</tt>  <tt class="py-line"><tt class="py-docstring">    C{excludeChars} parameter can list characters that might be found in\r</tt> </tt>
-<a name="L2638"></a><tt class="py-lineno">2638</tt>  <tt class="py-line"><tt class="py-docstring">    the input C{bodyChars} string; useful to define a word of all printables\r</tt> </tt>
-<a name="L2639"></a><tt class="py-lineno">2639</tt>  <tt class="py-line"><tt class="py-docstring">    except for one or two characters, for instance.\r</tt> </tt>
-<a name="L2640"></a><tt class="py-lineno">2640</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2641"></a><tt class="py-lineno">2641</tt>  <tt class="py-line"><tt class="py-docstring">    L{srange} is useful for defining custom character set strings for defining\r</tt> </tt>
-<a name="L2642"></a><tt class="py-lineno">2642</tt>  <tt class="py-line"><tt class="py-docstring">    C{Word} expressions, using range notation from regular expression character sets.\r</tt> </tt>
-<a name="L2643"></a><tt class="py-lineno">2643</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2644"></a><tt class="py-lineno">2644</tt>  <tt class="py-line"><tt class="py-docstring">    A common mistake is to use C{Word} to match a specific literal string, as in\r</tt> </tt>
-<a name="L2645"></a><tt class="py-lineno">2645</tt>  <tt class="py-line"><tt class="py-docstring">    C{Word("Address")}. Remember that C{Word} uses the string argument to define\r</tt> </tt>
-<a name="L2646"></a><tt class="py-lineno">2646</tt>  <tt class="py-line"><tt class="py-docstring">    I{sets} of matchable characters. This expression would match "Add", "AAA",\r</tt> </tt>
-<a name="L2647"></a><tt class="py-lineno">2647</tt>  <tt class="py-line"><tt class="py-docstring">    "dAred", or any other word made up of the characters 'A', 'd', 'r', 'e', and 's'.\r</tt> </tt>
-<a name="L2648"></a><tt class="py-lineno">2648</tt>  <tt class="py-line"><tt class="py-docstring">    To match an exact literal string, use L{Literal} or L{Keyword}.\r</tt> </tt>
-<a name="L2649"></a><tt class="py-lineno">2649</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2650"></a><tt class="py-lineno">2650</tt>  <tt class="py-line"><tt class="py-docstring">    pyparsing includes helper strings for building Words:\r</tt> </tt>
-<a name="L2651"></a><tt class="py-lineno">2651</tt>  <tt class="py-line"><tt class="py-docstring">     - L{alphas}\r</tt> </tt>
-<a name="L2652"></a><tt class="py-lineno">2652</tt>  <tt class="py-line"><tt class="py-docstring">     - L{nums}\r</tt> </tt>
-<a name="L2653"></a><tt class="py-lineno">2653</tt>  <tt class="py-line"><tt class="py-docstring">     - L{alphanums}\r</tt> </tt>
-<a name="L2654"></a><tt class="py-lineno">2654</tt>  <tt class="py-line"><tt class="py-docstring">     - L{hexnums}\r</tt> </tt>
-<a name="L2655"></a><tt class="py-lineno">2655</tt>  <tt class="py-line"><tt class="py-docstring">     - L{alphas8bit} (alphabetic characters in ASCII range 128-255 - accented, tilded, umlauted, etc.)\r</tt> </tt>
-<a name="L2656"></a><tt class="py-lineno">2656</tt>  <tt class="py-line"><tt class="py-docstring">     - L{punc8bit} (non-alphabetic characters in ASCII range 128-255 - currency, symbols, superscripts, diacriticals, etc.)\r</tt> </tt>
-<a name="L2657"></a><tt class="py-lineno">2657</tt>  <tt class="py-line"><tt class="py-docstring">     - L{printables} (any non-whitespace character)\r</tt> </tt>
-<a name="L2658"></a><tt class="py-lineno">2658</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2659"></a><tt class="py-lineno">2659</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2660"></a><tt class="py-lineno">2660</tt>  <tt class="py-line"><tt class="py-docstring">        # a word composed of digits\r</tt> </tt>
-<a name="L2661"></a><tt class="py-lineno">2661</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9"))\r</tt> </tt>
-<a name="L2662"></a><tt class="py-lineno">2662</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2663"></a><tt class="py-lineno">2663</tt>  <tt class="py-line"><tt class="py-docstring">        # a word with a leading capital, and zero or more lowercase\r</tt> </tt>
-<a name="L2664"></a><tt class="py-lineno">2664</tt>  <tt class="py-line"><tt class="py-docstring">        capital_word = Word(alphas.upper(), alphas.lower())\r</tt> </tt>
-<a name="L2665"></a><tt class="py-lineno">2665</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2666"></a><tt class="py-lineno">2666</tt>  <tt class="py-line"><tt class="py-docstring">        # hostnames are alphanumeric, with leading alpha, and '-'\r</tt> </tt>
-<a name="L2667"></a><tt class="py-lineno">2667</tt>  <tt class="py-line"><tt class="py-docstring">        hostname = Word(alphas, alphanums+'-')\r</tt> </tt>
-<a name="L2668"></a><tt class="py-lineno">2668</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2669"></a><tt class="py-lineno">2669</tt>  <tt class="py-line"><tt class="py-docstring">        # roman numeral (not a strict parser, accepts invalid mix of characters)\r</tt> </tt>
-<a name="L2670"></a><tt class="py-lineno">2670</tt>  <tt class="py-line"><tt class="py-docstring">        roman = Word("IVXLCDM")\r</tt> </tt>
-<a name="L2671"></a><tt class="py-lineno">2671</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2672"></a><tt class="py-lineno">2672</tt>  <tt class="py-line"><tt class="py-docstring">        # any string of non-whitespace characters, except for ','\r</tt> </tt>
-<a name="L2673"></a><tt class="py-lineno">2673</tt>  <tt class="py-line"><tt class="py-docstring">        csv_value = Word(printables, excludeChars=",")\r</tt> </tt>
-<a name="L2674"></a><tt class="py-lineno">2674</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Word.__init__"></a><div id="Word.__init__-def"><a name="L2675"></a><tt class="py-lineno">2675</tt> <a class="py-toggle" href="#" id="Word.__init__-toggle" onclick="return toggle('Word.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Word-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">initChars</tt><tt class="py-op">,</tt> <tt class="py-param">bodyChars</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">min</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">max</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">exact</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">asKeyword</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">excludeChars</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Word.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Word.__init__-expanded"><a name="L2676"></a><tt class="py-lineno">2676</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-392" class="py-name" targets="Class pyparsing.Word=pyparsing.Word-class.html"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-392', 'Word', 'link-392');">Word</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-393', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2677"></a><tt class="py-lineno">2677</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">excludeChars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2678"></a><tt class="py-lineno">2678</tt>  <tt class="py-line">            <tt class="py-name">initChars</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">initChars</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">excludeChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2679"></a><tt class="py-lineno">2679</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">bodyChars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2680"></a><tt class="py-lineno">2680</tt>  <tt class="py-line">                <tt class="py-name">bodyChars</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bodyChars</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">excludeChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2681"></a><tt class="py-lineno">2681</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt> <tt class="py-op">=</tt> <tt class="py-name">initChars</tt> </tt>\r
-<a name="L2682"></a><tt class="py-lineno">2682</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">initChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2683"></a><tt class="py-lineno">2683</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bodyChars</tt> <tt class="py-op">:</tt> </tt>\r
-<a name="L2684"></a><tt class="py-lineno">2684</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt> <tt class="py-op">=</tt> <tt class="py-name">bodyChars</tt> </tt>\r
-<a name="L2685"></a><tt class="py-lineno">2685</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">bodyChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2686"></a><tt class="py-lineno">2686</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2687"></a><tt class="py-lineno">2687</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt> <tt class="py-op">=</tt> <tt class="py-name">initChars</tt> </tt>\r
-<a name="L2688"></a><tt class="py-lineno">2688</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">initChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2689"></a><tt class="py-lineno">2689</tt>  <tt class="py-line">\r </tt>
-<a name="L2690"></a><tt class="py-lineno">2690</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxSpecified</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L2691"></a><tt class="py-lineno">2691</tt>  <tt class="py-line">\r </tt>
-<a name="L2692"></a><tt class="py-lineno">2692</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">min</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2693"></a><tt class="py-lineno">2693</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot specify a minimum length &lt; 1; use Optional(Word()) if zero-length word is permitted"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2694"></a><tt class="py-lineno">2694</tt>  <tt class="py-line">\r </tt>
-<a name="L2695"></a><tt class="py-lineno">2695</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt> </tt>\r
-<a name="L2696"></a><tt class="py-lineno">2696</tt>  <tt class="py-line">\r </tt>
-<a name="L2697"></a><tt class="py-lineno">2697</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2698"></a><tt class="py-lineno">2698</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt> </tt>\r
-<a name="L2699"></a><tt class="py-lineno">2699</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2700"></a><tt class="py-lineno">2700</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt id="link-394" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-394', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> </tt>\r
-<a name="L2701"></a><tt class="py-lineno">2701</tt>  <tt class="py-line">\r </tt>
-<a name="L2702"></a><tt class="py-lineno">2702</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">exact</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2703"></a><tt class="py-lineno">2703</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-<a name="L2704"></a><tt class="py-lineno">2704</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-<a name="L2705"></a><tt class="py-lineno">2705</tt>  <tt class="py-line">\r </tt>
-<a name="L2706"></a><tt class="py-lineno">2706</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2707"></a><tt class="py-lineno">2707</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L2708"></a><tt class="py-lineno">2708</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2709"></a><tt class="py-lineno">2709</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asKeyword</tt> <tt class="py-op">=</tt> <tt class="py-name">asKeyword</tt> </tt>\r
-<a name="L2710"></a><tt class="py-lineno">2710</tt>  <tt class="py-line">\r </tt>
-<a name="L2711"></a><tt class="py-lineno">2711</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">' '</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">min</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">max</tt><tt class="py-op">==</tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">exact</tt><tt class="py-op">==</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2712"></a><tt class="py-lineno">2712</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2713"></a><tt class="py-lineno">2713</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-string">"[%s]+"</tt> <tt class="py-op">%</tt> <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2714"></a><tt class="py-lineno">2714</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2715"></a><tt class="py-lineno">2715</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s[%s]*"</tt> <tt class="py-op">%</tt> \\r </tt>
-<a name="L2716"></a><tt class="py-lineno">2716</tt>  <tt class="py-line">                                      <tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2717"></a><tt class="py-lineno">2717</tt>  <tt class="py-line">                                      <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2718"></a><tt class="py-lineno">2718</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2719"></a><tt class="py-lineno">2719</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-string">"[%s][%s]*"</tt> <tt class="py-op">%</tt> \\r </tt>
-<a name="L2720"></a><tt class="py-lineno">2720</tt>  <tt class="py-line">                                      <tt class="py-op">(</tt><tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2721"></a><tt class="py-lineno">2721</tt>  <tt class="py-line">                                      <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2722"></a><tt class="py-lineno">2722</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asKeyword</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2723"></a><tt class="py-lineno">2723</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-string">r"\b"</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt><tt class="py-op">+</tt><tt class="py-string">r"\b"</tt> </tt>\r
-<a name="L2724"></a><tt class="py-lineno">2724</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2725"></a><tt class="py-lineno">2725</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2726"></a><tt class="py-lineno">2726</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2727"></a><tt class="py-lineno">2727</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-</div><a name="L2728"></a><tt class="py-lineno">2728</tt>  <tt class="py-line">\r </tt>
-<a name="Word.parseImpl"></a><div id="Word.parseImpl-def"><a name="L2729"></a><tt class="py-lineno">2729</tt> <a class="py-toggle" href="#" id="Word.parseImpl-toggle" onclick="return toggle('Word.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Word-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Word.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Word.parseImpl-expanded"><a name="L2730"></a><tt class="py-lineno">2730</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2731"></a><tt class="py-lineno">2731</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-395', 'match', 'link-352');">match</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2732"></a><tt class="py-lineno">2732</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2733"></a><tt class="py-lineno">2733</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-396" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-396', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2734"></a><tt class="py-lineno">2734</tt>  <tt class="py-line">\r </tt>
-<a name="L2735"></a><tt class="py-lineno">2735</tt>  <tt class="py-line">            <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2736"></a><tt class="py-lineno">2736</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2737"></a><tt class="py-lineno">2737</tt>  <tt class="py-line">\r </tt>
-<a name="L2738"></a><tt class="py-lineno">2738</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt> <tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initChars</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2739"></a><tt class="py-lineno">2739</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-397" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-397', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2740"></a><tt class="py-lineno">2740</tt>  <tt class="py-line">\r </tt>
-<a name="L2741"></a><tt class="py-lineno">2741</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L2742"></a><tt class="py-lineno">2742</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L2743"></a><tt class="py-lineno">2743</tt>  <tt class="py-line">        <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2744"></a><tt class="py-lineno">2744</tt>  <tt class="py-line">        <tt class="py-name">bodychars</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyChars</tt> </tt>\r
-<a name="L2745"></a><tt class="py-lineno">2745</tt>  <tt class="py-line">        <tt class="py-name">maxloc</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> </tt>\r
-<a name="L2746"></a><tt class="py-lineno">2746</tt>  <tt class="py-line">        <tt class="py-name">maxloc</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> <tt class="py-name">maxloc</tt><tt class="py-op">,</tt> <tt class="py-name">instrlen</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2747"></a><tt class="py-lineno">2747</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">maxloc</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bodychars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2748"></a><tt class="py-lineno">2748</tt>  <tt class="py-line">            <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L2749"></a><tt class="py-lineno">2749</tt>  <tt class="py-line">\r </tt>
-<a name="L2750"></a><tt class="py-lineno">2750</tt>  <tt class="py-line">        <tt class="py-name">throwException</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2751"></a><tt class="py-lineno">2751</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">-</tt> <tt class="py-name">start</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2752"></a><tt class="py-lineno">2752</tt>  <tt class="py-line">            <tt class="py-name">throwException</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2753"></a><tt class="py-lineno">2753</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxSpecified</tt> <tt class="py-keyword">and</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">instrlen</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bodychars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2754"></a><tt class="py-lineno">2754</tt>  <tt class="py-line">            <tt class="py-name">throwException</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2755"></a><tt class="py-lineno">2755</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asKeyword</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2756"></a><tt class="py-lineno">2756</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">start</tt><tt class="py-op">&gt;</tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bodychars</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">&lt;</tt><tt class="py-name">instrlen</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bodychars</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2757"></a><tt class="py-lineno">2757</tt>  <tt class="py-line">                <tt class="py-name">throwException</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2758"></a><tt class="py-lineno">2758</tt>  <tt class="py-line">\r </tt>
-<a name="L2759"></a><tt class="py-lineno">2759</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">throwException</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2760"></a><tt class="py-lineno">2760</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-398" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-398', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2761"></a><tt class="py-lineno">2761</tt>  <tt class="py-line">\r </tt>
-<a name="L2762"></a><tt class="py-lineno">2762</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L2763"></a><tt class="py-lineno">2763</tt>  <tt class="py-line">\r </tt>
-<a name="Word.__str__"></a><div id="Word.__str__-def"><a name="L2764"></a><tt class="py-lineno">2764</tt> <a class="py-toggle" href="#" id="Word.__str__-toggle" onclick="return toggle('Word.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Word-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Word.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Word.__str__-expanded"><a name="L2765"></a><tt class="py-lineno">2765</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2766"></a><tt class="py-lineno">2766</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-399" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-399', 'Word', 'link-392');">Word</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name" targets="Method pyparsing.And.__str__()=pyparsing.And-class.html#__str__,Method pyparsing.CharsNotIn.__str__()=pyparsing.CharsNotIn-class.html#__str__,Method pyparsing.Each.__str__()=pyparsing.Each-class.html#__str__,Method pyparsing.Forward.__str__()=pyparsing.Forward-class.html#__str__,Method pyparsing.MatchFirst.__str__()=pyparsing.MatchFirst-class.html#__str__,Method pyparsing.NotAny.__str__()=pyparsing.NotAny-class.html#__str__,Method pyparsing.OneOrMore.__str__()=pyparsing.OneOrMore-class.html#__str__,Method pyparsing.Optional.__str__()=pyparsing.Optional-class.html#__str__,Method pyparsing.Or.__str__()=pyparsing.Or-class.html#__str__,Method pyparsing.ParseBaseException.__str__()=pyparsing.ParseBaseException-class.html#__str__,Method pyparsing.ParseElementEnhance.__str__()=pyparsing.ParseElementEnhance-class.html#__str__,Method pyparsing.ParseExpression.__str__()=pyparsing.ParseExpression-class.html#__str__,Method pyparsing.ParseResults.__str__()=pyparsing.ParseResults-class.html#__str__,Method pyparsing.ParserElement.__str__()=pyparsing.ParserElement-class.html#__str__,Method pyparsing.QuotedString.__str__()=pyparsing.QuotedString-class.html#__str__,Method pyparsing.RecursiveGrammarException.__str__()=pyparsing.RecursiveGrammarException-class.html#__str__,Method pyparsing.Regex.__str__()=pyparsing.Regex-class.html#__str__,Method pyparsing.Word.__str__()=pyparsing.Word-class.html#__str__,Method pyparsing.ZeroOrMore.__str__()=pyparsing.ZeroOrMore-class.html#__str__"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-400', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2767"></a><tt class="py-lineno">2767</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2768"></a><tt class="py-lineno">2768</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L2769"></a><tt class="py-lineno">2769</tt>  <tt class="py-line">\r </tt>
-<a name="L2770"></a><tt class="py-lineno">2770</tt>  <tt class="py-line">\r </tt>
-<a name="L2771"></a><tt class="py-lineno">2771</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2772"></a><tt class="py-lineno">2772</tt>  <tt class="py-line">\r </tt>
-<a name="L2773"></a><tt class="py-lineno">2773</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">charsAsStr</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2774"></a><tt class="py-lineno">2774</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2775"></a><tt class="py-lineno">2775</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">"..."</tt> </tt>\r
-<a name="L2776"></a><tt class="py-lineno">2776</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2777"></a><tt class="py-lineno">2777</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>\r
-</div><a name="L2778"></a><tt class="py-lineno">2778</tt>  <tt class="py-line">\r </tt>
-<a name="L2779"></a><tt class="py-lineno">2779</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2780"></a><tt class="py-lineno">2780</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"W:(%s,%s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">charsAsStr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">charsAsStr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bodyCharsOrig</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2781"></a><tt class="py-lineno">2781</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2782"></a><tt class="py-lineno">2782</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"W:(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">charsAsStr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2783"></a><tt class="py-lineno">2783</tt>  <tt class="py-line">\r </tt>
-<a name="L2784"></a><tt class="py-lineno">2784</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L2785"></a><tt class="py-lineno">2785</tt>  <tt class="py-line">\r </tt>
-<a name="Char"></a><div id="Char-def"><a name="L2786"></a><tt class="py-lineno">2786</tt>  <tt class="py-line">\r </tt>
-<a name="L2787"></a><tt class="py-lineno">2787</tt> <a class="py-toggle" href="#" id="Char-toggle" onclick="return toggle('Char');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Char-class.html">Char</a><tt class="py-op">(</tt><tt class="py-base-class">Word</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Char-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Char-expanded"><a name="L2788"></a><tt class="py-lineno">2788</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2789"></a><tt class="py-lineno">2789</tt>  <tt class="py-line"><tt class="py-docstring">    A short-cut class for defining C{Word(characters, exact=1)},\r</tt> </tt>
-<a name="L2790"></a><tt class="py-lineno">2790</tt>  <tt class="py-line"><tt class="py-docstring">    when defining a match of any single character in a string of characters.\r</tt> </tt>
-<a name="L2791"></a><tt class="py-lineno">2791</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Char.__init__"></a><div id="Char.__init__-def"><a name="L2792"></a><tt class="py-lineno">2792</tt> <a class="py-toggle" href="#" id="Char.__init__-toggle" onclick="return toggle('Char.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Char-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">charset</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Char.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Char.__init__-expanded"><a name="L2793"></a><tt class="py-lineno">2793</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-401" class="py-name" targets="Class pyparsing.Char=pyparsing.Char-class.html"><a title="pyparsing.Char" class="py-name" href="#" onclick="return doclink('link-401', 'Char', 'link-401');">Char</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-402', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">charset</tt><tt class="py-op">,</tt> <tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2794"></a><tt class="py-lineno">2794</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-string">"[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initCharsOrig</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2795"></a><tt class="py-lineno">2795</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2796"></a><tt class="py-lineno">2796</tt>  <tt class="py-line">\r </tt>
-<a name="Regex"></a><div id="Regex-def"><a name="L2797"></a><tt class="py-lineno">2797</tt>  <tt class="py-line">\r </tt>
-<a name="L2798"></a><tt class="py-lineno">2798</tt> <a class="py-toggle" href="#" id="Regex-toggle" onclick="return toggle('Regex');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Regex-class.html">Regex</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Regex-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Regex-expanded"><a name="L2799"></a><tt class="py-lineno">2799</tt>  <tt class="py-line">    <tt class="py-docstring">r"""\r</tt> </tt>
-<a name="L2800"></a><tt class="py-lineno">2800</tt>  <tt class="py-line"><tt class="py-docstring">    Token for matching strings that match a given regular expression.\r</tt> </tt>
-<a name="L2801"></a><tt class="py-lineno">2801</tt>  <tt class="py-line"><tt class="py-docstring">    Defined with string specifying the regular expression in a form recognized by the inbuilt Python re module.\r</tt> </tt>
-<a name="L2802"></a><tt class="py-lineno">2802</tt>  <tt class="py-line"><tt class="py-docstring">    If the given regex contains named groups (defined using C{(?P&lt;name&gt;...)}), these will be preserved as\r</tt> </tt>
-<a name="L2803"></a><tt class="py-lineno">2803</tt>  <tt class="py-line"><tt class="py-docstring">    named parse results.\r</tt> </tt>
-<a name="L2804"></a><tt class="py-lineno">2804</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2805"></a><tt class="py-lineno">2805</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2806"></a><tt class="py-lineno">2806</tt>  <tt class="py-line"><tt class="py-docstring">        realnum = Regex(r"[+-]?\d+\.\d*")\r</tt> </tt>
-<a name="L2807"></a><tt class="py-lineno">2807</tt>  <tt class="py-line"><tt class="py-docstring">        date = Regex(r'(?P&lt;year&gt;\d{4})-(?P&lt;month&gt;\d\d?)-(?P&lt;day&gt;\d\d?)')\r</tt> </tt>
-<a name="L2808"></a><tt class="py-lineno">2808</tt>  <tt class="py-line"><tt class="py-docstring">        # ref: http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression\r</tt> </tt>
-<a name="L2809"></a><tt class="py-lineno">2809</tt>  <tt class="py-line"><tt class="py-docstring">        roman = Regex(r"M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})")\r</tt> </tt>
-<a name="L2810"></a><tt class="py-lineno">2810</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2811"></a><tt class="py-lineno">2811</tt>  <tt class="py-line"><tt class="py-docstring">        make_html = Regex(r"(\w+):(.*?):").sub(r"&lt;\1&gt;\2&lt;/\1&gt;")\r</tt> </tt>
-<a name="L2812"></a><tt class="py-lineno">2812</tt>  <tt class="py-line"><tt class="py-docstring">        print(make_html.transformString("h1:main title:"))\r</tt> </tt>
-<a name="L2813"></a><tt class="py-lineno">2813</tt>  <tt class="py-line"><tt class="py-docstring">        # prints "&lt;h1&gt;main title&lt;/h1&gt;"\r</tt> </tt>
-<a name="L2814"></a><tt class="py-lineno">2814</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L2815"></a><tt class="py-lineno">2815</tt>  <tt class="py-line">    <tt id="link-403" class="py-name" targets="Class pyparsing.Regex.compiledREtype=pyparsing.Regex.compiledREtype-class.html"><a title="pyparsing.Regex.compiledREtype" class="py-name" href="#" onclick="return doclink('link-403', 'compiledREtype', 'link-403');">compiledREtype</a></tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">"[A-Z]"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="Regex.__init__"></a><div id="Regex.__init__-def"><a name="L2816"></a><tt class="py-lineno">2816</tt> <a class="py-toggle" href="#" id="Regex.__init__-toggle" onclick="return toggle('Regex.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Regex-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">asGroupList</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">asMatch</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Regex.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Regex.__init__-expanded"><a name="L2817"></a><tt class="py-lineno">2817</tt>  <tt class="py-line">        <tt class="py-docstring">"""The parameters C{pattern} and C{flags} are passed to the C{re.compile()} function as-is. See the Python C{re} module for an explanation of the acceptable patterns and flags."""</tt> </tt>\r
-<a name="L2818"></a><tt class="py-lineno">2818</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-404" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-404', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-405', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2819"></a><tt class="py-lineno">2819</tt>  <tt class="py-line">\r </tt>
-<a name="L2820"></a><tt class="py-lineno">2820</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-406" class="py-name" targets="Variable pyparsing.Regex.compiledREtype.pattern=pyparsing.Regex.compiledREtype-class.html#pattern"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-406', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2821"></a><tt class="py-lineno">2821</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-407" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-407', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2822"></a><tt class="py-lineno">2822</tt>  <tt class="py-line">                <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"null string passed to Regex; use Empty() instead"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2823"></a><tt class="py-lineno">2823</tt>  <tt class="py-line">                        <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2824"></a><tt class="py-lineno">2824</tt>  <tt class="py-line">\r </tt>
-<a name="L2825"></a><tt class="py-lineno">2825</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-408', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">=</tt> <tt id="link-409" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-409', 'pattern', 'link-406');">pattern</a></tt> </tt>\r
-<a name="L2826"></a><tt class="py-lineno">2826</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name" targets="Variable pyparsing.Regex.compiledREtype.flags=pyparsing.Regex.compiledREtype-class.html#flags"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-410', 'flags', 'link-410');">flags</a></tt> <tt class="py-op">=</tt> <tt id="link-411" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-411', 'flags', 'link-410');">flags</a></tt> </tt>\r
-<a name="L2827"></a><tt class="py-lineno">2827</tt>  <tt class="py-line">\r </tt>
-<a name="L2828"></a><tt class="py-lineno">2828</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2829"></a><tt class="py-lineno">2829</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-412', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-413', 'flags', 'link-410');">flags</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2830"></a><tt class="py-lineno">2830</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-414', 'pattern', 'link-406');">pattern</a></tt> </tt>\r
-<a name="L2831"></a><tt class="py-lineno">2831</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2832"></a><tt class="py-lineno">2832</tt>  <tt class="py-line">                <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"invalid pattern (%s) passed to Regex"</tt> <tt class="py-op">%</tt> <tt id="link-415" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-415', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2833"></a><tt class="py-lineno">2833</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2834"></a><tt class="py-lineno">2834</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L2835"></a><tt class="py-lineno">2835</tt>  <tt class="py-line">\r </tt>
-<a name="L2836"></a><tt class="py-lineno">2836</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-416" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-416', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt> <tt id="link-417" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-417', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="pyparsing.Regex.compiledREtype" class="py-name" href="#" onclick="return doclink('link-418', 'compiledREtype', 'link-403');">compiledREtype</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2837"></a><tt class="py-lineno">2837</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt id="link-419" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-419', 'pattern', 'link-406');">pattern</a></tt> </tt>\r
-<a name="L2838"></a><tt class="py-lineno">2838</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-420', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">=</tt> \\r </tt>
-<a name="L2839"></a><tt class="py-lineno">2839</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-421" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-421', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2840"></a><tt class="py-lineno">2840</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-422', 'flags', 'link-410');">flags</a></tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-423', 'flags', 'link-410');">flags</a></tt> </tt>\r
-<a name="L2841"></a><tt class="py-lineno">2841</tt>  <tt class="py-line">\r </tt>
-<a name="L2842"></a><tt class="py-lineno">2842</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2843"></a><tt class="py-lineno">2843</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Regex may only be constructed with a string or a compiled RE object"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2844"></a><tt class="py-lineno">2844</tt>  <tt class="py-line">\r </tt>
-<a name="L2845"></a><tt class="py-lineno">2845</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2846"></a><tt class="py-lineno">2846</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L2847"></a><tt class="py-lineno">2847</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2848"></a><tt class="py-lineno">2848</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L2849"></a><tt class="py-lineno">2849</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asGroupList</tt> <tt class="py-op">=</tt> <tt class="py-name">asGroupList</tt> </tt>\r
-<a name="L2850"></a><tt class="py-lineno">2850</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asMatch</tt> <tt class="py-op">=</tt> <tt class="py-name">asMatch</tt> </tt>\r
-</div><a name="L2851"></a><tt class="py-lineno">2851</tt>  <tt class="py-line">\r </tt>
-<a name="Regex.parseImpl"></a><div id="Regex.parseImpl-def"><a name="L2852"></a><tt class="py-lineno">2852</tt> <a class="py-toggle" href="#" id="Regex.parseImpl-toggle" onclick="return toggle('Regex.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Regex-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Regex.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Regex.parseImpl-expanded"><a name="L2853"></a><tt class="py-lineno">2853</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-424', 'match', 'link-352');">match</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2854"></a><tt class="py-lineno">2854</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2855"></a><tt class="py-lineno">2855</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-425" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-425', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2856"></a><tt class="py-lineno">2856</tt>  <tt class="py-line">\r </tt>
-<a name="L2857"></a><tt class="py-lineno">2857</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2858"></a><tt class="py-lineno">2858</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">groupdict</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2859"></a><tt class="py-lineno">2859</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asMatch</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2860"></a><tt class="py-lineno">2860</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>\r
-<a name="L2861"></a><tt class="py-lineno">2861</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asGroupList</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2862"></a><tt class="py-lineno">2862</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-426" class="py-name" targets="Variable pyparsing.Regex.compiledREtype.groups=pyparsing.Regex.compiledREtype-class.html#groups"><a title="pyparsing.Regex.compiledREtype.groups" class="py-name" href="#" onclick="return doclink('link-426', 'groups', 'link-426');">groups</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2863"></a><tt class="py-lineno">2863</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2864"></a><tt class="py-lineno">2864</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-427" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-427', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2865"></a><tt class="py-lineno">2865</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2866"></a><tt class="py-lineno">2866</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2867"></a><tt class="py-lineno">2867</tt>  <tt class="py-line">                    <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2868"></a><tt class="py-lineno">2868</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">ret</tt> </tt>\r
-</div><a name="L2869"></a><tt class="py-lineno">2869</tt>  <tt class="py-line">\r </tt>
-<a name="Regex.__str__"></a><div id="Regex.__str__-def"><a name="L2870"></a><tt class="py-lineno">2870</tt> <a class="py-toggle" href="#" id="Regex.__str__-toggle" onclick="return toggle('Regex.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Regex-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Regex.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Regex.__str__-expanded"><a name="L2871"></a><tt class="py-lineno">2871</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2872"></a><tt class="py-lineno">2872</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-428" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-428', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-429', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2873"></a><tt class="py-lineno">2873</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2874"></a><tt class="py-lineno">2874</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L2875"></a><tt class="py-lineno">2875</tt>  <tt class="py-line">\r </tt>
-<a name="L2876"></a><tt class="py-lineno">2876</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2877"></a><tt class="py-lineno">2877</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Re:(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-430', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2878"></a><tt class="py-lineno">2878</tt>  <tt class="py-line">\r </tt>
-<a name="L2879"></a><tt class="py-lineno">2879</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div><a name="L2880"></a><tt class="py-lineno">2880</tt>  <tt class="py-line">\r </tt>
-<a name="Regex.sub"></a><div id="Regex.sub-def"><a name="L2881"></a><tt class="py-lineno">2881</tt> <a class="py-toggle" href="#" id="Regex.sub-toggle" onclick="return toggle('Regex.sub');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Regex-class.html#sub">sub</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">repl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Regex.sub-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Regex.sub-expanded"><a name="L2882"></a><tt class="py-lineno">2882</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L2883"></a><tt class="py-lineno">2883</tt>  <tt class="py-line"><tt class="py-docstring">        Return Regex with an attached parse action to transform the parsed\r</tt> </tt>
-<a name="L2884"></a><tt class="py-lineno">2884</tt>  <tt class="py-line"><tt class="py-docstring">        result as if called using C{re.sub(expr, repl, string)}.\r</tt> </tt>
-<a name="L2885"></a><tt class="py-lineno">2885</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L2886"></a><tt class="py-lineno">2886</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asGroupList</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2887"></a><tt class="py-lineno">2887</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"cannot use sub() with Regex(asGroupList=True)"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2888"></a><tt class="py-lineno">2888</tt>  <tt class="py-line">                           <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2889"></a><tt class="py-lineno">2889</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2890"></a><tt class="py-lineno">2890</tt>  <tt class="py-line">\r </tt>
-<a name="L2891"></a><tt class="py-lineno">2891</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asMatch</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2892"></a><tt class="py-lineno">2892</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"cannot use sub() with a callable with Regex(asMatch=True)"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2893"></a><tt class="py-lineno">2893</tt>  <tt class="py-line">                           <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2894"></a><tt class="py-lineno">2894</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2895"></a><tt class="py-lineno">2895</tt>  <tt class="py-line">\r </tt>
-<a name="L2896"></a><tt class="py-lineno">2896</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">asMatch</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2897"></a><tt class="py-lineno">2897</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">pa</tt><tt class="py-op">(</tt><tt class="py-param">tokens</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2898"></a><tt class="py-lineno">2898</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2899"></a><tt class="py-lineno">2899</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2900"></a><tt class="py-lineno">2900</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">pa</tt><tt class="py-op">(</tt><tt class="py-param">tokens</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2901"></a><tt class="py-lineno">2901</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-431', 'sub', 'link-44');">sub</a></tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L2902"></a><tt class="py-lineno">2902</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name" targets="Method pyparsing.ParserElement.addParseAction()=pyparsing.ParserElement-class.html#addParseAction"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-432', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">pa</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L2903"></a><tt class="py-lineno">2903</tt>  <tt class="py-line">\r </tt>
-<a name="QuotedString"></a><div id="QuotedString-def"><a name="L2904"></a><tt class="py-lineno">2904</tt> <a class="py-toggle" href="#" id="QuotedString-toggle" onclick="return toggle('QuotedString');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.QuotedString-class.html">QuotedString</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="QuotedString-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="QuotedString-expanded"><a name="L2905"></a><tt class="py-lineno">2905</tt>  <tt class="py-line">    <tt class="py-docstring">r"""\r</tt> </tt>
-<a name="L2906"></a><tt class="py-lineno">2906</tt>  <tt class="py-line"><tt class="py-docstring">    Token for matching strings that are delimited by quoting characters.\r</tt> </tt>
-<a name="L2907"></a><tt class="py-lineno">2907</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2908"></a><tt class="py-lineno">2908</tt>  <tt class="py-line"><tt class="py-docstring">    Defined with the following parameters:\r</tt> </tt>
-<a name="L2909"></a><tt class="py-lineno">2909</tt>  <tt class="py-line"><tt class="py-docstring">        - quoteChar - string of one or more characters defining the quote delimiting string\r</tt> </tt>
-<a name="L2910"></a><tt class="py-lineno">2910</tt>  <tt class="py-line"><tt class="py-docstring">        - escChar - character to escape quotes, typically backslash (default=C{None})\r</tt> </tt>
-<a name="L2911"></a><tt class="py-lineno">2911</tt>  <tt class="py-line"><tt class="py-docstring">        - escQuote - special quote sequence to escape an embedded quote string (such as SQL's "" to escape an embedded ") (default=C{None})\r</tt> </tt>
-<a name="L2912"></a><tt class="py-lineno">2912</tt>  <tt class="py-line"><tt class="py-docstring">        - multiline - boolean indicating whether quotes can span multiple lines (default=C{False})\r</tt> </tt>
-<a name="L2913"></a><tt class="py-lineno">2913</tt>  <tt class="py-line"><tt class="py-docstring">        - unquoteResults - boolean indicating whether the matched text should be unquoted (default=C{True})\r</tt> </tt>
-<a name="L2914"></a><tt class="py-lineno">2914</tt>  <tt class="py-line"><tt class="py-docstring">        - endQuoteChar - string of one or more characters defining the end of the quote delimited string (default=C{None} =&gt; same as quoteChar)\r</tt> </tt>
-<a name="L2915"></a><tt class="py-lineno">2915</tt>  <tt class="py-line"><tt class="py-docstring">        - convertWhitespaceEscapes - convert escaped whitespace (C{'\t'}, C{'\n'}, etc.) to actual whitespace (default=C{True})\r</tt> </tt>
-<a name="L2916"></a><tt class="py-lineno">2916</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L2917"></a><tt class="py-lineno">2917</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L2918"></a><tt class="py-lineno">2918</tt>  <tt class="py-line"><tt class="py-docstring">        qs = QuotedString('"')\r</tt> </tt>
-<a name="L2919"></a><tt class="py-lineno">2919</tt>  <tt class="py-line"><tt class="py-docstring">        print(qs.searchString('lsjdf "This is the quote" sldjf'))\r</tt> </tt>
-<a name="L2920"></a><tt class="py-lineno">2920</tt>  <tt class="py-line"><tt class="py-docstring">        complex_qs = QuotedString('{{', endQuoteChar='}}')\r</tt> </tt>
-<a name="L2921"></a><tt class="py-lineno">2921</tt>  <tt class="py-line"><tt class="py-docstring">        print(complex_qs.searchString('lsjdf {{This is the "quote"}} sldjf'))\r</tt> </tt>
-<a name="L2922"></a><tt class="py-lineno">2922</tt>  <tt class="py-line"><tt class="py-docstring">        sql_qs = QuotedString('"', escQuote='""')\r</tt> </tt>
-<a name="L2923"></a><tt class="py-lineno">2923</tt>  <tt class="py-line"><tt class="py-docstring">        print(sql_qs.searchString('lsjdf "This is the quote with ""embedded"" quotes" sldjf'))\r</tt> </tt>
-<a name="L2924"></a><tt class="py-lineno">2924</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L2925"></a><tt class="py-lineno">2925</tt>  <tt class="py-line"><tt class="py-docstring">        [['This is the quote']]\r</tt> </tt>
-<a name="L2926"></a><tt class="py-lineno">2926</tt>  <tt class="py-line"><tt class="py-docstring">        [['This is the "quote"']]\r</tt> </tt>
-<a name="L2927"></a><tt class="py-lineno">2927</tt>  <tt class="py-line"><tt class="py-docstring">        [['This is the quote with "embedded" quotes']]\r</tt> </tt>
-<a name="L2928"></a><tt class="py-lineno">2928</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="QuotedString.__init__"></a><div id="QuotedString.__init__-def"><a name="L2929"></a><tt class="py-lineno">2929</tt> <a class="py-toggle" href="#" id="QuotedString.__init__-toggle" onclick="return toggle('QuotedString.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.QuotedString-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">quoteChar</tt><tt class="py-op">,</tt> <tt class="py-param">escChar</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">escQuote</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">multiline</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">unquoteResults</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">endQuoteChar</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">convertWhitespaceEscapes</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="QuotedString.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QuotedString.__init__-expanded"><a name="L2930"></a><tt class="py-lineno">2930</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-433" class="py-name" targets="Class pyparsing.QuotedString=pyparsing.QuotedString-class.html"><a title="pyparsing.QuotedString" class="py-name" href="#" onclick="return doclink('link-433', 'QuotedString', 'link-433');">QuotedString</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-434', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2931"></a><tt class="py-lineno">2931</tt>  <tt class="py-line">\r </tt>
-<a name="L2932"></a><tt class="py-lineno">2932</tt>  <tt class="py-line">        <tt class="py-comment"># remove white space from quote chars - wont work anyway</tt>\r </tt>
-<a name="L2933"></a><tt class="py-lineno">2933</tt>  <tt class="py-line">        <tt class="py-name">quoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">quoteChar</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2934"></a><tt class="py-lineno">2934</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">quoteChar</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2935"></a><tt class="py-lineno">2935</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"quoteChar cannot be the empty string"</tt><tt class="py-op">,</tt><tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt><tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2936"></a><tt class="py-lineno">2936</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2937"></a><tt class="py-lineno">2937</tt>  <tt class="py-line">\r </tt>
-<a name="L2938"></a><tt class="py-lineno">2938</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">endQuoteChar</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2939"></a><tt class="py-lineno">2939</tt>  <tt class="py-line">            <tt class="py-name">endQuoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">quoteChar</tt> </tt>\r
-<a name="L2940"></a><tt class="py-lineno">2940</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2941"></a><tt class="py-lineno">2941</tt>  <tt class="py-line">            <tt class="py-name">endQuoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">endQuoteChar</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2942"></a><tt class="py-lineno">2942</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">endQuoteChar</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2943"></a><tt class="py-lineno">2943</tt>  <tt class="py-line">                <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"endQuoteChar cannot be the empty string"</tt><tt class="py-op">,</tt><tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt><tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2944"></a><tt class="py-lineno">2944</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2945"></a><tt class="py-lineno">2945</tt>  <tt class="py-line">\r </tt>
-<a name="L2946"></a><tt class="py-lineno">2946</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">quoteChar</tt> </tt>\r
-<a name="L2947"></a><tt class="py-lineno">2947</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteCharLen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">quoteChar</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2948"></a><tt class="py-lineno">2948</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstQuoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">quoteChar</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L2949"></a><tt class="py-lineno">2949</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt> <tt class="py-op">=</tt> <tt class="py-name">endQuoteChar</tt> </tt>\r
-<a name="L2950"></a><tt class="py-lineno">2950</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteCharLen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2951"></a><tt class="py-lineno">2951</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escChar</tt> <tt class="py-op">=</tt> <tt class="py-name">escChar</tt> </tt>\r
-<a name="L2952"></a><tt class="py-lineno">2952</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escQuote</tt> <tt class="py-op">=</tt> <tt class="py-name">escQuote</tt> </tt>\r
-<a name="L2953"></a><tt class="py-lineno">2953</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">unquoteResults</tt> <tt class="py-op">=</tt> <tt class="py-name">unquoteResults</tt> </tt>\r
-<a name="L2954"></a><tt class="py-lineno">2954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">convertWhitespaceEscapes</tt> <tt class="py-op">=</tt> <tt class="py-name">convertWhitespaceEscapes</tt> </tt>\r
-<a name="L2955"></a><tt class="py-lineno">2955</tt>  <tt class="py-line">\r </tt>
-<a name="L2956"></a><tt class="py-lineno">2956</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">multiline</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2957"></a><tt class="py-lineno">2957</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-435', 'flags', 'link-410');">flags</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt> <tt class="py-op">|</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">DOTALL</tt> </tt>\r
-<a name="L2958"></a><tt class="py-lineno">2958</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-436" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-436', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r'%s(?:[^%s%s]'</tt> <tt class="py-op">%</tt> \\r </tt>
-<a name="L2959"></a><tt class="py-lineno">2959</tt>  <tt class="py-line">                <tt class="py-op">(</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteChar</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2960"></a><tt class="py-lineno">2960</tt>  <tt class="py-line">                  <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2961"></a><tt class="py-lineno">2961</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">escChar</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">escChar</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2962"></a><tt class="py-lineno">2962</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2963"></a><tt class="py-lineno">2963</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-437', 'flags', 'link-410');">flags</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L2964"></a><tt class="py-lineno">2964</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-438', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r'%s(?:[^%s\n\r%s]'</tt> <tt class="py-op">%</tt> \\r </tt>
-<a name="L2965"></a><tt class="py-lineno">2965</tt>  <tt class="py-line">                <tt class="py-op">(</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteChar</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2966"></a><tt class="py-lineno">2966</tt>  <tt class="py-line">                  <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2967"></a><tt class="py-lineno">2967</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">escChar</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">escChar</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L2968"></a><tt class="py-lineno">2968</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2969"></a><tt class="py-lineno">2969</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-439', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt>\r </tt>
-<a name="L2970"></a><tt class="py-lineno">2970</tt>  <tt class="py-line">                <tt class="py-string">'|(?:'</tt> <tt class="py-op">+</tt> <tt class="py-string">')|(?:'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">"%s[^%s]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2971"></a><tt class="py-lineno">2971</tt>  <tt class="py-line">                                               <tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L2972"></a><tt class="py-lineno">2972</tt>  <tt class="py-line">                                    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">')'</tt>\r </tt>
-<a name="L2973"></a><tt class="py-lineno">2973</tt>  <tt class="py-line">                <tt class="py-op">)</tt> </tt>\r
-<a name="L2974"></a><tt class="py-lineno">2974</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">escQuote</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2975"></a><tt class="py-lineno">2975</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-440', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">r'|(?:%s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">escQuote</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2976"></a><tt class="py-lineno">2976</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">escChar</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2977"></a><tt class="py-lineno">2977</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-441', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">r'|(?:%s.)'</tt> <tt class="py-op">%</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">escChar</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2978"></a><tt class="py-lineno">2978</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escCharReplacePattern</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escChar</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">"(.)"</tt> </tt>\r
-<a name="L2979"></a><tt class="py-lineno">2979</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-442', 'pattern', 'link-406');">pattern</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">r')*%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2980"></a><tt class="py-lineno">2980</tt>  <tt class="py-line">\r </tt>
-<a name="L2981"></a><tt class="py-lineno">2981</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2982"></a><tt class="py-lineno">2982</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-443', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="pyparsing.Regex.compiledREtype.flags" class="py-name" href="#" onclick="return doclink('link-444', 'flags', 'link-410');">flags</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2983"></a><tt class="py-lineno">2983</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reString</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-445', 'pattern', 'link-406');">pattern</a></tt> </tt>\r
-<a name="L2984"></a><tt class="py-lineno">2984</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2985"></a><tt class="py-lineno">2985</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"invalid pattern (%s) passed to Regex"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="pyparsing.Regex.compiledREtype.pattern" class="py-name" href="#" onclick="return doclink('link-446', 'pattern', 'link-406');">pattern</a></tt><tt class="py-op">,</tt>\r </tt>
-<a name="L2986"></a><tt class="py-lineno">2986</tt>  <tt class="py-line">                <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2987"></a><tt class="py-lineno">2987</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L2988"></a><tt class="py-lineno">2988</tt>  <tt class="py-line">\r </tt>
-<a name="L2989"></a><tt class="py-lineno">2989</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2990"></a><tt class="py-lineno">2990</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L2991"></a><tt class="py-lineno">2991</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L2992"></a><tt class="py-lineno">2992</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L2993"></a><tt class="py-lineno">2993</tt>  <tt class="py-line">\r </tt>
-<a name="QuotedString.parseImpl"></a><div id="QuotedString.parseImpl-def"><a name="L2994"></a><tt class="py-lineno">2994</tt> <a class="py-toggle" href="#" id="QuotedString.parseImpl-toggle" onclick="return toggle('QuotedString.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.QuotedString-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="QuotedString.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QuotedString.parseImpl-expanded"><a name="L2995"></a><tt class="py-lineno">2995</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">firstQuoteChar</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name"><a title="pyparsing.Regex.compiledREtype.match" class="py-name" href="#" onclick="return doclink('link-447', 'match', 'link-352');">match</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L2996"></a><tt class="py-lineno">2996</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L2997"></a><tt class="py-lineno">2997</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-448" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-448', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L2998"></a><tt class="py-lineno">2998</tt>  <tt class="py-line">\r </tt>
-<a name="L2999"></a><tt class="py-lineno">2999</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3000"></a><tt class="py-lineno">3000</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3001"></a><tt class="py-lineno">3001</tt>  <tt class="py-line">\r </tt>
-<a name="L3002"></a><tt class="py-lineno">3002</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">unquoteResults</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3003"></a><tt class="py-lineno">3003</tt>  <tt class="py-line">\r </tt>
-<a name="L3004"></a><tt class="py-lineno">3004</tt>  <tt class="py-line">            <tt class="py-comment"># strip off quotes</tt>\r </tt>
-<a name="L3005"></a><tt class="py-lineno">3005</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteCharLen</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteCharLen</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3006"></a><tt class="py-lineno">3006</tt>  <tt class="py-line">\r </tt>
-<a name="L3007"></a><tt class="py-lineno">3007</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">ret</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3008"></a><tt class="py-lineno">3008</tt>  <tt class="py-line">                <tt class="py-comment"># replace escaped whitespace</tt>\r </tt>
-<a name="L3009"></a><tt class="py-lineno">3009</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'\\'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ret</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">convertWhitespaceEscapes</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3010"></a><tt class="py-lineno">3010</tt>  <tt class="py-line">                    <tt class="py-name">ws_map</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt>\r </tt>
-<a name="L3011"></a><tt class="py-lineno">3011</tt>  <tt class="py-line">                        <tt class="py-string">r'\t'</tt> <tt class="py-op">:</tt> <tt class="py-string">'\t'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3012"></a><tt class="py-lineno">3012</tt>  <tt class="py-line">                        <tt class="py-string">r'\n'</tt> <tt class="py-op">:</tt> <tt class="py-string">'\n'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3013"></a><tt class="py-lineno">3013</tt>  <tt class="py-line">                        <tt class="py-string">r'\f'</tt> <tt class="py-op">:</tt> <tt class="py-string">'\f'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3014"></a><tt class="py-lineno">3014</tt>  <tt class="py-line">                        <tt class="py-string">r'\r'</tt> <tt class="py-op">:</tt> <tt class="py-string">'\r'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3015"></a><tt class="py-lineno">3015</tt>  <tt class="py-line">                    <tt class="py-op">}</tt> </tt>\r
-<a name="L3016"></a><tt class="py-lineno">3016</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">wslit</tt><tt class="py-op">,</tt><tt class="py-name">wschar</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ws_map</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-449', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3017"></a><tt class="py-lineno">3017</tt>  <tt class="py-line">                        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">wslit</tt><tt class="py-op">,</tt> <tt class="py-name">wschar</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3018"></a><tt class="py-lineno">3018</tt>  <tt class="py-line">\r </tt>
-<a name="L3019"></a><tt class="py-lineno">3019</tt>  <tt class="py-line">                <tt class="py-comment"># replace escaped characters</tt>\r </tt>
-<a name="L3020"></a><tt class="py-lineno">3020</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escChar</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3021"></a><tt class="py-lineno">3021</tt>  <tt class="py-line">                    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="pyparsing.Regex.compiledREtype.sub
-pyparsing.Regex.sub" class="py-name" href="#" onclick="return doclink('link-450', 'sub', 'link-44');">sub</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escCharReplacePattern</tt><tt class="py-op">,</tt> <tt class="py-string">r"\g&lt;1&gt;"</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3022"></a><tt class="py-lineno">3022</tt>  <tt class="py-line">\r </tt>
-<a name="L3023"></a><tt class="py-lineno">3023</tt>  <tt class="py-line">                <tt class="py-comment"># replace escaped quotes</tt>\r </tt>
-<a name="L3024"></a><tt class="py-lineno">3024</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escQuote</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3025"></a><tt class="py-lineno">3025</tt>  <tt class="py-line">                    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">escQuote</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3026"></a><tt class="py-lineno">3026</tt>  <tt class="py-line">\r </tt>
-<a name="L3027"></a><tt class="py-lineno">3027</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L3028"></a><tt class="py-lineno">3028</tt>  <tt class="py-line">\r </tt>
-<a name="QuotedString.__str__"></a><div id="QuotedString.__str__-def"><a name="L3029"></a><tt class="py-lineno">3029</tt> <a class="py-toggle" href="#" id="QuotedString.__str__-toggle" onclick="return toggle('QuotedString.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.QuotedString-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="QuotedString.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QuotedString.__str__-expanded"><a name="L3030"></a><tt class="py-lineno">3030</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3031"></a><tt class="py-lineno">3031</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-451" class="py-name"><a title="pyparsing.QuotedString" class="py-name" href="#" onclick="return doclink('link-451', 'QuotedString', 'link-433');">QuotedString</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-452', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3032"></a><tt class="py-lineno">3032</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3033"></a><tt class="py-lineno">3033</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L3034"></a><tt class="py-lineno">3034</tt>  <tt class="py-line">\r </tt>
-<a name="L3035"></a><tt class="py-lineno">3035</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3036"></a><tt class="py-lineno">3036</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"quoted string, starting with %s ending with %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quoteChar</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endQuoteChar</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3037"></a><tt class="py-lineno">3037</tt>  <tt class="py-line">\r </tt>
-<a name="L3038"></a><tt class="py-lineno">3038</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L3039"></a><tt class="py-lineno">3039</tt>  <tt class="py-line">\r </tt>
-<a name="CharsNotIn"></a><div id="CharsNotIn-def"><a name="L3040"></a><tt class="py-lineno">3040</tt>  <tt class="py-line">\r </tt>
-<a name="L3041"></a><tt class="py-lineno">3041</tt> <a class="py-toggle" href="#" id="CharsNotIn-toggle" onclick="return toggle('CharsNotIn');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.CharsNotIn-class.html">CharsNotIn</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CharsNotIn-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CharsNotIn-expanded"><a name="L3042"></a><tt class="py-lineno">3042</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3043"></a><tt class="py-lineno">3043</tt>  <tt class="py-line"><tt class="py-docstring">    Token for matching words composed of characters I{not} in a given set (will\r</tt> </tt>
-<a name="L3044"></a><tt class="py-lineno">3044</tt>  <tt class="py-line"><tt class="py-docstring">    include whitespace in matched characters if not listed in the provided exclusion set - see example).\r</tt> </tt>
-<a name="L3045"></a><tt class="py-lineno">3045</tt>  <tt class="py-line"><tt class="py-docstring">    Defined with string containing all disallowed characters, and an optional\r</tt> </tt>
-<a name="L3046"></a><tt class="py-lineno">3046</tt>  <tt class="py-line"><tt class="py-docstring">    minimum, maximum, and/or exact length.  The default value for C{min} is 1 (a\r</tt> </tt>
-<a name="L3047"></a><tt class="py-lineno">3047</tt>  <tt class="py-line"><tt class="py-docstring">    minimum value &lt; 1 is not valid); the default values for C{max} and C{exact}\r</tt> </tt>
-<a name="L3048"></a><tt class="py-lineno">3048</tt>  <tt class="py-line"><tt class="py-docstring">    are 0, meaning no maximum or exact length restriction.\r</tt> </tt>
-<a name="L3049"></a><tt class="py-lineno">3049</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3050"></a><tt class="py-lineno">3050</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3051"></a><tt class="py-lineno">3051</tt>  <tt class="py-line"><tt class="py-docstring">        # define a comma-separated-value as anything that is not a ','\r</tt> </tt>
-<a name="L3052"></a><tt class="py-lineno">3052</tt>  <tt class="py-line"><tt class="py-docstring">        csv_value = CharsNotIn(',')\r</tt> </tt>
-<a name="L3053"></a><tt class="py-lineno">3053</tt>  <tt class="py-line"><tt class="py-docstring">        print(delimitedList(csv_value).parseString("dkls,lsdkjf,s12 34,@!#,213"))\r</tt> </tt>
-<a name="L3054"></a><tt class="py-lineno">3054</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L3055"></a><tt class="py-lineno">3055</tt>  <tt class="py-line"><tt class="py-docstring">        ['dkls', 'lsdkjf', 's12 34', '@!#', '213']\r</tt> </tt>
-<a name="L3056"></a><tt class="py-lineno">3056</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="CharsNotIn.__init__"></a><div id="CharsNotIn.__init__-def"><a name="L3057"></a><tt class="py-lineno">3057</tt> <a class="py-toggle" href="#" id="CharsNotIn.__init__-toggle" onclick="return toggle('CharsNotIn.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CharsNotIn-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">notChars</tt><tt class="py-op">,</tt> <tt class="py-param">min</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">max</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">exact</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CharsNotIn.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CharsNotIn.__init__-expanded"><a name="L3058"></a><tt class="py-lineno">3058</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-453" class="py-name" targets="Class pyparsing.CharsNotIn=pyparsing.CharsNotIn-class.html"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-453', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-454', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3059"></a><tt class="py-lineno">3059</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3060"></a><tt class="py-lineno">3060</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt> <tt class="py-op">=</tt> <tt class="py-name">notChars</tt> </tt>\r
-<a name="L3061"></a><tt class="py-lineno">3061</tt>  <tt class="py-line">\r </tt>
-<a name="L3062"></a><tt class="py-lineno">3062</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">min</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3063"></a><tt class="py-lineno">3063</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"cannot specify a minimum length &lt; 1; use Optional(CharsNotIn()) if zero-length char group is permitted"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3064"></a><tt class="py-lineno">3064</tt>  <tt class="py-line">\r </tt>
-<a name="L3065"></a><tt class="py-lineno">3065</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt> </tt>\r
-<a name="L3066"></a><tt class="py-lineno">3066</tt>  <tt class="py-line">\r </tt>
-<a name="L3067"></a><tt class="py-lineno">3067</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3068"></a><tt class="py-lineno">3068</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt> </tt>\r
-<a name="L3069"></a><tt class="py-lineno">3069</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3070"></a><tt class="py-lineno">3070</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt id="link-455" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-455', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> </tt>\r
-<a name="L3071"></a><tt class="py-lineno">3071</tt>  <tt class="py-line">\r </tt>
-<a name="L3072"></a><tt class="py-lineno">3072</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">exact</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3073"></a><tt class="py-lineno">3073</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-<a name="L3074"></a><tt class="py-lineno">3074</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-<a name="L3075"></a><tt class="py-lineno">3075</tt>  <tt class="py-line">\r </tt>
-<a name="L3076"></a><tt class="py-lineno">3076</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3077"></a><tt class="py-lineno">3077</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3078"></a><tt class="py-lineno">3078</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3079"></a><tt class="py-lineno">3079</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L3080"></a><tt class="py-lineno">3080</tt>  <tt class="py-line">\r </tt>
-<a name="CharsNotIn.parseImpl"></a><div id="CharsNotIn.parseImpl-def"><a name="L3081"></a><tt class="py-lineno">3081</tt> <a class="py-toggle" href="#" id="CharsNotIn.parseImpl-toggle" onclick="return toggle('CharsNotIn.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CharsNotIn-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CharsNotIn.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CharsNotIn.parseImpl-expanded"><a name="L3082"></a><tt class="py-lineno">3082</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3083"></a><tt class="py-lineno">3083</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-456" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-456', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3084"></a><tt class="py-lineno">3084</tt>  <tt class="py-line">\r </tt>
-<a name="L3085"></a><tt class="py-lineno">3085</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L3086"></a><tt class="py-lineno">3086</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L3087"></a><tt class="py-lineno">3087</tt>  <tt class="py-line">        <tt class="py-name">notchars</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt> </tt>\r
-<a name="L3088"></a><tt class="py-lineno">3088</tt>  <tt class="py-line">        <tt class="py-name">maxlen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> <tt class="py-name">start</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3089"></a><tt class="py-lineno">3089</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">maxlen</tt> <tt class="py-keyword">and</tt> \\r </tt>
-<a name="L3090"></a><tt class="py-lineno">3090</tt>  <tt class="py-line">              <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">notchars</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3091"></a><tt class="py-lineno">3091</tt>  <tt class="py-line">            <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L3092"></a><tt class="py-lineno">3092</tt>  <tt class="py-line">\r </tt>
-<a name="L3093"></a><tt class="py-lineno">3093</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">-</tt> <tt class="py-name">start</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3094"></a><tt class="py-lineno">3094</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-457" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-457', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3095"></a><tt class="py-lineno">3095</tt>  <tt class="py-line">\r </tt>
-<a name="L3096"></a><tt class="py-lineno">3096</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L3097"></a><tt class="py-lineno">3097</tt>  <tt class="py-line">\r </tt>
-<a name="CharsNotIn.__str__"></a><div id="CharsNotIn.__str__-def"><a name="L3098"></a><tt class="py-lineno">3098</tt> <a class="py-toggle" href="#" id="CharsNotIn.__str__-toggle" onclick="return toggle('CharsNotIn.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.CharsNotIn-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="CharsNotIn.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CharsNotIn.__str__-expanded"><a name="L3099"></a><tt class="py-lineno">3099</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3100"></a><tt class="py-lineno">3100</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-458" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-458', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-459', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3101"></a><tt class="py-lineno">3101</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3102"></a><tt class="py-lineno">3102</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L3103"></a><tt class="py-lineno">3103</tt>  <tt class="py-line">\r </tt>
-<a name="L3104"></a><tt class="py-lineno">3104</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3105"></a><tt class="py-lineno">3105</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3106"></a><tt class="py-lineno">3106</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"!W:(%s...)"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3107"></a><tt class="py-lineno">3107</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3108"></a><tt class="py-lineno">3108</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"!W:(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notChars</tt> </tt>\r
-<a name="L3109"></a><tt class="py-lineno">3109</tt>  <tt class="py-line">\r </tt>
-<a name="L3110"></a><tt class="py-lineno">3110</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L3111"></a><tt class="py-lineno">3111</tt>  <tt class="py-line">\r </tt>
-<a name="White"></a><div id="White-def"><a name="L3112"></a><tt class="py-lineno">3112</tt> <a class="py-toggle" href="#" id="White-toggle" onclick="return toggle('White');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.White-class.html">White</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="White-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="White-expanded"><a name="L3113"></a><tt class="py-lineno">3113</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3114"></a><tt class="py-lineno">3114</tt>  <tt class="py-line"><tt class="py-docstring">    Special matching class for matching whitespace.  Normally, whitespace is ignored\r</tt> </tt>
-<a name="L3115"></a><tt class="py-lineno">3115</tt>  <tt class="py-line"><tt class="py-docstring">    by pyparsing grammars.  This class is included when some whitespace structures\r</tt> </tt>
-<a name="L3116"></a><tt class="py-lineno">3116</tt>  <tt class="py-line"><tt class="py-docstring">    are significant.  Define with a string containing the whitespace characters to be\r</tt> </tt>
-<a name="L3117"></a><tt class="py-lineno">3117</tt>  <tt class="py-line"><tt class="py-docstring">    matched; default is C{" \\t\\r\\n"}.  Also takes optional C{min}, C{max}, and C{exact} arguments,\r</tt> </tt>
-<a name="L3118"></a><tt class="py-lineno">3118</tt>  <tt class="py-line"><tt class="py-docstring">    as defined for the C{L{Word}} class.\r</tt> </tt>
-<a name="L3119"></a><tt class="py-lineno">3119</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L3120"></a><tt class="py-lineno">3120</tt>  <tt class="py-line">    <tt id="link-460" class="py-name" targets="Variable pyparsing.White.whiteStrs=pyparsing.White-class.html#whiteStrs"><a title="pyparsing.White.whiteStrs" class="py-name" href="#" onclick="return doclink('link-460', 'whiteStrs', 'link-460');">whiteStrs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt>\r </tt>
-<a name="L3121"></a><tt class="py-lineno">3121</tt>  <tt class="py-line">        <tt class="py-string">" "</tt> <tt class="py-op">:</tt> <tt class="py-string">"&lt;SPC&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3122"></a><tt class="py-lineno">3122</tt>  <tt class="py-line">        <tt class="py-string">"\t"</tt><tt class="py-op">:</tt> <tt class="py-string">"&lt;TAB&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3123"></a><tt class="py-lineno">3123</tt>  <tt class="py-line">        <tt class="py-string">"\n"</tt><tt class="py-op">:</tt> <tt class="py-string">"&lt;LF&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3124"></a><tt class="py-lineno">3124</tt>  <tt class="py-line">        <tt class="py-string">"\r"</tt><tt class="py-op">:</tt> <tt class="py-string">"&lt;CR&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3125"></a><tt class="py-lineno">3125</tt>  <tt class="py-line">        <tt class="py-string">"\f"</tt><tt class="py-op">:</tt> <tt class="py-string">"&lt;FF&gt;"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L3126"></a><tt class="py-lineno">3126</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>\r
-<a name="White.__init__"></a><div id="White.__init__-def"><a name="L3127"></a><tt class="py-lineno">3127</tt> <a class="py-toggle" href="#" id="White.__init__-toggle" onclick="return toggle('White.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.White-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ws</tt><tt class="py-op">=</tt><tt class="py-string">" \t\r\n"</tt><tt class="py-op">,</tt> <tt class="py-param">min</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">max</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">exact</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="White.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="White.__init__-expanded"><a name="L3128"></a><tt class="py-lineno">3128</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-461" class="py-name" targets="Class pyparsing.White=pyparsing.White-class.html"><a title="pyparsing.White" class="py-name" href="#" onclick="return doclink('link-461', 'White', 'link-461');">White</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-462', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3129"></a><tt class="py-lineno">3129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchWhite</tt> <tt class="py-op">=</tt> <tt class="py-name">ws</tt> </tt>\r
-<a name="L3130"></a><tt class="py-lineno">3130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-463" class="py-name" targets="Method pyparsing.ParserElement.setWhitespaceChars()=pyparsing.ParserElement-class.html#setWhitespaceChars"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-463', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchWhite</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3131"></a><tt class="py-lineno">3131</tt>  <tt class="py-line">        <tt class="py-comment">#~ self.leaveWhitespace()</tt>\r </tt>
-<a name="L3132"></a><tt class="py-lineno">3132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-464" class="py-name"><a title="pyparsing.White" class="py-name" href="#" onclick="return doclink('link-464', 'White', 'link-461');">White</a></tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="pyparsing.White.whiteStrs" class="py-name" href="#" onclick="return doclink('link-465', 'whiteStrs', 'link-460');">whiteStrs</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchWhite</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3133"></a><tt class="py-lineno">3133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3134"></a><tt class="py-lineno">3134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3135"></a><tt class="py-lineno">3135</tt>  <tt class="py-line">\r </tt>
-<a name="L3136"></a><tt class="py-lineno">3136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt> </tt>\r
-<a name="L3137"></a><tt class="py-lineno">3137</tt>  <tt class="py-line">\r </tt>
-<a name="L3138"></a><tt class="py-lineno">3138</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3139"></a><tt class="py-lineno">3139</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt> </tt>\r
-<a name="L3140"></a><tt class="py-lineno">3140</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3141"></a><tt class="py-lineno">3141</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt id="link-466" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-466', '_MAX_INT', 'link-8');">_MAX_INT</a></tt> </tt>\r
-<a name="L3142"></a><tt class="py-lineno">3142</tt>  <tt class="py-line">\r </tt>
-<a name="L3143"></a><tt class="py-lineno">3143</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">exact</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3144"></a><tt class="py-lineno">3144</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-<a name="L3145"></a><tt class="py-lineno">3145</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt> <tt class="py-op">=</tt> <tt class="py-name">exact</tt> </tt>\r
-</div><a name="L3146"></a><tt class="py-lineno">3146</tt>  <tt class="py-line">\r </tt>
-<a name="White.parseImpl"></a><div id="White.parseImpl-def"><a name="L3147"></a><tt class="py-lineno">3147</tt> <a class="py-toggle" href="#" id="White.parseImpl-toggle" onclick="return toggle('White.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.White-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="White.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="White.parseImpl-expanded"><a name="L3148"></a><tt class="py-lineno">3148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt> <tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchWhite</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3149"></a><tt class="py-lineno">3149</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-467" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-467', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3150"></a><tt class="py-lineno">3150</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L3151"></a><tt class="py-lineno">3151</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L3152"></a><tt class="py-lineno">3152</tt>  <tt class="py-line">        <tt class="py-name">maxloc</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> </tt>\r
-<a name="L3153"></a><tt class="py-lineno">3153</tt>  <tt class="py-line">        <tt class="py-name">maxloc</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> <tt class="py-name">maxloc</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3154"></a><tt class="py-lineno">3154</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">maxloc</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matchWhite</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3155"></a><tt class="py-lineno">3155</tt>  <tt class="py-line">            <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L3156"></a><tt class="py-lineno">3156</tt>  <tt class="py-line">\r </tt>
-<a name="L3157"></a><tt class="py-lineno">3157</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">-</tt> <tt class="py-name">start</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">minLen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3158"></a><tt class="py-lineno">3158</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-468" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-468', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3159"></a><tt class="py-lineno">3159</tt>  <tt class="py-line">\r </tt>
-<a name="L3160"></a><tt class="py-lineno">3160</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L3161"></a><tt class="py-lineno">3161</tt>  <tt class="py-line">\r </tt>
-<a name="_PositionToken"></a><div id="_PositionToken-def"><a name="L3162"></a><tt class="py-lineno">3162</tt>  <tt class="py-line">\r </tt>
-<a name="L3163"></a><tt class="py-lineno">3163</tt> <a class="py-toggle" href="#" id="_PositionToken-toggle" onclick="return toggle('_PositionToken');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._PositionToken-class.html">_PositionToken</a><tt class="py-op">(</tt><tt class="py-base-class">Token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_PositionToken-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_PositionToken-expanded"><a name="_PositionToken.__init__"></a><div id="_PositionToken.__init__-def"><a name="L3164"></a><tt class="py-lineno">3164</tt> <a class="py-toggle" href="#" id="_PositionToken.__init__-toggle" onclick="return toggle('_PositionToken.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._PositionToken-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_PositionToken.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_PositionToken.__init__-expanded"><a name="L3165"></a><tt class="py-lineno">3165</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt class="py-name">_PositionToken</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-469', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3166"></a><tt class="py-lineno">3166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>\r
-<a name="L3167"></a><tt class="py-lineno">3167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3168"></a><tt class="py-lineno">3168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div></div><a name="L3169"></a><tt class="py-lineno">3169</tt>  <tt class="py-line">\r </tt>
-<a name="GoToColumn"></a><div id="GoToColumn-def"><a name="L3170"></a><tt class="py-lineno">3170</tt> <a class="py-toggle" href="#" id="GoToColumn-toggle" onclick="return toggle('GoToColumn');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.GoToColumn-class.html">GoToColumn</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="GoToColumn-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GoToColumn-expanded"><a name="L3171"></a><tt class="py-lineno">3171</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3172"></a><tt class="py-lineno">3172</tt>  <tt class="py-line"><tt class="py-docstring">    Token to advance to a specific column of input text; useful for tabular report scraping.\r</tt> </tt>
-<a name="L3173"></a><tt class="py-lineno">3173</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="GoToColumn.__init__"></a><div id="GoToColumn.__init__-def"><a name="L3174"></a><tt class="py-lineno">3174</tt> <a class="py-toggle" href="#" id="GoToColumn.__init__-toggle" onclick="return toggle('GoToColumn.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.GoToColumn-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">colno</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="GoToColumn.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GoToColumn.__init__-expanded"><a name="L3175"></a><tt class="py-lineno">3175</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-470" class="py-name" targets="Class pyparsing.GoToColumn=pyparsing.GoToColumn-class.html"><a title="pyparsing.GoToColumn" class="py-name" href="#" onclick="return doclink('link-470', 'GoToColumn', 'link-470');">GoToColumn</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-471', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3176"></a><tt class="py-lineno">3176</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-472', 'col', 'link-31');">col</a></tt> <tt class="py-op">=</tt> <tt class="py-name">colno</tt> </tt>\r
-</div><a name="L3177"></a><tt class="py-lineno">3177</tt>  <tt class="py-line">\r </tt>
-<a name="GoToColumn.preParse"></a><div id="GoToColumn.preParse-def"><a name="L3178"></a><tt class="py-lineno">3178</tt> <a class="py-toggle" href="#" id="GoToColumn.preParse-toggle" onclick="return toggle('GoToColumn.preParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.GoToColumn-class.html#preParse">preParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="GoToColumn.preParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GoToColumn.preParse-expanded"><a name="L3179"></a><tt class="py-lineno">3179</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-473" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-473', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-474', 'col', 'link-31');">col</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3180"></a><tt class="py-lineno">3180</tt>  <tt class="py-line">            <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3181"></a><tt class="py-lineno">3181</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3182"></a><tt class="py-lineno">3182</tt>  <tt class="py-line">                <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_skipIgnorables</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3183"></a><tt class="py-lineno">3183</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">instrlen</tt> <tt class="py-keyword">and</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-475" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-475', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt> <tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-476', 'col', 'link-31');">col</a></tt> <tt class="py-op">:</tt> </tt>\r
-<a name="L3184"></a><tt class="py-lineno">3184</tt>  <tt class="py-line">                <tt class="py-name">loc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L3185"></a><tt class="py-lineno">3185</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt> </tt>\r
-</div><a name="L3186"></a><tt class="py-lineno">3186</tt>  <tt class="py-line">\r </tt>
-<a name="GoToColumn.parseImpl"></a><div id="GoToColumn.parseImpl-def"><a name="L3187"></a><tt class="py-lineno">3187</tt> <a class="py-toggle" href="#" id="GoToColumn.parseImpl-toggle" onclick="return toggle('GoToColumn.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.GoToColumn-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="GoToColumn.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GoToColumn.parseImpl-expanded"><a name="L3188"></a><tt class="py-lineno">3188</tt>  <tt class="py-line">        <tt class="py-name">thiscol</tt> <tt class="py-op">=</tt> <tt id="link-477" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-477', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3189"></a><tt class="py-lineno">3189</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">thiscol</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-478', 'col', 'link-31');">col</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3190"></a><tt class="py-lineno">3190</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-479" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-479', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-string">"Text not in expected column"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3191"></a><tt class="py-lineno">3191</tt>  <tt class="py-line">        <tt class="py-name">newloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-480', 'col', 'link-31');">col</a></tt> <tt class="py-op">-</tt> <tt class="py-name">thiscol</tt> </tt>\r
-<a name="L3192"></a><tt class="py-lineno">3192</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt> <tt class="py-name">loc</tt><tt class="py-op">:</tt> <tt class="py-name">newloc</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3193"></a><tt class="py-lineno">3193</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">newloc</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L3194"></a><tt class="py-lineno">3194</tt>  <tt class="py-line">\r </tt>
-<a name="LineStart"></a><div id="LineStart-def"><a name="L3195"></a><tt class="py-lineno">3195</tt>  <tt class="py-line">\r </tt>
-<a name="L3196"></a><tt class="py-lineno">3196</tt> <a class="py-toggle" href="#" id="LineStart-toggle" onclick="return toggle('LineStart');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.LineStart-class.html">LineStart</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineStart-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LineStart-expanded"><a name="L3197"></a><tt class="py-lineno">3197</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3198"></a><tt class="py-lineno">3198</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if current position is at the beginning of a line within the parse string\r</tt> </tt>
-<a name="L3199"></a><tt class="py-lineno">3199</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3200"></a><tt class="py-lineno">3200</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3201"></a><tt class="py-lineno">3201</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3202"></a><tt class="py-lineno">3202</tt>  <tt class="py-line"><tt class="py-docstring">        test = '''\\r</tt> </tt>
-<a name="L3203"></a><tt class="py-lineno">3203</tt>  <tt class="py-line"><tt class="py-docstring">        AAA this line\r</tt> </tt>
-<a name="L3204"></a><tt class="py-lineno">3204</tt>  <tt class="py-line"><tt class="py-docstring">        AAA and this line\r</tt> </tt>
-<a name="L3205"></a><tt class="py-lineno">3205</tt>  <tt class="py-line"><tt class="py-docstring">          AAA but not this one\r</tt> </tt>
-<a name="L3206"></a><tt class="py-lineno">3206</tt>  <tt class="py-line"><tt class="py-docstring">        B AAA and definitely not this one\r</tt> </tt>
-<a name="L3207"></a><tt class="py-lineno">3207</tt>  <tt class="py-line"><tt class="py-docstring">        '''\r</tt> </tt>
-<a name="L3208"></a><tt class="py-lineno">3208</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3209"></a><tt class="py-lineno">3209</tt>  <tt class="py-line"><tt class="py-docstring">        for t in (LineStart() + 'AAA' + restOfLine).searchString(test):\r</tt> </tt>
-<a name="L3210"></a><tt class="py-lineno">3210</tt>  <tt class="py-line"><tt class="py-docstring">            print(t)\r</tt> </tt>
-<a name="L3211"></a><tt class="py-lineno">3211</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3212"></a><tt class="py-lineno">3212</tt>  <tt class="py-line"><tt class="py-docstring">    Prints::\r</tt> </tt>
-<a name="L3213"></a><tt class="py-lineno">3213</tt>  <tt class="py-line"><tt class="py-docstring">        ['AAA', ' this line']\r</tt> </tt>
-<a name="L3214"></a><tt class="py-lineno">3214</tt>  <tt class="py-line"><tt class="py-docstring">        ['AAA', ' and this line']\r</tt> </tt>
-<a name="L3215"></a><tt class="py-lineno">3215</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3216"></a><tt class="py-lineno">3216</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="LineStart.__init__"></a><div id="LineStart.__init__-def"><a name="L3217"></a><tt class="py-lineno">3217</tt> <a class="py-toggle" href="#" id="LineStart.__init__-toggle" onclick="return toggle('LineStart.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.LineStart-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineStart.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LineStart.__init__-expanded"><a name="L3218"></a><tt class="py-lineno">3218</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-481" class="py-name" targets="Class pyparsing.LineStart=pyparsing.LineStart-class.html"><a title="pyparsing.LineStart" class="py-name" href="#" onclick="return doclink('link-481', 'LineStart', 'link-481');">LineStart</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-482', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3219"></a><tt class="py-lineno">3219</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected start of line"</tt> </tt>\r
-</div><a name="L3220"></a><tt class="py-lineno">3220</tt>  <tt class="py-line">\r </tt>
-<a name="LineStart.parseImpl"></a><div id="LineStart.parseImpl-def"><a name="L3221"></a><tt class="py-lineno">3221</tt> <a class="py-toggle" href="#" id="LineStart.parseImpl-toggle" onclick="return toggle('LineStart.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.LineStart-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineStart.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LineStart.parseImpl-expanded"><a name="L3222"></a><tt class="py-lineno">3222</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-483" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-483', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3223"></a><tt class="py-lineno">3223</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3224"></a><tt class="py-lineno">3224</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-484" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-484', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3225"></a><tt class="py-lineno">3225</tt>  <tt class="py-line">\r </tt>
-<a name="LineEnd"></a><div id="LineEnd-def"><a name="L3226"></a><tt class="py-lineno">3226</tt> <a class="py-toggle" href="#" id="LineEnd-toggle" onclick="return toggle('LineEnd');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.LineEnd-class.html">LineEnd</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineEnd-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LineEnd-expanded"><a name="L3227"></a><tt class="py-lineno">3227</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3228"></a><tt class="py-lineno">3228</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if current position is at the end of a line within the parse string\r</tt> </tt>
-<a name="L3229"></a><tt class="py-lineno">3229</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="LineEnd.__init__"></a><div id="LineEnd.__init__-def"><a name="L3230"></a><tt class="py-lineno">3230</tt> <a class="py-toggle" href="#" id="LineEnd.__init__-toggle" onclick="return toggle('LineEnd.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.LineEnd-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineEnd.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LineEnd.__init__-expanded"><a name="L3231"></a><tt class="py-lineno">3231</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-485" class="py-name" targets="Class pyparsing.LineEnd=pyparsing.LineEnd-class.html"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-485', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-486', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3232"></a><tt class="py-lineno">3232</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-487', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt> <tt id="link-488" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-488', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-489', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3233"></a><tt class="py-lineno">3233</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected end of line"</tt> </tt>\r
-</div><a name="L3234"></a><tt class="py-lineno">3234</tt>  <tt class="py-line">\r </tt>
-<a name="LineEnd.parseImpl"></a><div id="LineEnd.parseImpl-def"><a name="L3235"></a><tt class="py-lineno">3235</tt> <a class="py-toggle" href="#" id="LineEnd.parseImpl-toggle" onclick="return toggle('LineEnd.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.LineEnd-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="LineEnd.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LineEnd.parseImpl-expanded"><a name="L3236"></a><tt class="py-lineno">3236</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt><tt class="py-op">&lt;</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3237"></a><tt class="py-lineno">3237</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">"\n"</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3238"></a><tt class="py-lineno">3238</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-string">"\n"</tt> </tt>\r
-<a name="L3239"></a><tt class="py-lineno">3239</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3240"></a><tt class="py-lineno">3240</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-490" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-490', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3241"></a><tt class="py-lineno">3241</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">loc</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3242"></a><tt class="py-lineno">3242</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3243"></a><tt class="py-lineno">3243</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3244"></a><tt class="py-lineno">3244</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-491" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-491', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3245"></a><tt class="py-lineno">3245</tt>  <tt class="py-line">\r </tt>
-<a name="StringStart"></a><div id="StringStart-def"><a name="L3246"></a><tt class="py-lineno">3246</tt> <a class="py-toggle" href="#" id="StringStart-toggle" onclick="return toggle('StringStart');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.StringStart-class.html">StringStart</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringStart-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="StringStart-expanded"><a name="L3247"></a><tt class="py-lineno">3247</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3248"></a><tt class="py-lineno">3248</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if current position is at the beginning of the parse string\r</tt> </tt>
-<a name="L3249"></a><tt class="py-lineno">3249</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="StringStart.__init__"></a><div id="StringStart.__init__-def"><a name="L3250"></a><tt class="py-lineno">3250</tt> <a class="py-toggle" href="#" id="StringStart.__init__-toggle" onclick="return toggle('StringStart.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.StringStart-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringStart.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="StringStart.__init__-expanded"><a name="L3251"></a><tt class="py-lineno">3251</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-492" class="py-name" targets="Class pyparsing.StringStart=pyparsing.StringStart-class.html"><a title="pyparsing.StringStart" class="py-name" href="#" onclick="return doclink('link-492', 'StringStart', 'link-492');">StringStart</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-493" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-493', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3252"></a><tt class="py-lineno">3252</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected start of text"</tt> </tt>\r
-</div><a name="L3253"></a><tt class="py-lineno">3253</tt>  <tt class="py-line">\r </tt>
-<a name="StringStart.parseImpl"></a><div id="StringStart.parseImpl-def"><a name="L3254"></a><tt class="py-lineno">3254</tt> <a class="py-toggle" href="#" id="StringStart.parseImpl-toggle" onclick="return toggle('StringStart.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.StringStart-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringStart.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="StringStart.parseImpl-expanded"><a name="L3255"></a><tt class="py-lineno">3255</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3256"></a><tt class="py-lineno">3256</tt>  <tt class="py-line">            <tt class="py-comment"># see if entire string up to here is just whitespace and ignoreables</tt>\r </tt>
-<a name="L3257"></a><tt class="py-lineno">3257</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-494', 'preParse', 'link-149');">preParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3258"></a><tt class="py-lineno">3258</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-495" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-495', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3259"></a><tt class="py-lineno">3259</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L3260"></a><tt class="py-lineno">3260</tt>  <tt class="py-line">\r </tt>
-<a name="StringEnd"></a><div id="StringEnd-def"><a name="L3261"></a><tt class="py-lineno">3261</tt> <a class="py-toggle" href="#" id="StringEnd-toggle" onclick="return toggle('StringEnd');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.StringEnd-class.html">StringEnd</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringEnd-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="StringEnd-expanded"><a name="L3262"></a><tt class="py-lineno">3262</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3263"></a><tt class="py-lineno">3263</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if current position is at the end of the parse string\r</tt> </tt>
-<a name="L3264"></a><tt class="py-lineno">3264</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="StringEnd.__init__"></a><div id="StringEnd.__init__-def"><a name="L3265"></a><tt class="py-lineno">3265</tt> <a class="py-toggle" href="#" id="StringEnd.__init__-toggle" onclick="return toggle('StringEnd.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.StringEnd-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringEnd.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="StringEnd.__init__-expanded"><a name="L3266"></a><tt class="py-lineno">3266</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="pyparsing.StringEnd" class="py-name" href="#" onclick="return doclink('link-496', 'StringEnd', 'link-238');">StringEnd</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-497', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3267"></a><tt class="py-lineno">3267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected end of text"</tt> </tt>\r
-</div><a name="L3268"></a><tt class="py-lineno">3268</tt>  <tt class="py-line">\r </tt>
-<a name="StringEnd.parseImpl"></a><div id="StringEnd.parseImpl-def"><a name="L3269"></a><tt class="py-lineno">3269</tt> <a class="py-toggle" href="#" id="StringEnd.parseImpl-toggle" onclick="return toggle('StringEnd.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.StringEnd-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="StringEnd.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="StringEnd.parseImpl-expanded"><a name="L3270"></a><tt class="py-lineno">3270</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3271"></a><tt class="py-lineno">3271</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-498" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-498', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3272"></a><tt class="py-lineno">3272</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">loc</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3273"></a><tt class="py-lineno">3273</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3274"></a><tt class="py-lineno">3274</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">loc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3275"></a><tt class="py-lineno">3275</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3276"></a><tt class="py-lineno">3276</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3277"></a><tt class="py-lineno">3277</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-499" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-499', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3278"></a><tt class="py-lineno">3278</tt>  <tt class="py-line">\r </tt>
-<a name="WordStart"></a><div id="WordStart-def"><a name="L3279"></a><tt class="py-lineno">3279</tt> <a class="py-toggle" href="#" id="WordStart-toggle" onclick="return toggle('WordStart');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.WordStart-class.html">WordStart</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordStart-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="WordStart-expanded"><a name="L3280"></a><tt class="py-lineno">3280</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3281"></a><tt class="py-lineno">3281</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if the current position is at the beginning of a Word, and\r</tt> </tt>
-<a name="L3282"></a><tt class="py-lineno">3282</tt>  <tt class="py-line"><tt class="py-docstring">    is not preceded by any character in a given set of C{wordChars}\r</tt> </tt>
-<a name="L3283"></a><tt class="py-lineno">3283</tt>  <tt class="py-line"><tt class="py-docstring">    (default=C{printables}). To emulate the C{\b} behavior of regular expressions,\r</tt> </tt>
-<a name="L3284"></a><tt class="py-lineno">3284</tt>  <tt class="py-line"><tt class="py-docstring">    use C{WordStart(alphanums)}. C{WordStart} will also match at the beginning of\r</tt> </tt>
-<a name="L3285"></a><tt class="py-lineno">3285</tt>  <tt class="py-line"><tt class="py-docstring">    the string being parsed, or at the beginning of a line.\r</tt> </tt>
-<a name="L3286"></a><tt class="py-lineno">3286</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="WordStart.__init__"></a><div id="WordStart.__init__-def"><a name="L3287"></a><tt class="py-lineno">3287</tt> <a class="py-toggle" href="#" id="WordStart.__init__-toggle" onclick="return toggle('WordStart.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.WordStart-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">wordChars</tt> <tt class="py-op">=</tt> <tt id="link-500" class="py-name"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-500', 'printables', 'link-29');">printables</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordStart.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="WordStart.__init__-expanded"><a name="L3288"></a><tt class="py-lineno">3288</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-501" class="py-name" targets="Class pyparsing.WordStart=pyparsing.WordStart-class.html"><a title="pyparsing.WordStart" class="py-name" href="#" onclick="return doclink('link-501', 'WordStart', 'link-501');">WordStart</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-502', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3289"></a><tt class="py-lineno">3289</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">wordChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3290"></a><tt class="py-lineno">3290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Not at the start of a word"</tt> </tt>\r
-</div><a name="L3291"></a><tt class="py-lineno">3291</tt>  <tt class="py-line">\r </tt>
-<a name="WordStart.parseImpl"></a><div id="WordStart.parseImpl-def"><a name="L3292"></a><tt class="py-lineno">3292</tt> <a class="py-toggle" href="#" id="WordStart.parseImpl-toggle" onclick="return toggle('WordStart.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.WordStart-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordStart.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="WordStart.parseImpl-expanded"><a name="L3293"></a><tt class="py-lineno">3293</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3294"></a><tt class="py-lineno">3294</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt> <tt class="py-keyword">or</tt>\r </tt>
-<a name="L3295"></a><tt class="py-lineno">3295</tt>  <tt class="py-line">                <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3296"></a><tt class="py-lineno">3296</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-503" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-503', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3297"></a><tt class="py-lineno">3297</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L3298"></a><tt class="py-lineno">3298</tt>  <tt class="py-line">\r </tt>
-<a name="WordEnd"></a><div id="WordEnd-def"><a name="L3299"></a><tt class="py-lineno">3299</tt> <a class="py-toggle" href="#" id="WordEnd-toggle" onclick="return toggle('WordEnd');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.WordEnd-class.html">WordEnd</a><tt class="py-op">(</tt><tt class="py-base-class">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordEnd-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="WordEnd-expanded"><a name="L3300"></a><tt class="py-lineno">3300</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3301"></a><tt class="py-lineno">3301</tt>  <tt class="py-line"><tt class="py-docstring">    Matches if the current position is at the end of a Word, and\r</tt> </tt>
-<a name="L3302"></a><tt class="py-lineno">3302</tt>  <tt class="py-line"><tt class="py-docstring">    is not followed by any character in a given set of C{wordChars}\r</tt> </tt>
-<a name="L3303"></a><tt class="py-lineno">3303</tt>  <tt class="py-line"><tt class="py-docstring">    (default=C{printables}). To emulate the C{\b} behavior of regular expressions,\r</tt> </tt>
-<a name="L3304"></a><tt class="py-lineno">3304</tt>  <tt class="py-line"><tt class="py-docstring">    use C{WordEnd(alphanums)}. C{WordEnd} will also match at the end of\r</tt> </tt>
-<a name="L3305"></a><tt class="py-lineno">3305</tt>  <tt class="py-line"><tt class="py-docstring">    the string being parsed, or at the end of a line.\r</tt> </tt>
-<a name="L3306"></a><tt class="py-lineno">3306</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="WordEnd.__init__"></a><div id="WordEnd.__init__-def"><a name="L3307"></a><tt class="py-lineno">3307</tt> <a class="py-toggle" href="#" id="WordEnd.__init__-toggle" onclick="return toggle('WordEnd.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.WordEnd-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">wordChars</tt> <tt class="py-op">=</tt> <tt id="link-504" class="py-name"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-504', 'printables', 'link-29');">printables</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordEnd.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="WordEnd.__init__-expanded"><a name="L3308"></a><tt class="py-lineno">3308</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-505" class="py-name" targets="Class pyparsing.WordEnd=pyparsing.WordEnd-class.html"><a title="pyparsing.WordEnd" class="py-name" href="#" onclick="return doclink('link-505', 'WordEnd', 'link-505');">WordEnd</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-506', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3309"></a><tt class="py-lineno">3309</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">wordChars</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3310"></a><tt class="py-lineno">3310</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3311"></a><tt class="py-lineno">3311</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Not at the end of a word"</tt> </tt>\r
-</div><a name="L3312"></a><tt class="py-lineno">3312</tt>  <tt class="py-line">\r </tt>
-<a name="WordEnd.parseImpl"></a><div id="WordEnd.parseImpl-def"><a name="L3313"></a><tt class="py-lineno">3313</tt> <a class="py-toggle" href="#" id="WordEnd.parseImpl-toggle" onclick="return toggle('WordEnd.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.WordEnd-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="WordEnd.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="WordEnd.parseImpl-expanded"><a name="L3314"></a><tt class="py-lineno">3314</tt>  <tt class="py-line">        <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3315"></a><tt class="py-lineno">3315</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">instrlen</tt><tt class="py-op">&gt;</tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">loc</tt><tt class="py-op">&lt;</tt><tt class="py-name">instrlen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3316"></a><tt class="py-lineno">3316</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt> <tt class="py-keyword">or</tt>\r </tt>
-<a name="L3317"></a><tt class="py-lineno">3317</tt>  <tt class="py-line">                <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wordChars</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3318"></a><tt class="py-lineno">3318</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-507" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-507', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3319"></a><tt class="py-lineno">3319</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L3320"></a><tt class="py-lineno">3320</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression"></a><div id="ParseExpression-def"><a name="L3321"></a><tt class="py-lineno">3321</tt>  <tt class="py-line">\r </tt>
-<a name="L3322"></a><tt class="py-lineno">3322</tt> <a class="py-toggle" href="#" id="ParseExpression-toggle" onclick="return toggle('ParseExpression');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html">ParseExpression</a><tt class="py-op">(</tt><tt class="py-base-class">ParserElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseExpression-expanded"><a name="L3323"></a><tt class="py-lineno">3323</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3324"></a><tt class="py-lineno">3324</tt>  <tt class="py-line"><tt class="py-docstring">    Abstract subclass of ParserElement, for combining and post-processing parsed tokens.\r</tt> </tt>
-<a name="L3325"></a><tt class="py-lineno">3325</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="ParseExpression.__init__"></a><div id="ParseExpression.__init__-def"><a name="L3326"></a><tt class="py-lineno">3326</tt> <a class="py-toggle" href="#" id="ParseExpression.__init__-toggle" onclick="return toggle('ParseExpression.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exprs</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.__init__-expanded"><a name="L3327"></a><tt class="py-lineno">3327</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-508" class="py-name" targets="Class pyparsing.ParseExpression=pyparsing.ParseExpression-class.html"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-508', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-509', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3328"></a><tt class="py-lineno">3328</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">_generatorType</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3329"></a><tt class="py-lineno">3329</tt>  <tt class="py-line">            <tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3330"></a><tt class="py-lineno">3330</tt>  <tt class="py-line">\r </tt>
-<a name="L3331"></a><tt class="py-lineno">3331</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3332"></a><tt class="py-lineno">3332</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt id="link-510" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-510', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">exprs</tt> <tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3333"></a><tt class="py-lineno">3333</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">Iterable</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3334"></a><tt class="py-lineno">3334</tt>  <tt class="py-line">            <tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3335"></a><tt class="py-lineno">3335</tt>  <tt class="py-line">            <tt class="py-comment"># if sequence of strings provided, wrap with Literal</tt>\r </tt>
-<a name="L3336"></a><tt class="py-lineno">3336</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">all</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">expr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exprs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3337"></a><tt class="py-lineno">3337</tt>  <tt class="py-line">                <tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-511" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-511', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">,</tt> <tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3338"></a><tt class="py-lineno">3338</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3339"></a><tt class="py-lineno">3339</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3340"></a><tt class="py-lineno">3340</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3341"></a><tt class="py-lineno">3341</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt> <tt class="py-name">exprs</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3342"></a><tt class="py-lineno">3342</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3343"></a><tt class="py-lineno">3343</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">exprs</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3344"></a><tt class="py-lineno">3344</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L3345"></a><tt class="py-lineno">3345</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.__getitem__"></a><div id="ParseExpression.__getitem__-def"><a name="L3346"></a><tt class="py-lineno">3346</tt> <a class="py-toggle" href="#" id="ParseExpression.__getitem__-toggle" onclick="return toggle('ParseExpression.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.__getitem__-expanded"><a name="L3347"></a><tt class="py-lineno">3347</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L3348"></a><tt class="py-lineno">3348</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.append"></a><div id="ParseExpression.append-def"><a name="L3349"></a><tt class="py-lineno">3349</tt> <a class="py-toggle" href="#" id="ParseExpression.append-toggle" onclick="return toggle('ParseExpression.append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#append">append</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.append-expanded"><a name="L3350"></a><tt class="py-lineno">3350</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-512', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3351"></a><tt class="py-lineno">3351</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3352"></a><tt class="py-lineno">3352</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3353"></a><tt class="py-lineno">3353</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.leaveWhitespace"></a><div id="ParseExpression.leaveWhitespace-def"><a name="L3354"></a><tt class="py-lineno">3354</tt> <a class="py-toggle" href="#" id="ParseExpression.leaveWhitespace-toggle" onclick="return toggle('ParseExpression.leaveWhitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.leaveWhitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.leaveWhitespace-expanded"><a name="L3355"></a><tt class="py-lineno">3355</tt>  <tt class="py-line">        <tt class="py-docstring">"""Extends C{leaveWhitespace} defined in base class, and also invokes C{leaveWhitespace} on\r</tt> </tt>
-<a name="L3356"></a><tt class="py-lineno">3356</tt>  <tt class="py-line"><tt class="py-docstring">           all contained expressions."""</tt> </tt>\r
-<a name="L3357"></a><tt class="py-lineno">3357</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3358"></a><tt class="py-lineno">3358</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-513', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3359"></a><tt class="py-lineno">3359</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3360"></a><tt class="py-lineno">3360</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-514" class="py-name" targets="Method pyparsing.Forward.leaveWhitespace()=pyparsing.Forward-class.html#leaveWhitespace,Method pyparsing.ParseElementEnhance.leaveWhitespace()=pyparsing.ParseElementEnhance-class.html#leaveWhitespace,Method pyparsing.ParseExpression.leaveWhitespace()=pyparsing.ParseExpression-class.html#leaveWhitespace,Method pyparsing.ParserElement.leaveWhitespace()=pyparsing.ParserElement-class.html#leaveWhitespace"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-514', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3361"></a><tt class="py-lineno">3361</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3362"></a><tt class="py-lineno">3362</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.ignore"></a><div id="ParseExpression.ignore-def"><a name="L3363"></a><tt class="py-lineno">3363</tt> <a class="py-toggle" href="#" id="ParseExpression.ignore-toggle" onclick="return toggle('ParseExpression.ignore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#ignore">ignore</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.ignore-expanded"><a name="L3364"></a><tt class="py-lineno">3364</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-515" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-515', 'Suppress', 'link-308');">Suppress</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3365"></a><tt class="py-lineno">3365</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">other</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3366"></a><tt class="py-lineno">3366</tt>  <tt class="py-line">                <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-516" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-516', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name" targets="Method pyparsing.Combine.ignore()=pyparsing.Combine-class.html#ignore,Method pyparsing.ParseElementEnhance.ignore()=pyparsing.ParseElementEnhance-class.html#ignore,Method pyparsing.ParseExpression.ignore()=pyparsing.ParseExpression-class.html#ignore,Method pyparsing.ParserElement.ignore()=pyparsing.ParserElement-class.html#ignore"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-517', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3367"></a><tt class="py-lineno">3367</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3368"></a><tt class="py-lineno">3368</tt>  <tt class="py-line">                    <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-518', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3369"></a><tt class="py-lineno">3369</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3370"></a><tt class="py-lineno">3370</tt>  <tt class="py-line">            <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-519" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-519', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-520', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3371"></a><tt class="py-lineno">3371</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3372"></a><tt class="py-lineno">3372</tt>  <tt class="py-line">                <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-521', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3373"></a><tt class="py-lineno">3373</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3374"></a><tt class="py-lineno">3374</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.__str__"></a><div id="ParseExpression.__str__-def"><a name="L3375"></a><tt class="py-lineno">3375</tt> <a class="py-toggle" href="#" id="ParseExpression.__str__-toggle" onclick="return toggle('ParseExpression.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.__str__-expanded"><a name="L3376"></a><tt class="py-lineno">3376</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3377"></a><tt class="py-lineno">3377</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-522" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-522', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-523" class="py-name"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-523', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3378"></a><tt class="py-lineno">3378</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3379"></a><tt class="py-lineno">3379</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L3380"></a><tt class="py-lineno">3380</tt>  <tt class="py-line">\r </tt>
-<a name="L3381"></a><tt class="py-lineno">3381</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3382"></a><tt class="py-lineno">3382</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s:(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3383"></a><tt class="py-lineno">3383</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div><a name="L3384"></a><tt class="py-lineno">3384</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.streamline"></a><div id="ParseExpression.streamline-def"><a name="L3385"></a><tt class="py-lineno">3385</tt> <a class="py-toggle" href="#" id="ParseExpression.streamline-toggle" onclick="return toggle('ParseExpression.streamline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#streamline">streamline</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.streamline-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.streamline-expanded"><a name="L3386"></a><tt class="py-lineno">3386</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-524" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-524', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-525', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3387"></a><tt class="py-lineno">3387</tt>  <tt class="py-line">\r </tt>
-<a name="L3388"></a><tt class="py-lineno">3388</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3389"></a><tt class="py-lineno">3389</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-526" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-526', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3390"></a><tt class="py-lineno">3390</tt>  <tt class="py-line">\r </tt>
-<a name="L3391"></a><tt class="py-lineno">3391</tt>  <tt class="py-line">        <tt class="py-comment"># collapse nested And's of the form And( And( And( a,b), c), d) to And( a,b,c,d )</tt>\r </tt>
-<a name="L3392"></a><tt class="py-lineno">3392</tt>  <tt class="py-line">        <tt class="py-comment"># but only if there are no parse actions or resultsNames on the nested And's</tt>\r </tt>
-<a name="L3393"></a><tt class="py-lineno">3393</tt>  <tt class="py-line">        <tt class="py-comment"># (likewise for Or's and MatchFirst's)</tt>\r </tt>
-<a name="L3394"></a><tt class="py-lineno">3394</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3395"></a><tt class="py-lineno">3395</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3396"></a><tt class="py-lineno">3396</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3397"></a><tt class="py-lineno">3397</tt>  <tt class="py-line">                  <tt class="py-keyword">not</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3398"></a><tt class="py-lineno">3398</tt>  <tt class="py-line">                  <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3399"></a><tt class="py-lineno">3399</tt>  <tt class="py-line">                  <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3400"></a><tt class="py-lineno">3400</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3401"></a><tt class="py-lineno">3401</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3402"></a><tt class="py-lineno">3402</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">|=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> </tt>\r
-<a name="L3403"></a><tt class="py-lineno">3403</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt>  <tt class="py-op">|=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> </tt>\r
-<a name="L3404"></a><tt class="py-lineno">3404</tt>  <tt class="py-line">\r </tt>
-<a name="L3405"></a><tt class="py-lineno">3405</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3406"></a><tt class="py-lineno">3406</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3407"></a><tt class="py-lineno">3407</tt>  <tt class="py-line">                  <tt class="py-keyword">not</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">parseAction</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3408"></a><tt class="py-lineno">3408</tt>  <tt class="py-line">                  <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt>\r </tt>
-<a name="L3409"></a><tt class="py-lineno">3409</tt>  <tt class="py-line">                  <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3410"></a><tt class="py-lineno">3410</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3411"></a><tt class="py-lineno">3411</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3412"></a><tt class="py-lineno">3412</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">|=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> </tt>\r
-<a name="L3413"></a><tt class="py-lineno">3413</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt>  <tt class="py-op">|=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> </tt>\r
-<a name="L3414"></a><tt class="py-lineno">3414</tt>  <tt class="py-line">\r </tt>
-<a name="L3415"></a><tt class="py-lineno">3415</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Expected "</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3416"></a><tt class="py-lineno">3416</tt>  <tt class="py-line">\r </tt>
-<a name="L3417"></a><tt class="py-lineno">3417</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3418"></a><tt class="py-lineno">3418</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.setResultsName"></a><div id="ParseExpression.setResultsName-def"><a name="L3419"></a><tt class="py-lineno">3419</tt> <a class="py-toggle" href="#" id="ParseExpression.setResultsName-toggle" onclick="return toggle('ParseExpression.setResultsName');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">listAllMatches</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.setResultsName-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.setResultsName-expanded"><a name="L3420"></a><tt class="py-lineno">3420</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-527" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-527', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-528" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-528', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">listAllMatches</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3421"></a><tt class="py-lineno">3421</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L3422"></a><tt class="py-lineno">3422</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.validate"></a><div id="ParseExpression.validate-def"><a name="L3423"></a><tt class="py-lineno">3423</tt> <a class="py-toggle" href="#" id="ParseExpression.validate-toggle" onclick="return toggle('ParseExpression.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#validate">validate</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">validateTrace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.validate-expanded"><a name="L3424"></a><tt class="py-lineno">3424</tt>  <tt class="py-line">        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">validateTrace</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3425"></a><tt class="py-lineno">3425</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3426"></a><tt class="py-lineno">3426</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name" targets="Method pyparsing.Forward.validate()=pyparsing.Forward-class.html#validate,Method pyparsing.ParseElementEnhance.validate()=pyparsing.ParseElementEnhance-class.html#validate,Method pyparsing.ParseExpression.validate()=pyparsing.ParseExpression-class.html#validate,Method pyparsing.ParserElement.validate()=pyparsing.ParserElement-class.html#validate"><a title="pyparsing.Forward.validate
-pyparsing.ParseElementEnhance.validate
-pyparsing.ParseExpression.validate
-pyparsing.ParserElement.validate" class="py-name" href="#" onclick="return doclink('link-529', 'validate', 'link-529');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3427"></a><tt class="py-lineno">3427</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-530" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-530', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L3428"></a><tt class="py-lineno">3428</tt>  <tt class="py-line">\r </tt>
-<a name="ParseExpression.copy"></a><div id="ParseExpression.copy-def"><a name="L3429"></a><tt class="py-lineno">3429</tt> <a class="py-toggle" href="#" id="ParseExpression.copy-toggle" onclick="return toggle('ParseExpression.copy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseExpression-class.html#copy">copy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseExpression.copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseExpression.copy-expanded"><a name="L3430"></a><tt class="py-lineno">3430</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-531" class="py-name"><a title="pyparsing.ParseExpression" class="py-name" href="#" onclick="return doclink('link-531', 'ParseExpression', 'link-508');">ParseExpression</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-532', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3431"></a><tt class="py-lineno">3431</tt>  <tt class="py-line">        <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-533" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-533', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3432"></a><tt class="py-lineno">3432</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L3433"></a><tt class="py-lineno">3433</tt>  <tt class="py-line">\r </tt>
-<a name="And"></a><div id="And-def"><a name="L3434"></a><tt class="py-lineno">3434</tt> <a class="py-toggle" href="#" id="And-toggle" onclick="return toggle('And');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.And-class.html">And</a><tt class="py-op">(</tt><tt class="py-base-class">ParseExpression</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="And-expanded"><a name="L3435"></a><tt class="py-lineno">3435</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3436"></a><tt class="py-lineno">3436</tt>  <tt class="py-line"><tt class="py-docstring">    Requires all given C{ParseExpression}s to be found in the given order.\r</tt> </tt>
-<a name="L3437"></a><tt class="py-lineno">3437</tt>  <tt class="py-line"><tt class="py-docstring">    Expressions may be separated by whitespace.\r</tt> </tt>
-<a name="L3438"></a><tt class="py-lineno">3438</tt>  <tt class="py-line"><tt class="py-docstring">    May be constructed using the C{'+'} operator.\r</tt> </tt>
-<a name="L3439"></a><tt class="py-lineno">3439</tt>  <tt class="py-line"><tt class="py-docstring">    May also be constructed using the C{'-'} operator, which will suppress backtracking.\r</tt> </tt>
-<a name="L3440"></a><tt class="py-lineno">3440</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3441"></a><tt class="py-lineno">3441</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3442"></a><tt class="py-lineno">3442</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums)\r</tt> </tt>
-<a name="L3443"></a><tt class="py-lineno">3443</tt>  <tt class="py-line"><tt class="py-docstring">        name_expr = OneOrMore(Word(alphas))\r</tt> </tt>
-<a name="L3444"></a><tt class="py-lineno">3444</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3445"></a><tt class="py-lineno">3445</tt>  <tt class="py-line"><tt class="py-docstring">        expr = And([integer("id"),name_expr("name"),integer("age")])\r</tt> </tt>
-<a name="L3446"></a><tt class="py-lineno">3446</tt>  <tt class="py-line"><tt class="py-docstring">        # more easily written as:\r</tt> </tt>
-<a name="L3447"></a><tt class="py-lineno">3447</tt>  <tt class="py-line"><tt class="py-docstring">        expr = integer("id") + name_expr("name") + integer("age")\r</tt> </tt>
-<a name="L3448"></a><tt class="py-lineno">3448</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L3449"></a><tt class="py-lineno">3449</tt>  <tt class="py-line">\r </tt>
-<a name="And._ErrorStop"></a><div id="And._ErrorStop-def"><a name="L3450"></a><tt class="py-lineno">3450</tt> <a class="py-toggle" href="#" id="And._ErrorStop-toggle" onclick="return toggle('And._ErrorStop');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.And._ErrorStop-class.html">_ErrorStop</a><tt class="py-op">(</tt><tt class="py-base-class">Empty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And._ErrorStop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And._ErrorStop-expanded"><a name="And._ErrorStop.__init__"></a><div id="And._ErrorStop.__init__-def"><a name="L3451"></a><tt class="py-lineno">3451</tt> <a class="py-toggle" href="#" id="And._ErrorStop.__init__-toggle" onclick="return toggle('And._ErrorStop.__init__');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And._ErrorStop-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And._ErrorStop.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="And._ErrorStop.__init__-expanded"><a name="L3452"></a><tt class="py-lineno">3452</tt>  <tt class="py-line">            <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-534" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-534', 'And', 'link-274');">And</a></tt><tt class="py-op">.</tt><tt class="py-name">_ErrorStop</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-535', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3453"></a><tt class="py-lineno">3453</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-string">'-'</tt> </tt>\r
-<a name="L3454"></a><tt class="py-lineno">3454</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-536', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3455"></a><tt class="py-lineno">3455</tt>  <tt class="py-line">\r </tt>
-<a name="And.__init__"></a><div id="And.__init__-def"><a name="L3456"></a><tt class="py-lineno">3456</tt> <a class="py-toggle" href="#" id="And.__init__-toggle" onclick="return toggle('And.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exprs</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And.__init__-expanded"><a name="L3457"></a><tt class="py-lineno">3457</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-537" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-537', 'And', 'link-274');">And</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-538" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-538', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3458"></a><tt class="py-lineno">3458</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">all</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3459"></a><tt class="py-lineno">3459</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-539" class="py-name"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-539', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3460"></a><tt class="py-lineno">3460</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> </tt>\r
-<a name="L3461"></a><tt class="py-lineno">3461</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L3462"></a><tt class="py-lineno">3462</tt>  <tt class="py-line">\r </tt>
-<a name="And.parseImpl"></a><div id="And.parseImpl-def"><a name="L3463"></a><tt class="py-lineno">3463</tt> <a class="py-toggle" href="#" id="And.parseImpl-toggle" onclick="return toggle('And.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And.parseImpl-expanded"><a name="L3464"></a><tt class="py-lineno">3464</tt>  <tt class="py-line">        <tt class="py-comment"># pass False as last arg to _parse for first element, since we already</tt>\r </tt>
-<a name="L3465"></a><tt class="py-lineno">3465</tt>  <tt class="py-line">        <tt class="py-comment"># pre-parsed the string as part of our And pre-parsing</tt>\r </tt>
-<a name="L3466"></a><tt class="py-lineno">3466</tt>  <tt class="py-line">        <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">resultlist</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3467"></a><tt class="py-lineno">3467</tt>  <tt class="py-line">        <tt class="py-name">errorStop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3468"></a><tt class="py-lineno">3468</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3469"></a><tt class="py-lineno">3469</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt id="link-540" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-540', 'And', 'link-274');">And</a></tt><tt class="py-op">.</tt><tt class="py-name">_ErrorStop</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3470"></a><tt class="py-lineno">3470</tt>  <tt class="py-line">                <tt class="py-name">errorStop</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3471"></a><tt class="py-lineno">3471</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L3472"></a><tt class="py-lineno">3472</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">errorStop</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3473"></a><tt class="py-lineno">3473</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3474"></a><tt class="py-lineno">3474</tt>  <tt class="py-line">                    <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">exprtokens</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3475"></a><tt class="py-lineno">3475</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-541" class="py-name" targets="Class pyparsing.ParseSyntaxException=pyparsing.ParseSyntaxException-class.html"><a title="pyparsing.ParseSyntaxException" class="py-name" href="#" onclick="return doclink('link-541', 'ParseSyntaxException', 'link-541');">ParseSyntaxException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3476"></a><tt class="py-lineno">3476</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L3477"></a><tt class="py-lineno">3477</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-542" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-542', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">pe</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3478"></a><tt class="py-lineno">3478</tt>  <tt class="py-line">                    <tt class="py-name">pe</tt><tt class="py-op">.</tt><tt class="py-name">__traceback__</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3479"></a><tt class="py-lineno">3479</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-543" class="py-name"><a title="pyparsing.ParseSyntaxException" class="py-name" href="#" onclick="return doclink('link-543', 'ParseSyntaxException', 'link-541');">ParseSyntaxException</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_exception</tt><tt class="py-op">(</tt><tt class="py-name">pe</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3480"></a><tt class="py-lineno">3480</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3481"></a><tt class="py-lineno">3481</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-544" class="py-name"><a title="pyparsing.ParseSyntaxException" class="py-name" href="#" onclick="return doclink('link-544', 'ParseSyntaxException', 'link-541');">ParseSyntaxException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3482"></a><tt class="py-lineno">3482</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3483"></a><tt class="py-lineno">3483</tt>  <tt class="py-line">                <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">exprtokens</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3484"></a><tt class="py-lineno">3484</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">exprtokens</tt> <tt class="py-keyword">or</tt> <tt class="py-name">exprtokens</tt><tt class="py-op">.</tt><tt id="link-545" class="py-name"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-545', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3485"></a><tt class="py-lineno">3485</tt>  <tt class="py-line">                <tt class="py-name">resultlist</tt> <tt class="py-op">+=</tt> <tt class="py-name">exprtokens</tt> </tt>\r
-<a name="L3486"></a><tt class="py-lineno">3486</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">resultlist</tt> </tt>\r
-</div><a name="L3487"></a><tt class="py-lineno">3487</tt>  <tt class="py-line">\r </tt>
-<a name="And.__iadd__"></a><div id="And.__iadd__-def"><a name="L3488"></a><tt class="py-lineno">3488</tt> <a class="py-toggle" href="#" id="And.__iadd__-toggle" onclick="return toggle('And.__iadd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And-class.html#__iadd__">__iadd__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And.__iadd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And.__iadd__-expanded"><a name="L3489"></a><tt class="py-lineno">3489</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3490"></a><tt class="py-lineno">3490</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-546" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-546', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3491"></a><tt class="py-lineno">3491</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-547" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-547', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> <tt class="py-comment">#And( [ self, other ] )</tt> </tt>\r
-</div><a name="L3492"></a><tt class="py-lineno">3492</tt>  <tt class="py-line">\r </tt>
-<a name="And.checkRecursion"></a><div id="And.checkRecursion-def"><a name="L3493"></a><tt class="py-lineno">3493</tt> <a class="py-toggle" href="#" id="And.checkRecursion-toggle" onclick="return toggle('And.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And.checkRecursion-expanded"><a name="L3494"></a><tt class="py-lineno">3494</tt>  <tt class="py-line">        <tt class="py-name">subRecCheckList</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3495"></a><tt class="py-lineno">3495</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3496"></a><tt class="py-lineno">3496</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-548', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-name">subRecCheckList</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3497"></a><tt class="py-lineno">3497</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3498"></a><tt class="py-lineno">3498</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>\r
-</div><a name="L3499"></a><tt class="py-lineno">3499</tt>  <tt class="py-line">\r </tt>
-<a name="And.__str__"></a><div id="And.__str__-def"><a name="L3500"></a><tt class="py-lineno">3500</tt> <a class="py-toggle" href="#" id="And.__str__-toggle" onclick="return toggle('And.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.And-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="And.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="And.__str__-expanded"><a name="L3501"></a><tt class="py-lineno">3501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3502"></a><tt class="py-lineno">3502</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3503"></a><tt class="py-lineno">3503</tt>  <tt class="py-line">\r </tt>
-<a name="L3504"></a><tt class="py-lineno">3504</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3505"></a><tt class="py-lineno">3505</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"{"</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}"</tt> </tt>\r
-<a name="L3506"></a><tt class="py-lineno">3506</tt>  <tt class="py-line">\r </tt>
-<a name="L3507"></a><tt class="py-lineno">3507</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L3508"></a><tt class="py-lineno">3508</tt>  <tt class="py-line">\r </tt>
-<a name="Or"></a><div id="Or-def"><a name="L3509"></a><tt class="py-lineno">3509</tt>  <tt class="py-line">\r </tt>
-<a name="L3510"></a><tt class="py-lineno">3510</tt> <a class="py-toggle" href="#" id="Or-toggle" onclick="return toggle('Or');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Or-class.html">Or</a><tt class="py-op">(</tt><tt class="py-base-class">ParseExpression</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Or-expanded"><a name="L3511"></a><tt class="py-lineno">3511</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3512"></a><tt class="py-lineno">3512</tt>  <tt class="py-line"><tt class="py-docstring">    Requires that at least one C{ParseExpression} is found.\r</tt> </tt>
-<a name="L3513"></a><tt class="py-lineno">3513</tt>  <tt class="py-line"><tt class="py-docstring">    If two expressions match, the expression that matches the longest string will be used.\r</tt> </tt>
-<a name="L3514"></a><tt class="py-lineno">3514</tt>  <tt class="py-line"><tt class="py-docstring">    May be constructed using the C{'^'} operator.\r</tt> </tt>
-<a name="L3515"></a><tt class="py-lineno">3515</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3516"></a><tt class="py-lineno">3516</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3517"></a><tt class="py-lineno">3517</tt>  <tt class="py-line"><tt class="py-docstring">        # construct Or using '^' operator\r</tt> </tt>
-<a name="L3518"></a><tt class="py-lineno">3518</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3519"></a><tt class="py-lineno">3519</tt>  <tt class="py-line"><tt class="py-docstring">        number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums))\r</tt> </tt>
-<a name="L3520"></a><tt class="py-lineno">3520</tt>  <tt class="py-line"><tt class="py-docstring">        print(number.searchString("123 3.1416 789"))\r</tt> </tt>
-<a name="L3521"></a><tt class="py-lineno">3521</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L3522"></a><tt class="py-lineno">3522</tt>  <tt class="py-line"><tt class="py-docstring">        [['123'], ['3.1416'], ['789']]\r</tt> </tt>
-<a name="L3523"></a><tt class="py-lineno">3523</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Or.__init__"></a><div id="Or.__init__-def"><a name="L3524"></a><tt class="py-lineno">3524</tt> <a class="py-toggle" href="#" id="Or.__init__-toggle" onclick="return toggle('Or.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Or-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exprs</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Or.__init__-expanded"><a name="L3525"></a><tt class="py-lineno">3525</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-549" class="py-name"><a title="pyparsing.Or" class="py-name" href="#" onclick="return doclink('link-549', 'Or', 'link-297');">Or</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-550', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3526"></a><tt class="py-lineno">3526</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3527"></a><tt class="py-lineno">3527</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">any</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3528"></a><tt class="py-lineno">3528</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3529"></a><tt class="py-lineno">3529</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L3530"></a><tt class="py-lineno">3530</tt>  <tt class="py-line">\r </tt>
-<a name="Or.parseImpl"></a><div id="Or.parseImpl-def"><a name="L3531"></a><tt class="py-lineno">3531</tt> <a class="py-toggle" href="#" id="Or.parseImpl-toggle" onclick="return toggle('Or.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Or-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Or.parseImpl-expanded"><a name="L3532"></a><tt class="py-lineno">3532</tt>  <tt class="py-line">        <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>\r
-<a name="L3533"></a><tt class="py-lineno">3533</tt>  <tt class="py-line">        <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3534"></a><tt class="py-lineno">3534</tt>  <tt class="py-line">        <tt id="link-551" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-551', 'matches', 'link-248');">matches</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3535"></a><tt class="py-lineno">3535</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3536"></a><tt class="py-lineno">3536</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3537"></a><tt class="py-lineno">3537</tt>  <tt class="py-line">                <tt class="py-name">loc2</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-552', 'tryParse', 'link-171');">tryParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3538"></a><tt class="py-lineno">3538</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-553" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-553', 'ParseException', 'link-145');">ParseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3539"></a><tt class="py-lineno">3539</tt>  <tt class="py-line">                <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">__traceback__</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3540"></a><tt class="py-lineno">3540</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxExcLoc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3541"></a><tt class="py-lineno">3541</tt>  <tt class="py-line">                    <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> </tt>\r
-<a name="L3542"></a><tt class="py-lineno">3542</tt>  <tt class="py-line">                    <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> </tt>\r
-<a name="L3543"></a><tt class="py-lineno">3543</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3544"></a><tt class="py-lineno">3544</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxExcLoc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3545"></a><tt class="py-lineno">3545</tt>  <tt class="py-line">                    <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt id="link-554" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-554', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3546"></a><tt class="py-lineno">3546</tt>  <tt class="py-line">                    <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3547"></a><tt class="py-lineno">3547</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3548"></a><tt class="py-lineno">3548</tt>  <tt class="py-line">                <tt class="py-comment"># save match among all matches, to retry longest to shortest</tt>\r </tt>
-<a name="L3549"></a><tt class="py-lineno">3549</tt>  <tt class="py-line">                <tt id="link-555" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-555', 'matches', 'link-248');">matches</a></tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-556', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">loc2</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3550"></a><tt class="py-lineno">3550</tt>  <tt class="py-line">\r </tt>
-<a name="L3551"></a><tt class="py-lineno">3551</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-557" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-557', 'matches', 'link-248');">matches</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3552"></a><tt class="py-lineno">3552</tt>  <tt class="py-line">            <tt id="link-558" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-558', 'matches', 'link-248');">matches</a></tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">=</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-op">-</tt><tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3553"></a><tt class="py-lineno">3553</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt><tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt id="link-559" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-559', 'matches', 'link-248');">matches</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3554"></a><tt class="py-lineno">3554</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3555"></a><tt class="py-lineno">3555</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3556"></a><tt class="py-lineno">3556</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-560" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-560', 'ParseException', 'link-145');">ParseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3557"></a><tt class="py-lineno">3557</tt>  <tt class="py-line">                    <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">__traceback__</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3558"></a><tt class="py-lineno">3558</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxExcLoc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3559"></a><tt class="py-lineno">3559</tt>  <tt class="py-line">                        <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> </tt>\r
-<a name="L3560"></a><tt class="py-lineno">3560</tt>  <tt class="py-line">                        <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> </tt>\r
-<a name="L3561"></a><tt class="py-lineno">3561</tt>  <tt class="py-line">\r </tt>
-<a name="L3562"></a><tt class="py-lineno">3562</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">maxException</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3563"></a><tt class="py-lineno">3563</tt>  <tt class="py-line">            <tt class="py-name">maxException</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> </tt>\r
-<a name="L3564"></a><tt class="py-lineno">3564</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">maxException</tt> </tt>\r
-<a name="L3565"></a><tt class="py-lineno">3565</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3566"></a><tt class="py-lineno">3566</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-561" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-561', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-string">"no defined alternatives to match"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L3567"></a><tt class="py-lineno">3567</tt>  <tt class="py-line">\r </tt>
-<a name="L3568"></a><tt class="py-lineno">3568</tt>  <tt class="py-line">\r </tt>
-<a name="Or.__ixor__"></a><div id="Or.__ixor__-def"><a name="L3569"></a><tt class="py-lineno">3569</tt> <a class="py-toggle" href="#" id="Or.__ixor__-toggle" onclick="return toggle('Or.__ixor__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Or-class.html#__ixor__">__ixor__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or.__ixor__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Or.__ixor__-expanded"><a name="L3570"></a><tt class="py-lineno">3570</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3571"></a><tt class="py-lineno">3571</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-562" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-562', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3572"></a><tt class="py-lineno">3572</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-563', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> <tt class="py-comment">#Or( [ self, other ] )</tt> </tt>\r
-</div><a name="L3573"></a><tt class="py-lineno">3573</tt>  <tt class="py-line">\r </tt>
-<a name="Or.__str__"></a><div id="Or.__str__-def"><a name="L3574"></a><tt class="py-lineno">3574</tt> <a class="py-toggle" href="#" id="Or.__str__-toggle" onclick="return toggle('Or.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Or-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Or.__str__-expanded"><a name="L3575"></a><tt class="py-lineno">3575</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3576"></a><tt class="py-lineno">3576</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3577"></a><tt class="py-lineno">3577</tt>  <tt class="py-line">\r </tt>
-<a name="L3578"></a><tt class="py-lineno">3578</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3579"></a><tt class="py-lineno">3579</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"{"</tt> <tt class="py-op">+</tt> <tt class="py-string">" ^ "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}"</tt> </tt>\r
-<a name="L3580"></a><tt class="py-lineno">3580</tt>  <tt class="py-line">\r </tt>
-<a name="L3581"></a><tt class="py-lineno">3581</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div><a name="L3582"></a><tt class="py-lineno">3582</tt>  <tt class="py-line">\r </tt>
-<a name="Or.checkRecursion"></a><div id="Or.checkRecursion-def"><a name="L3583"></a><tt class="py-lineno">3583</tt> <a class="py-toggle" href="#" id="Or.checkRecursion-toggle" onclick="return toggle('Or.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Or-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Or.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Or.checkRecursion-expanded"><a name="L3584"></a><tt class="py-lineno">3584</tt>  <tt class="py-line">        <tt class="py-name">subRecCheckList</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3585"></a><tt class="py-lineno">3585</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3586"></a><tt class="py-lineno">3586</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-564" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-564', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-name">subRecCheckList</tt> <tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3587"></a><tt class="py-lineno">3587</tt>  <tt class="py-line">\r </tt>
-<a name="MatchFirst"></a><div id="MatchFirst-def"><a name="L3588"></a><tt class="py-lineno">3588</tt>  <tt class="py-line">\r </tt>
-<a name="L3589"></a><tt class="py-lineno">3589</tt> <a class="py-toggle" href="#" id="MatchFirst-toggle" onclick="return toggle('MatchFirst');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html">MatchFirst</a><tt class="py-op">(</tt><tt class="py-base-class">ParseExpression</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MatchFirst-expanded"><a name="L3590"></a><tt class="py-lineno">3590</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3591"></a><tt class="py-lineno">3591</tt>  <tt class="py-line"><tt class="py-docstring">    Requires that at least one C{ParseExpression} is found.\r</tt> </tt>
-<a name="L3592"></a><tt class="py-lineno">3592</tt>  <tt class="py-line"><tt class="py-docstring">    If two expressions match, the first one listed is the one that will match.\r</tt> </tt>
-<a name="L3593"></a><tt class="py-lineno">3593</tt>  <tt class="py-line"><tt class="py-docstring">    May be constructed using the C{'|'} operator.\r</tt> </tt>
-<a name="L3594"></a><tt class="py-lineno">3594</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3595"></a><tt class="py-lineno">3595</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3596"></a><tt class="py-lineno">3596</tt>  <tt class="py-line"><tt class="py-docstring">        # construct MatchFirst using '|' operator\r</tt> </tt>
-<a name="L3597"></a><tt class="py-lineno">3597</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3598"></a><tt class="py-lineno">3598</tt>  <tt class="py-line"><tt class="py-docstring">        # watch the order of expressions to match\r</tt> </tt>
-<a name="L3599"></a><tt class="py-lineno">3599</tt>  <tt class="py-line"><tt class="py-docstring">        number = Word(nums) | Combine(Word(nums) + '.' + Word(nums))\r</tt> </tt>
-<a name="L3600"></a><tt class="py-lineno">3600</tt>  <tt class="py-line"><tt class="py-docstring">        print(number.searchString("123 3.1416 789")) #  Fail! -&gt; [['123'], ['3'], ['1416'], ['789']]\r</tt> </tt>
-<a name="L3601"></a><tt class="py-lineno">3601</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3602"></a><tt class="py-lineno">3602</tt>  <tt class="py-line"><tt class="py-docstring">        # put more selective expression first\r</tt> </tt>
-<a name="L3603"></a><tt class="py-lineno">3603</tt>  <tt class="py-line"><tt class="py-docstring">        number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums)\r</tt> </tt>
-<a name="L3604"></a><tt class="py-lineno">3604</tt>  <tt class="py-line"><tt class="py-docstring">        print(number.searchString("123 3.1416 789")) #  Better -&gt; [['123'], ['3.1416'], ['789']]\r</tt> </tt>
-<a name="L3605"></a><tt class="py-lineno">3605</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="MatchFirst.__init__"></a><div id="MatchFirst.__init__-def"><a name="L3606"></a><tt class="py-lineno">3606</tt> <a class="py-toggle" href="#" id="MatchFirst.__init__-toggle" onclick="return toggle('MatchFirst.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exprs</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MatchFirst.__init__-expanded"><a name="L3607"></a><tt class="py-lineno">3607</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-565" class="py-name"><a title="pyparsing.MatchFirst" class="py-name" href="#" onclick="return doclink('link-565', 'MatchFirst', 'link-292');">MatchFirst</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-566', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3608"></a><tt class="py-lineno">3608</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3609"></a><tt class="py-lineno">3609</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">any</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3610"></a><tt class="py-lineno">3610</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3611"></a><tt class="py-lineno">3611</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L3612"></a><tt class="py-lineno">3612</tt>  <tt class="py-line">\r </tt>
-<a name="MatchFirst.parseImpl"></a><div id="MatchFirst.parseImpl-def"><a name="L3613"></a><tt class="py-lineno">3613</tt> <a class="py-toggle" href="#" id="MatchFirst.parseImpl-toggle" onclick="return toggle('MatchFirst.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MatchFirst.parseImpl-expanded"><a name="L3614"></a><tt class="py-lineno">3614</tt>  <tt class="py-line">        <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>\r
-<a name="L3615"></a><tt class="py-lineno">3615</tt>  <tt class="py-line">        <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3616"></a><tt class="py-lineno">3616</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3617"></a><tt class="py-lineno">3617</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3618"></a><tt class="py-lineno">3618</tt>  <tt class="py-line">                <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3619"></a><tt class="py-lineno">3619</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-<a name="L3620"></a><tt class="py-lineno">3620</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-567" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-567', 'ParseException', 'link-145');">ParseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3621"></a><tt class="py-lineno">3621</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxExcLoc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3622"></a><tt class="py-lineno">3622</tt>  <tt class="py-line">                    <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> </tt>\r
-<a name="L3623"></a><tt class="py-lineno">3623</tt>  <tt class="py-line">                    <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">loc</tt> </tt>\r
-<a name="L3624"></a><tt class="py-lineno">3624</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3625"></a><tt class="py-lineno">3625</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxExcLoc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3626"></a><tt class="py-lineno">3626</tt>  <tt class="py-line">                    <tt class="py-name">maxException</tt> <tt class="py-op">=</tt> <tt id="link-568" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-568', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3627"></a><tt class="py-lineno">3627</tt>  <tt class="py-line">                    <tt class="py-name">maxExcLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3628"></a><tt class="py-lineno">3628</tt>  <tt class="py-line">\r </tt>
-<a name="L3629"></a><tt class="py-lineno">3629</tt>  <tt class="py-line">        <tt class="py-comment"># only got here if no expression matched, raise exception for match that made it the furthest</tt>\r </tt>
-<a name="L3630"></a><tt class="py-lineno">3630</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3631"></a><tt class="py-lineno">3631</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">maxException</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3632"></a><tt class="py-lineno">3632</tt>  <tt class="py-line">                <tt class="py-name">maxException</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> </tt>\r
-<a name="L3633"></a><tt class="py-lineno">3633</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">maxException</tt> </tt>\r
-<a name="L3634"></a><tt class="py-lineno">3634</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3635"></a><tt class="py-lineno">3635</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-569" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-569', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-string">"no defined alternatives to match"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L3636"></a><tt class="py-lineno">3636</tt>  <tt class="py-line">\r </tt>
-<a name="MatchFirst.__ior__"></a><div id="MatchFirst.__ior__-def"><a name="L3637"></a><tt class="py-lineno">3637</tt> <a class="py-toggle" href="#" id="MatchFirst.__ior__-toggle" onclick="return toggle('MatchFirst.__ior__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html#__ior__">__ior__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst.__ior__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MatchFirst.__ior__-expanded"><a name="L3638"></a><tt class="py-lineno">3638</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3639"></a><tt class="py-lineno">3639</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-570" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-570', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3640"></a><tt class="py-lineno">3640</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-571" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-571', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> <tt class="py-comment">#MatchFirst( [ self, other ] )</tt> </tt>\r
-</div><a name="L3641"></a><tt class="py-lineno">3641</tt>  <tt class="py-line">\r </tt>
-<a name="MatchFirst.__str__"></a><div id="MatchFirst.__str__-def"><a name="L3642"></a><tt class="py-lineno">3642</tt> <a class="py-toggle" href="#" id="MatchFirst.__str__-toggle" onclick="return toggle('MatchFirst.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MatchFirst.__str__-expanded"><a name="L3643"></a><tt class="py-lineno">3643</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3644"></a><tt class="py-lineno">3644</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3645"></a><tt class="py-lineno">3645</tt>  <tt class="py-line">\r </tt>
-<a name="L3646"></a><tt class="py-lineno">3646</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3647"></a><tt class="py-lineno">3647</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"{"</tt> <tt class="py-op">+</tt> <tt class="py-string">" | "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}"</tt> </tt>\r
-<a name="L3648"></a><tt class="py-lineno">3648</tt>  <tt class="py-line">\r </tt>
-<a name="L3649"></a><tt class="py-lineno">3649</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div><a name="L3650"></a><tt class="py-lineno">3650</tt>  <tt class="py-line">\r </tt>
-<a name="MatchFirst.checkRecursion"></a><div id="MatchFirst.checkRecursion-def"><a name="L3651"></a><tt class="py-lineno">3651</tt> <a class="py-toggle" href="#" id="MatchFirst.checkRecursion-toggle" onclick="return toggle('MatchFirst.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.MatchFirst-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="MatchFirst.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MatchFirst.checkRecursion-expanded"><a name="L3652"></a><tt class="py-lineno">3652</tt>  <tt class="py-line">        <tt class="py-name">subRecCheckList</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3653"></a><tt class="py-lineno">3653</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3654"></a><tt class="py-lineno">3654</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-572', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-name">subRecCheckList</tt> <tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3655"></a><tt class="py-lineno">3655</tt>  <tt class="py-line">\r </tt>
-<a name="Each"></a><div id="Each-def"><a name="L3656"></a><tt class="py-lineno">3656</tt>  <tt class="py-line">\r </tt>
-<a name="L3657"></a><tt class="py-lineno">3657</tt> <a class="py-toggle" href="#" id="Each-toggle" onclick="return toggle('Each');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Each-class.html">Each</a><tt class="py-op">(</tt><tt class="py-base-class">ParseExpression</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Each-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Each-expanded"><a name="L3658"></a><tt class="py-lineno">3658</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3659"></a><tt class="py-lineno">3659</tt>  <tt class="py-line"><tt class="py-docstring">    Requires all given C{ParseExpression}s to be found, but in any order.\r</tt> </tt>
-<a name="L3660"></a><tt class="py-lineno">3660</tt>  <tt class="py-line"><tt class="py-docstring">    Expressions may be separated by whitespace.\r</tt> </tt>
-<a name="L3661"></a><tt class="py-lineno">3661</tt>  <tt class="py-line"><tt class="py-docstring">    May be constructed using the C{'&amp;'} operator.\r</tt> </tt>
-<a name="L3662"></a><tt class="py-lineno">3662</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3663"></a><tt class="py-lineno">3663</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3664"></a><tt class="py-lineno">3664</tt>  <tt class="py-line"><tt class="py-docstring">        color = oneOf("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN")\r</tt> </tt>
-<a name="L3665"></a><tt class="py-lineno">3665</tt>  <tt class="py-line"><tt class="py-docstring">        shape_type = oneOf("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON")\r</tt> </tt>
-<a name="L3666"></a><tt class="py-lineno">3666</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums)\r</tt> </tt>
-<a name="L3667"></a><tt class="py-lineno">3667</tt>  <tt class="py-line"><tt class="py-docstring">        shape_attr = "shape:" + shape_type("shape")\r</tt> </tt>
-<a name="L3668"></a><tt class="py-lineno">3668</tt>  <tt class="py-line"><tt class="py-docstring">        posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn")\r</tt> </tt>
-<a name="L3669"></a><tt class="py-lineno">3669</tt>  <tt class="py-line"><tt class="py-docstring">        color_attr = "color:" + color("color")\r</tt> </tt>
-<a name="L3670"></a><tt class="py-lineno">3670</tt>  <tt class="py-line"><tt class="py-docstring">        size_attr = "size:" + integer("size")\r</tt> </tt>
-<a name="L3671"></a><tt class="py-lineno">3671</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3672"></a><tt class="py-lineno">3672</tt>  <tt class="py-line"><tt class="py-docstring">        # use Each (using operator '&amp;') to accept attributes in any order\r</tt> </tt>
-<a name="L3673"></a><tt class="py-lineno">3673</tt>  <tt class="py-line"><tt class="py-docstring">        # (shape and posn are required, color and size are optional)\r</tt> </tt>
-<a name="L3674"></a><tt class="py-lineno">3674</tt>  <tt class="py-line"><tt class="py-docstring">        shape_spec = shape_attr &amp; posn_attr &amp; Optional(color_attr) &amp; Optional(size_attr)\r</tt> </tt>
-<a name="L3675"></a><tt class="py-lineno">3675</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3676"></a><tt class="py-lineno">3676</tt>  <tt class="py-line"><tt class="py-docstring">        shape_spec.runTests('''\r</tt> </tt>
-<a name="L3677"></a><tt class="py-lineno">3677</tt>  <tt class="py-line"><tt class="py-docstring">            shape: SQUARE color: BLACK posn: 100, 120\r</tt> </tt>
-<a name="L3678"></a><tt class="py-lineno">3678</tt>  <tt class="py-line"><tt class="py-docstring">            shape: CIRCLE size: 50 color: BLUE posn: 50,80\r</tt> </tt>
-<a name="L3679"></a><tt class="py-lineno">3679</tt>  <tt class="py-line"><tt class="py-docstring">            color:GREEN size:20 shape:TRIANGLE posn:20,40\r</tt> </tt>
-<a name="L3680"></a><tt class="py-lineno">3680</tt>  <tt class="py-line"><tt class="py-docstring">            '''\r</tt> </tt>
-<a name="L3681"></a><tt class="py-lineno">3681</tt>  <tt class="py-line"><tt class="py-docstring">            )\r</tt> </tt>
-<a name="L3682"></a><tt class="py-lineno">3682</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L3683"></a><tt class="py-lineno">3683</tt>  <tt class="py-line"><tt class="py-docstring">        shape: SQUARE color: BLACK posn: 100, 120\r</tt> </tt>
-<a name="L3684"></a><tt class="py-lineno">3684</tt>  <tt class="py-line"><tt class="py-docstring">        ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']]\r</tt> </tt>
-<a name="L3685"></a><tt class="py-lineno">3685</tt>  <tt class="py-line"><tt class="py-docstring">        - color: BLACK\r</tt> </tt>
-<a name="L3686"></a><tt class="py-lineno">3686</tt>  <tt class="py-line"><tt class="py-docstring">        - posn: ['100', ',', '120']\r</tt> </tt>
-<a name="L3687"></a><tt class="py-lineno">3687</tt>  <tt class="py-line"><tt class="py-docstring">          - x: 100\r</tt> </tt>
-<a name="L3688"></a><tt class="py-lineno">3688</tt>  <tt class="py-line"><tt class="py-docstring">          - y: 120\r</tt> </tt>
-<a name="L3689"></a><tt class="py-lineno">3689</tt>  <tt class="py-line"><tt class="py-docstring">        - shape: SQUARE\r</tt> </tt>
-<a name="L3690"></a><tt class="py-lineno">3690</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3691"></a><tt class="py-lineno">3691</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3692"></a><tt class="py-lineno">3692</tt>  <tt class="py-line"><tt class="py-docstring">        shape: CIRCLE size: 50 color: BLUE posn: 50,80\r</tt> </tt>
-<a name="L3693"></a><tt class="py-lineno">3693</tt>  <tt class="py-line"><tt class="py-docstring">        ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']]\r</tt> </tt>
-<a name="L3694"></a><tt class="py-lineno">3694</tt>  <tt class="py-line"><tt class="py-docstring">        - color: BLUE\r</tt> </tt>
-<a name="L3695"></a><tt class="py-lineno">3695</tt>  <tt class="py-line"><tt class="py-docstring">        - posn: ['50', ',', '80']\r</tt> </tt>
-<a name="L3696"></a><tt class="py-lineno">3696</tt>  <tt class="py-line"><tt class="py-docstring">          - x: 50\r</tt> </tt>
-<a name="L3697"></a><tt class="py-lineno">3697</tt>  <tt class="py-line"><tt class="py-docstring">          - y: 80\r</tt> </tt>
-<a name="L3698"></a><tt class="py-lineno">3698</tt>  <tt class="py-line"><tt class="py-docstring">        - shape: CIRCLE\r</tt> </tt>
-<a name="L3699"></a><tt class="py-lineno">3699</tt>  <tt class="py-line"><tt class="py-docstring">        - size: 50\r</tt> </tt>
-<a name="L3700"></a><tt class="py-lineno">3700</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3701"></a><tt class="py-lineno">3701</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3702"></a><tt class="py-lineno">3702</tt>  <tt class="py-line"><tt class="py-docstring">        color: GREEN size: 20 shape: TRIANGLE posn: 20,40\r</tt> </tt>
-<a name="L3703"></a><tt class="py-lineno">3703</tt>  <tt class="py-line"><tt class="py-docstring">        ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']]\r</tt> </tt>
-<a name="L3704"></a><tt class="py-lineno">3704</tt>  <tt class="py-line"><tt class="py-docstring">        - color: GREEN\r</tt> </tt>
-<a name="L3705"></a><tt class="py-lineno">3705</tt>  <tt class="py-line"><tt class="py-docstring">        - posn: ['20', ',', '40']\r</tt> </tt>
-<a name="L3706"></a><tt class="py-lineno">3706</tt>  <tt class="py-line"><tt class="py-docstring">          - x: 20\r</tt> </tt>
-<a name="L3707"></a><tt class="py-lineno">3707</tt>  <tt class="py-line"><tt class="py-docstring">          - y: 40\r</tt> </tt>
-<a name="L3708"></a><tt class="py-lineno">3708</tt>  <tt class="py-line"><tt class="py-docstring">        - shape: TRIANGLE\r</tt> </tt>
-<a name="L3709"></a><tt class="py-lineno">3709</tt>  <tt class="py-line"><tt class="py-docstring">        - size: 20\r</tt> </tt>
-<a name="L3710"></a><tt class="py-lineno">3710</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Each.__init__"></a><div id="Each.__init__-def"><a name="L3711"></a><tt class="py-lineno">3711</tt> <a class="py-toggle" href="#" id="Each.__init__-toggle" onclick="return toggle('Each.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Each-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exprs</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Each.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Each.__init__-expanded"><a name="L3712"></a><tt class="py-lineno">3712</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-573" class="py-name"><a title="pyparsing.Each" class="py-name" href="#" onclick="return doclink('link-573', 'Each', 'link-302');">Each</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-574', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">exprs</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3713"></a><tt class="py-lineno">3713</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">all</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3714"></a><tt class="py-lineno">3714</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3715"></a><tt class="py-lineno">3715</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initExprGroups</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L3716"></a><tt class="py-lineno">3716</tt>  <tt class="py-line">\r </tt>
-<a name="Each.parseImpl"></a><div id="Each.parseImpl-def"><a name="L3717"></a><tt class="py-lineno">3717</tt> <a class="py-toggle" href="#" id="Each.parseImpl-toggle" onclick="return toggle('Each.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Each-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Each.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Each.parseImpl-expanded"><a name="L3718"></a><tt class="py-lineno">3718</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initExprGroups</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3719"></a><tt class="py-lineno">3719</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opt1map</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-575" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-575', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3720"></a><tt class="py-lineno">3720</tt>  <tt class="py-line">            <tt class="py-name">opt1</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-576" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-576', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3721"></a><tt class="py-lineno">3721</tt>  <tt class="py-line">            <tt class="py-name">opt2</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-577" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-577', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3722"></a><tt class="py-lineno">3722</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">optionals</tt> <tt class="py-op">=</tt> <tt class="py-name">opt1</tt> <tt class="py-op">+</tt> <tt class="py-name">opt2</tt> </tt>\r
-<a name="L3723"></a><tt class="py-lineno">3723</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multioptionals</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-578" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-578', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3724"></a><tt class="py-lineno">3724</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multirequired</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-579" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-579', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3725"></a><tt class="py-lineno">3725</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-580" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-580', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">,</tt><tt id="link-581" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-581', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">,</tt><tt id="link-582" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-582', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3726"></a><tt class="py-lineno">3726</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multirequired</tt> </tt>\r
-<a name="L3727"></a><tt class="py-lineno">3727</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initExprGroups</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3728"></a><tt class="py-lineno">3728</tt>  <tt class="py-line">        <tt class="py-name">tmpLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L3729"></a><tt class="py-lineno">3729</tt>  <tt class="py-line">        <tt class="py-name">tmpReqd</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3730"></a><tt class="py-lineno">3730</tt>  <tt class="py-line">        <tt class="py-name">tmpOpt</tt>  <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">optionals</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3731"></a><tt class="py-lineno">3731</tt>  <tt class="py-line">        <tt class="py-name">matchOrder</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3732"></a><tt class="py-lineno">3732</tt>  <tt class="py-line">\r </tt>
-<a name="L3733"></a><tt class="py-lineno">3733</tt>  <tt class="py-line">        <tt class="py-name">keepMatching</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3734"></a><tt class="py-lineno">3734</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">keepMatching</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3735"></a><tt class="py-lineno">3735</tt>  <tt class="py-line">            <tt class="py-name">tmpExprs</tt> <tt class="py-op">=</tt> <tt class="py-name">tmpReqd</tt> <tt class="py-op">+</tt> <tt class="py-name">tmpOpt</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multioptionals</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multirequired</tt> </tt>\r
-<a name="L3736"></a><tt class="py-lineno">3736</tt>  <tt class="py-line">            <tt class="py-name">failed</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3737"></a><tt class="py-lineno">3737</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tmpExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3738"></a><tt class="py-lineno">3738</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3739"></a><tt class="py-lineno">3739</tt>  <tt class="py-line">                    <tt class="py-name">tmpLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-583', 'tryParse', 'link-171');">tryParse</a></tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tmpLoc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3740"></a><tt class="py-lineno">3740</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-584" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-584', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3741"></a><tt class="py-lineno">3741</tt>  <tt class="py-line">                    <tt class="py-name">failed</tt><tt class="py-op">.</tt><tt id="link-585" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-585', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3742"></a><tt class="py-lineno">3742</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3743"></a><tt class="py-lineno">3743</tt>  <tt class="py-line">                    <tt class="py-name">matchOrder</tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-586', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opt1map</tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-587', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3744"></a><tt class="py-lineno">3744</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tmpReqd</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3745"></a><tt class="py-lineno">3745</tt>  <tt class="py-line">                        <tt class="py-name">tmpReqd</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3746"></a><tt class="py-lineno">3746</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tmpOpt</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3747"></a><tt class="py-lineno">3747</tt>  <tt class="py-line">                        <tt class="py-name">tmpOpt</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3748"></a><tt class="py-lineno">3748</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">failed</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tmpExprs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3749"></a><tt class="py-lineno">3749</tt>  <tt class="py-line">                <tt class="py-name">keepMatching</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3750"></a><tt class="py-lineno">3750</tt>  <tt class="py-line">\r </tt>
-<a name="L3751"></a><tt class="py-lineno">3751</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tmpReqd</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3752"></a><tt class="py-lineno">3752</tt>  <tt class="py-line">            <tt class="py-name">missing</tt> <tt class="py-op">=</tt> <tt class="py-string">", "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tmpReqd</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3753"></a><tt class="py-lineno">3753</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-588" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-588', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-string">"Missing one or more required elements (%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">missing</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3754"></a><tt class="py-lineno">3754</tt>  <tt class="py-line">\r </tt>
-<a name="L3755"></a><tt class="py-lineno">3755</tt>  <tt class="py-line">        <tt class="py-comment"># add any unmatched Optionals, in case they have default values defined</tt>\r </tt>
-<a name="L3756"></a><tt class="py-lineno">3756</tt>  <tt class="py-line">        <tt class="py-name">matchOrder</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt id="link-589" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-589', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tmpOpt</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3757"></a><tt class="py-lineno">3757</tt>  <tt class="py-line">\r </tt>
-<a name="L3758"></a><tt class="py-lineno">3758</tt>  <tt class="py-line">        <tt class="py-name">resultlist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3759"></a><tt class="py-lineno">3759</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">matchOrder</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3760"></a><tt class="py-lineno">3760</tt>  <tt class="py-line">            <tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">results</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">doActions</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3761"></a><tt class="py-lineno">3761</tt>  <tt class="py-line">            <tt class="py-name">resultlist</tt><tt class="py-op">.</tt><tt id="link-590" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-590', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">results</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3762"></a><tt class="py-lineno">3762</tt>  <tt class="py-line">\r </tt>
-<a name="L3763"></a><tt class="py-lineno">3763</tt>  <tt class="py-line">        <tt class="py-name">finalResults</tt> <tt class="py-op">=</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">resultlist</tt><tt class="py-op">,</tt> <tt id="link-591" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-591', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3764"></a><tt class="py-lineno">3764</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">finalResults</tt> </tt>\r
-</div><a name="L3765"></a><tt class="py-lineno">3765</tt>  <tt class="py-line">\r </tt>
-<a name="Each.__str__"></a><div id="Each.__str__-def"><a name="L3766"></a><tt class="py-lineno">3766</tt> <a class="py-toggle" href="#" id="Each.__str__-toggle" onclick="return toggle('Each.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Each-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Each.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Each.__str__-expanded"><a name="L3767"></a><tt class="py-lineno">3767</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3768"></a><tt class="py-lineno">3768</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3769"></a><tt class="py-lineno">3769</tt>  <tt class="py-line">\r </tt>
-<a name="L3770"></a><tt class="py-lineno">3770</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3771"></a><tt class="py-lineno">3771</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"{"</tt> <tt class="py-op">+</tt> <tt class="py-string">" &amp; "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}"</tt> </tt>\r
-<a name="L3772"></a><tt class="py-lineno">3772</tt>  <tt class="py-line">\r </tt>
-<a name="L3773"></a><tt class="py-lineno">3773</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div><a name="L3774"></a><tt class="py-lineno">3774</tt>  <tt class="py-line">\r </tt>
-<a name="Each.checkRecursion"></a><div id="Each.checkRecursion-def"><a name="L3775"></a><tt class="py-lineno">3775</tt> <a class="py-toggle" href="#" id="Each.checkRecursion-toggle" onclick="return toggle('Each.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Each-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Each.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Each.checkRecursion-expanded"><a name="L3776"></a><tt class="py-lineno">3776</tt>  <tt class="py-line">        <tt class="py-name">subRecCheckList</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3777"></a><tt class="py-lineno">3777</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3778"></a><tt class="py-lineno">3778</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-592" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-592', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-name">subRecCheckList</tt> <tt class="py-op">)</tt> </tt>\r
-</div></div><a name="L3779"></a><tt class="py-lineno">3779</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance"></a><div id="ParseElementEnhance-def"><a name="L3780"></a><tt class="py-lineno">3780</tt>  <tt class="py-line">\r </tt>
-<a name="L3781"></a><tt class="py-lineno">3781</tt> <a class="py-toggle" href="#" id="ParseElementEnhance-toggle" onclick="return toggle('ParseElementEnhance');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a><tt class="py-op">(</tt><tt class="py-base-class">ParserElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseElementEnhance-expanded"><a name="L3782"></a><tt class="py-lineno">3782</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3783"></a><tt class="py-lineno">3783</tt>  <tt class="py-line"><tt class="py-docstring">    Abstract subclass of C{ParserElement}, for combining and post-processing parsed tokens.\r</tt> </tt>
-<a name="L3784"></a><tt class="py-lineno">3784</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="ParseElementEnhance.__init__"></a><div id="ParseElementEnhance.__init__-def"><a name="L3785"></a><tt class="py-lineno">3785</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.__init__-toggle" onclick="return toggle('ParseElementEnhance.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.__init__-expanded"><a name="L3786"></a><tt class="py-lineno">3786</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-593" class="py-name" targets="Class pyparsing.ParseElementEnhance=pyparsing.ParseElementEnhance-class.html"><a title="pyparsing.ParseElementEnhance" class="py-name" href="#" onclick="return doclink('link-593', 'ParseElementEnhance', 'link-593');">ParseElementEnhance</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-594" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-594', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">savelist</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3787"></a><tt class="py-lineno">3787</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3788"></a><tt class="py-lineno">3788</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt id="link-595" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-595', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">,</tt> <tt id="link-596" class="py-name"><a title="pyparsing.Token" class="py-name" href="#" onclick="return doclink('link-596', 'Token', 'link-343');">Token</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3789"></a><tt class="py-lineno">3789</tt>  <tt class="py-line">                <tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt id="link-597" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-597', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3790"></a><tt class="py-lineno">3790</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3791"></a><tt class="py-lineno">3791</tt>  <tt class="py-line">                <tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt id="link-598" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-598', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt><tt id="link-599" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-599', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3792"></a><tt class="py-lineno">3792</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt> </tt>\r
-<a name="L3793"></a><tt class="py-lineno">3793</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L3794"></a><tt class="py-lineno">3794</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3795"></a><tt class="py-lineno">3795</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> </tt>\r
-<a name="L3796"></a><tt class="py-lineno">3796</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> </tt>\r
-<a name="L3797"></a><tt class="py-lineno">3797</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-600" class="py-name"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-600', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3798"></a><tt class="py-lineno">3798</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> </tt>\r
-<a name="L3799"></a><tt class="py-lineno">3799</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> </tt>\r
-<a name="L3800"></a><tt class="py-lineno">3800</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> </tt>\r
-<a name="L3801"></a><tt class="py-lineno">3801</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">.</tt><tt id="link-601" class="py-name"><a title="pyparsing.ParseResults.extend" class="py-name" href="#" onclick="return doclink('link-601', 'extend', 'link-70');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L3802"></a><tt class="py-lineno">3802</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.parseImpl"></a><div id="ParseElementEnhance.parseImpl-def"><a name="L3803"></a><tt class="py-lineno">3803</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.parseImpl-toggle" onclick="return toggle('ParseElementEnhance.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.parseImpl-expanded"><a name="L3804"></a><tt class="py-lineno">3804</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3805"></a><tt class="py-lineno">3805</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3806"></a><tt class="py-lineno">3806</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3807"></a><tt class="py-lineno">3807</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-602" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-602', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L3808"></a><tt class="py-lineno">3808</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.leaveWhitespace"></a><div id="ParseElementEnhance.leaveWhitespace-def"><a name="L3809"></a><tt class="py-lineno">3809</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.leaveWhitespace-toggle" onclick="return toggle('ParseElementEnhance.leaveWhitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.leaveWhitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.leaveWhitespace-expanded"><a name="L3810"></a><tt class="py-lineno">3810</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3811"></a><tt class="py-lineno">3811</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-603" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-603', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3812"></a><tt class="py-lineno">3812</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3813"></a><tt class="py-lineno">3813</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-604" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-604', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3814"></a><tt class="py-lineno">3814</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3815"></a><tt class="py-lineno">3815</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.ignore"></a><div id="ParseElementEnhance.ignore-def"><a name="L3816"></a><tt class="py-lineno">3816</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.ignore-toggle" onclick="return toggle('ParseElementEnhance.ignore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.ignore-expanded"><a name="L3817"></a><tt class="py-lineno">3817</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-605" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-605', 'Suppress', 'link-308');">Suppress</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3818"></a><tt class="py-lineno">3818</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">other</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3819"></a><tt class="py-lineno">3819</tt>  <tt class="py-line">                <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-606" class="py-name"><a title="pyparsing.ParseElementEnhance" class="py-name" href="#" onclick="return doclink('link-606', 'ParseElementEnhance', 'link-593');">ParseElementEnhance</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-607" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-607', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3820"></a><tt class="py-lineno">3820</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3821"></a><tt class="py-lineno">3821</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-608', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3822"></a><tt class="py-lineno">3822</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3823"></a><tt class="py-lineno">3823</tt>  <tt class="py-line">            <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-609" class="py-name"><a title="pyparsing.ParseElementEnhance" class="py-name" href="#" onclick="return doclink('link-609', 'ParseElementEnhance', 'link-593');">ParseElementEnhance</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-610" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-610', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3824"></a><tt class="py-lineno">3824</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3825"></a><tt class="py-lineno">3825</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-611" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-611', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3826"></a><tt class="py-lineno">3826</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3827"></a><tt class="py-lineno">3827</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.streamline"></a><div id="ParseElementEnhance.streamline-def"><a name="L3828"></a><tt class="py-lineno">3828</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.streamline-toggle" onclick="return toggle('ParseElementEnhance.streamline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.streamline-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.streamline-expanded"><a name="L3829"></a><tt class="py-lineno">3829</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-612" class="py-name"><a title="pyparsing.ParseElementEnhance" class="py-name" href="#" onclick="return doclink('link-612', 'ParseElementEnhance', 'link-593');">ParseElementEnhance</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-613" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-613', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3830"></a><tt class="py-lineno">3830</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3831"></a><tt class="py-lineno">3831</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-614" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-614', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3832"></a><tt class="py-lineno">3832</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L3833"></a><tt class="py-lineno">3833</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.checkRecursion"></a><div id="ParseElementEnhance.checkRecursion-def"><a name="L3834"></a><tt class="py-lineno">3834</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.checkRecursion-toggle" onclick="return toggle('ParseElementEnhance.checkRecursion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parseElementList</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.checkRecursion-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.checkRecursion-expanded"><a name="L3835"></a><tt class="py-lineno">3835</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3836"></a><tt class="py-lineno">3836</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-615" class="py-name" targets="Class pyparsing.RecursiveGrammarException=pyparsing.RecursiveGrammarException-class.html"><a title="pyparsing.RecursiveGrammarException" class="py-name" href="#" onclick="return doclink('link-615', 'RecursiveGrammarException', 'link-615');">RecursiveGrammarException</a></tt><tt class="py-op">(</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3837"></a><tt class="py-lineno">3837</tt>  <tt class="py-line">        <tt class="py-name">subRecCheckList</tt> <tt class="py-op">=</tt> <tt class="py-name">parseElementList</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L3838"></a><tt class="py-lineno">3838</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3839"></a><tt class="py-lineno">3839</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-616', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-name">subRecCheckList</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L3840"></a><tt class="py-lineno">3840</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.validate"></a><div id="ParseElementEnhance.validate-def"><a name="L3841"></a><tt class="py-lineno">3841</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.validate-toggle" onclick="return toggle('ParseElementEnhance.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#validate">validate</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">validateTrace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.validate-expanded"><a name="L3842"></a><tt class="py-lineno">3842</tt>  <tt class="py-line">        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">validateTrace</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3843"></a><tt class="py-lineno">3843</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3844"></a><tt class="py-lineno">3844</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name"><a title="pyparsing.Forward.validate
-pyparsing.ParseElementEnhance.validate
-pyparsing.ParseExpression.validate
-pyparsing.ParserElement.validate" class="py-name" href="#" onclick="return doclink('link-617', 'validate', 'link-529');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3845"></a><tt class="py-lineno">3845</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-618', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L3846"></a><tt class="py-lineno">3846</tt>  <tt class="py-line">\r </tt>
-<a name="ParseElementEnhance.__str__"></a><div id="ParseElementEnhance.__str__-def"><a name="L3847"></a><tt class="py-lineno">3847</tt> <a class="py-toggle" href="#" id="ParseElementEnhance.__str__-toggle" onclick="return toggle('ParseElementEnhance.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ParseElementEnhance.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParseElementEnhance.__str__-expanded"><a name="L3848"></a><tt class="py-lineno">3848</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3849"></a><tt class="py-lineno">3849</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-619" class="py-name"><a title="pyparsing.ParseElementEnhance" class="py-name" href="#" onclick="return doclink('link-619', 'ParseElementEnhance', 'link-593');">ParseElementEnhance</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-620" class="py-name"><a title="pyparsing.And.__str__
-pyparsing.CharsNotIn.__str__
-pyparsing.Each.__str__
-pyparsing.Forward.__str__
-pyparsing.MatchFirst.__str__
-pyparsing.NotAny.__str__
-pyparsing.OneOrMore.__str__
-pyparsing.Optional.__str__
-pyparsing.Or.__str__
-pyparsing.ParseBaseException.__str__
-pyparsing.ParseElementEnhance.__str__
-pyparsing.ParseExpression.__str__
-pyparsing.ParseResults.__str__
-pyparsing.ParserElement.__str__
-pyparsing.QuotedString.__str__
-pyparsing.RecursiveGrammarException.__str__
-pyparsing.Regex.__str__
-pyparsing.Word.__str__
-pyparsing.ZeroOrMore.__str__" class="py-name" href="#" onclick="return doclink('link-620', '__str__', 'link-400');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3850"></a><tt class="py-lineno">3850</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3851"></a><tt class="py-lineno">3851</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L3852"></a><tt class="py-lineno">3852</tt>  <tt class="py-line">\r </tt>
-<a name="L3853"></a><tt class="py-lineno">3853</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3854"></a><tt class="py-lineno">3854</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s:(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L3855"></a><tt class="py-lineno">3855</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L3856"></a><tt class="py-lineno">3856</tt>  <tt class="py-line">\r </tt>
-<a name="FollowedBy"></a><div id="FollowedBy-def"><a name="L3857"></a><tt class="py-lineno">3857</tt>  <tt class="py-line">\r </tt>
-<a name="L3858"></a><tt class="py-lineno">3858</tt> <a class="py-toggle" href="#" id="FollowedBy-toggle" onclick="return toggle('FollowedBy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.FollowedBy-class.html">FollowedBy</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="FollowedBy-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FollowedBy-expanded"><a name="L3859"></a><tt class="py-lineno">3859</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3860"></a><tt class="py-lineno">3860</tt>  <tt class="py-line"><tt class="py-docstring">    Lookahead matching of the given parse expression.  C{FollowedBy}\r</tt> </tt>
-<a name="L3861"></a><tt class="py-lineno">3861</tt>  <tt class="py-line"><tt class="py-docstring">    does I{not} advance the parsing position within the input string, it only\r</tt> </tt>
-<a name="L3862"></a><tt class="py-lineno">3862</tt>  <tt class="py-line"><tt class="py-docstring">    verifies that the specified parse expression matches at the current\r</tt> </tt>
-<a name="L3863"></a><tt class="py-lineno">3863</tt>  <tt class="py-line"><tt class="py-docstring">    position.  C{FollowedBy} always returns a null token list. If any\r</tt> </tt>
-<a name="L3864"></a><tt class="py-lineno">3864</tt>  <tt class="py-line"><tt class="py-docstring">    results names are defined in the lookahead expression, those *will* be\r</tt> </tt>
-<a name="L3865"></a><tt class="py-lineno">3865</tt>  <tt class="py-line"><tt class="py-docstring">    returned for access by name.\r</tt> </tt>
-<a name="L3866"></a><tt class="py-lineno">3866</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3867"></a><tt class="py-lineno">3867</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3868"></a><tt class="py-lineno">3868</tt>  <tt class="py-line"><tt class="py-docstring">        # use FollowedBy to match a label only if it is followed by a ':'\r</tt> </tt>
-<a name="L3869"></a><tt class="py-lineno">3869</tt>  <tt class="py-line"><tt class="py-docstring">        data_word = Word(alphas)\r</tt> </tt>
-<a name="L3870"></a><tt class="py-lineno">3870</tt>  <tt class="py-line"><tt class="py-docstring">        label = data_word + FollowedBy(':')\r</tt> </tt>
-<a name="L3871"></a><tt class="py-lineno">3871</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r</tt> </tt>
-<a name="L3872"></a><tt class="py-lineno">3872</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3873"></a><tt class="py-lineno">3873</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(attr_expr).parseString("shape: SQUARE color: BLACK posn: upper left").pprint()\r</tt> </tt>
-<a name="L3874"></a><tt class="py-lineno">3874</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L3875"></a><tt class="py-lineno">3875</tt>  <tt class="py-line"><tt class="py-docstring">        [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']]\r</tt> </tt>
-<a name="L3876"></a><tt class="py-lineno">3876</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="FollowedBy.__init__"></a><div id="FollowedBy.__init__-def"><a name="L3877"></a><tt class="py-lineno">3877</tt> <a class="py-toggle" href="#" id="FollowedBy.__init__-toggle" onclick="return toggle('FollowedBy.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.FollowedBy-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="FollowedBy.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FollowedBy.__init__-expanded"><a name="L3878"></a><tt class="py-lineno">3878</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-621" class="py-name" targets="Class pyparsing.FollowedBy=pyparsing.FollowedBy-class.html"><a title="pyparsing.FollowedBy" class="py-name" href="#" onclick="return doclink('link-621', 'FollowedBy', 'link-621');">FollowedBy</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-622" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-622', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3879"></a><tt class="py-lineno">3879</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L3880"></a><tt class="py-lineno">3880</tt>  <tt class="py-line">\r </tt>
-<a name="FollowedBy.parseImpl"></a><div id="FollowedBy.parseImpl-def"><a name="L3881"></a><tt class="py-lineno">3881</tt> <a class="py-toggle" href="#" id="FollowedBy.parseImpl-toggle" onclick="return toggle('FollowedBy.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.FollowedBy-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="FollowedBy.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FollowedBy.parseImpl-expanded"><a name="L3882"></a><tt class="py-lineno">3882</tt>  <tt class="py-line">        <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">=</tt><tt class="py-name">doActions</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3883"></a><tt class="py-lineno">3883</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3884"></a><tt class="py-lineno">3884</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L3885"></a><tt class="py-lineno">3885</tt>  <tt class="py-line">\r </tt>
-<a name="PrecededBy"></a><div id="PrecededBy-def"><a name="L3886"></a><tt class="py-lineno">3886</tt>  <tt class="py-line">\r </tt>
-<a name="L3887"></a><tt class="py-lineno">3887</tt> <a class="py-toggle" href="#" id="PrecededBy-toggle" onclick="return toggle('PrecededBy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.PrecededBy-class.html">PrecededBy</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="PrecededBy-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="PrecededBy-expanded"><a name="L3888"></a><tt class="py-lineno">3888</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3889"></a><tt class="py-lineno">3889</tt>  <tt class="py-line"><tt class="py-docstring">    Lookbehind matching of the given parse expression.  C{PrecededBy}\r</tt> </tt>
-<a name="L3890"></a><tt class="py-lineno">3890</tt>  <tt class="py-line"><tt class="py-docstring">    does not advance the parsing position within the input string, it only\r</tt> </tt>
-<a name="L3891"></a><tt class="py-lineno">3891</tt>  <tt class="py-line"><tt class="py-docstring">    verifies that the specified parse expression matches prior to the current\r</tt> </tt>
-<a name="L3892"></a><tt class="py-lineno">3892</tt>  <tt class="py-line"><tt class="py-docstring">    position.  C{PrecededBy} always returns a null token list, but if\r</tt> </tt>
-<a name="L3893"></a><tt class="py-lineno">3893</tt>  <tt class="py-line"><tt class="py-docstring">    a results name is defined on the given expression, it is returned.\r</tt> </tt>
-<a name="L3894"></a><tt class="py-lineno">3894</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3895"></a><tt class="py-lineno">3895</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L3896"></a><tt class="py-lineno">3896</tt>  <tt class="py-line"><tt class="py-docstring">     - expr - expression that must match prior to the current parse location\r</tt> </tt>
-<a name="L3897"></a><tt class="py-lineno">3897</tt>  <tt class="py-line"><tt class="py-docstring">     - retreat - (default=C{None}) - (int) maximum number of characters to\r</tt> </tt>
-<a name="L3898"></a><tt class="py-lineno">3898</tt>  <tt class="py-line"><tt class="py-docstring">       lookbehind prior to the current parse location\r</tt> </tt>
-<a name="L3899"></a><tt class="py-lineno">3899</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3900"></a><tt class="py-lineno">3900</tt>  <tt class="py-line"><tt class="py-docstring">    If the lookbehind expression is a string, Literal, Keyword, or a\r</tt> </tt>
-<a name="L3901"></a><tt class="py-lineno">3901</tt>  <tt class="py-line"><tt class="py-docstring">    Word or CharsNotIn with a specified exact or maximum length, then\r</tt> </tt>
-<a name="L3902"></a><tt class="py-lineno">3902</tt>  <tt class="py-line"><tt class="py-docstring">    the retreat parameter is not required. Otherwise, retreat must be\r</tt> </tt>
-<a name="L3903"></a><tt class="py-lineno">3903</tt>  <tt class="py-line"><tt class="py-docstring">    specified to give a maximum number of characters to look back from\r</tt> </tt>
-<a name="L3904"></a><tt class="py-lineno">3904</tt>  <tt class="py-line"><tt class="py-docstring">    the current parse position for a lookbehind match.\r</tt> </tt>
-<a name="L3905"></a><tt class="py-lineno">3905</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3906"></a><tt class="py-lineno">3906</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3907"></a><tt class="py-lineno">3907</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3908"></a><tt class="py-lineno">3908</tt>  <tt class="py-line"><tt class="py-docstring">        # VB-style variable names with type prefixes\r</tt> </tt>
-<a name="L3909"></a><tt class="py-lineno">3909</tt>  <tt class="py-line"><tt class="py-docstring">        int_var = PrecededBy("#") + pyparsing_common.identifier\r</tt> </tt>
-<a name="L3910"></a><tt class="py-lineno">3910</tt>  <tt class="py-line"><tt class="py-docstring">        str_var = PrecededBy("$") + pyparsing_common.identifier\r</tt> </tt>
-<a name="L3911"></a><tt class="py-lineno">3911</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3912"></a><tt class="py-lineno">3912</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="PrecededBy.__init__"></a><div id="PrecededBy.__init__-def"><a name="L3913"></a><tt class="py-lineno">3913</tt> <a class="py-toggle" href="#" id="PrecededBy.__init__-toggle" onclick="return toggle('PrecededBy.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.PrecededBy-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">retreat</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="PrecededBy.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="PrecededBy.__init__-expanded"><a name="L3914"></a><tt class="py-lineno">3914</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-623" class="py-name" targets="Class pyparsing.PrecededBy=pyparsing.PrecededBy-class.html"><a title="pyparsing.PrecededBy" class="py-name" href="#" onclick="return doclink('link-623', 'PrecededBy', 'link-623');">PrecededBy</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-624" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-624', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3915"></a><tt class="py-lineno">3915</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-625" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-625', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3916"></a><tt class="py-lineno">3916</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3917"></a><tt class="py-lineno">3917</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3918"></a><tt class="py-lineno">3918</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L3919"></a><tt class="py-lineno">3919</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3920"></a><tt class="py-lineno">3920</tt>  <tt class="py-line">            <tt class="py-name">retreat</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3921"></a><tt class="py-lineno">3921</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3922"></a><tt class="py-lineno">3922</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-626" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-626', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">,</tt> <tt id="link-627" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-627', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3923"></a><tt class="py-lineno">3923</tt>  <tt class="py-line">            <tt class="py-name">retreat</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">matchLen</tt> </tt>\r
-<a name="L3924"></a><tt class="py-lineno">3924</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3925"></a><tt class="py-lineno">3925</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-628" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-628', 'Word', 'link-392');">Word</a></tt><tt class="py-op">,</tt> <tt id="link-629" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-629', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> <tt class="py-op">!=</tt> <tt id="link-630" class="py-name"><a title="pyparsing._MAX_INT" class="py-name" href="#" onclick="return doclink('link-630', '_MAX_INT', 'link-8');">_MAX_INT</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3926"></a><tt class="py-lineno">3926</tt>  <tt class="py-line">            <tt class="py-name">retreat</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">maxLen</tt> </tt>\r
-<a name="L3927"></a><tt class="py-lineno">3927</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3928"></a><tt class="py-lineno">3928</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">_PositionToken</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3929"></a><tt class="py-lineno">3929</tt>  <tt class="py-line">            <tt class="py-name">retreat</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L3930"></a><tt class="py-lineno">3930</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3931"></a><tt class="py-lineno">3931</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">retreat</tt> <tt class="py-op">=</tt> <tt class="py-name">retreat</tt> </tt>\r
-<a name="L3932"></a><tt class="py-lineno">3932</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"not preceded by "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3933"></a><tt class="py-lineno">3933</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L3934"></a><tt class="py-lineno">3934</tt>  <tt class="py-line">\r </tt>
-<a name="PrecededBy.parseImpl"></a><div id="PrecededBy.parseImpl-def"><a name="L3935"></a><tt class="py-lineno">3935</tt> <a class="py-toggle" href="#" id="PrecededBy.parseImpl-toggle" onclick="return toggle('PrecededBy.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.PrecededBy-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="PrecededBy.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="PrecededBy.parseImpl-expanded"><a name="L3936"></a><tt class="py-lineno">3936</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exact</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3937"></a><tt class="py-lineno">3937</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">loc</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">retreat</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3938"></a><tt class="py-lineno">3938</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-631" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-631', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3939"></a><tt class="py-lineno">3939</tt>  <tt class="py-line">            <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">retreat</tt> </tt>\r
-<a name="L3940"></a><tt class="py-lineno">3940</tt>  <tt class="py-line">            <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">start</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3941"></a><tt class="py-lineno">3941</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3942"></a><tt class="py-lineno">3942</tt>  <tt class="py-line">            <tt class="py-comment"># retreat specified a maximum lookbehind window, iterate</tt>\r </tt>
-<a name="L3943"></a><tt class="py-lineno">3943</tt>  <tt class="py-line">            <tt class="py-name">test_expr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">+</tt> <tt id="link-632" class="py-name"><a title="pyparsing.StringEnd" class="py-name" href="#" onclick="return doclink('link-632', 'StringEnd', 'link-238');">StringEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3944"></a><tt class="py-lineno">3944</tt>  <tt class="py-line">            <tt class="py-name">instring_slice</tt> <tt class="py-op">=</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3945"></a><tt class="py-lineno">3945</tt>  <tt class="py-line">            <tt class="py-name">last_expr</tt> <tt class="py-op">=</tt> <tt id="link-633" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-633', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3946"></a><tt class="py-lineno">3946</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">retreat</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3947"></a><tt class="py-lineno">3947</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3948"></a><tt class="py-lineno">3948</tt>  <tt class="py-line">                    <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">test_expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring_slice</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">-</tt><tt class="py-name">offset</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3949"></a><tt class="py-lineno">3949</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-634" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-634', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">pbe</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3950"></a><tt class="py-lineno">3950</tt>  <tt class="py-line">                    <tt class="py-name">last_expr</tt> <tt class="py-op">=</tt> <tt class="py-name">pbe</tt> </tt>\r
-<a name="L3951"></a><tt class="py-lineno">3951</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3952"></a><tt class="py-lineno">3952</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>\r
-<a name="L3953"></a><tt class="py-lineno">3953</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3954"></a><tt class="py-lineno">3954</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">last_expr</tt> </tt>\r
-<a name="L3955"></a><tt class="py-lineno">3955</tt>  <tt class="py-line">        <tt class="py-comment"># return empty list of tokens, but preserve any defined results names</tt>\r </tt>
-<a name="L3956"></a><tt class="py-lineno">3956</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L3957"></a><tt class="py-lineno">3957</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L3958"></a><tt class="py-lineno">3958</tt>  <tt class="py-line">\r </tt>
-<a name="NotAny"></a><div id="NotAny-def"><a name="L3959"></a><tt class="py-lineno">3959</tt>  <tt class="py-line">\r </tt>
-<a name="L3960"></a><tt class="py-lineno">3960</tt> <a class="py-toggle" href="#" id="NotAny-toggle" onclick="return toggle('NotAny');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.NotAny-class.html">NotAny</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NotAny-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NotAny-expanded"><a name="L3961"></a><tt class="py-lineno">3961</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L3962"></a><tt class="py-lineno">3962</tt>  <tt class="py-line"><tt class="py-docstring">    Lookahead to disallow matching with the given parse expression.  C{NotAny}\r</tt> </tt>
-<a name="L3963"></a><tt class="py-lineno">3963</tt>  <tt class="py-line"><tt class="py-docstring">    does I{not} advance the parsing position within the input string, it only\r</tt> </tt>
-<a name="L3964"></a><tt class="py-lineno">3964</tt>  <tt class="py-line"><tt class="py-docstring">    verifies that the specified parse expression does I{not} match at the current\r</tt> </tt>
-<a name="L3965"></a><tt class="py-lineno">3965</tt>  <tt class="py-line"><tt class="py-docstring">    position.  Also, C{NotAny} does I{not} skip over leading whitespace. C{NotAny}\r</tt> </tt>
-<a name="L3966"></a><tt class="py-lineno">3966</tt>  <tt class="py-line"><tt class="py-docstring">    always returns a null token list.  May be constructed using the '~' operator.\r</tt> </tt>
-<a name="L3967"></a><tt class="py-lineno">3967</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3968"></a><tt class="py-lineno">3968</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L3969"></a><tt class="py-lineno">3969</tt>  <tt class="py-line"><tt class="py-docstring">        AND, OR, NOT = map(CaselessKeyword, "AND OR NOT".split())\r</tt> </tt>
-<a name="L3970"></a><tt class="py-lineno">3970</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3971"></a><tt class="py-lineno">3971</tt>  <tt class="py-line"><tt class="py-docstring">        # take care not to mistake keywords for identifiers\r</tt> </tt>
-<a name="L3972"></a><tt class="py-lineno">3972</tt>  <tt class="py-line"><tt class="py-docstring">        ident = ~(AND | OR | NOT) + Word(alphas)\r</tt> </tt>
-<a name="L3973"></a><tt class="py-lineno">3973</tt>  <tt class="py-line"><tt class="py-docstring">        boolean_term = Optional(NOT) + ident\r</tt> </tt>
-<a name="L3974"></a><tt class="py-lineno">3974</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3975"></a><tt class="py-lineno">3975</tt>  <tt class="py-line"><tt class="py-docstring">        # very crude boolean expression - to support parenthesis groups and\r</tt> </tt>
-<a name="L3976"></a><tt class="py-lineno">3976</tt>  <tt class="py-line"><tt class="py-docstring">        # operation hierarchy, use infixNotation\r</tt> </tt>
-<a name="L3977"></a><tt class="py-lineno">3977</tt>  <tt class="py-line"><tt class="py-docstring">        boolean_expr = boolean_term + ZeroOrMore((AND | OR) + boolean_term)\r</tt> </tt>
-<a name="L3978"></a><tt class="py-lineno">3978</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L3979"></a><tt class="py-lineno">3979</tt>  <tt class="py-line"><tt class="py-docstring">        # integers that are followed by "." are actually floats\r</tt> </tt>
-<a name="L3980"></a><tt class="py-lineno">3980</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums) + ~Char(".")\r</tt> </tt>
-<a name="L3981"></a><tt class="py-lineno">3981</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="NotAny.__init__"></a><div id="NotAny.__init__-def"><a name="L3982"></a><tt class="py-lineno">3982</tt> <a class="py-toggle" href="#" id="NotAny.__init__-toggle" onclick="return toggle('NotAny.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.NotAny-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NotAny.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NotAny.__init__-expanded"><a name="L3983"></a><tt class="py-lineno">3983</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-635" class="py-name"><a title="pyparsing.NotAny" class="py-name" href="#" onclick="return doclink('link-635', 'NotAny', 'link-305');">NotAny</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-636', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3984"></a><tt class="py-lineno">3984</tt>  <tt class="py-line">        <tt class="py-comment">#~ self.leaveWhitespace()</tt>\r </tt>
-<a name="L3985"></a><tt class="py-lineno">3985</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt>  <tt class="py-comment"># do NOT use self.leaveWhitespace(), don't want to propagate to exprs</tt> </tt>\r
-<a name="L3986"></a><tt class="py-lineno">3986</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L3987"></a><tt class="py-lineno">3987</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Found unwanted token, "</tt><tt class="py-op">+</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L3988"></a><tt class="py-lineno">3988</tt>  <tt class="py-line">\r </tt>
-<a name="NotAny.parseImpl"></a><div id="NotAny.parseImpl-def"><a name="L3989"></a><tt class="py-lineno">3989</tt> <a class="py-toggle" href="#" id="NotAny.parseImpl-toggle" onclick="return toggle('NotAny.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.NotAny-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NotAny.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NotAny.parseImpl-expanded"><a name="L3990"></a><tt class="py-lineno">3990</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name" targets="Method pyparsing.ParserElement.canParseNext()=pyparsing.ParserElement-class.html#canParseNext"><a title="pyparsing.ParserElement.canParseNext" class="py-name" href="#" onclick="return doclink('link-637', 'canParseNext', 'link-637');">canParseNext</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3991"></a><tt class="py-lineno">3991</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-638" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-638', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L3992"></a><tt class="py-lineno">3992</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L3993"></a><tt class="py-lineno">3993</tt>  <tt class="py-line">\r </tt>
-<a name="NotAny.__str__"></a><div id="NotAny.__str__-def"><a name="L3994"></a><tt class="py-lineno">3994</tt> <a class="py-toggle" href="#" id="NotAny.__str__-toggle" onclick="return toggle('NotAny.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.NotAny-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="NotAny.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NotAny.__str__-expanded"><a name="L3995"></a><tt class="py-lineno">3995</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3996"></a><tt class="py-lineno">3996</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L3997"></a><tt class="py-lineno">3997</tt>  <tt class="py-line">\r </tt>
-<a name="L3998"></a><tt class="py-lineno">3998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L3999"></a><tt class="py-lineno">3999</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"~{"</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}"</tt> </tt>\r
-<a name="L4000"></a><tt class="py-lineno">4000</tt>  <tt class="py-line">\r </tt>
-<a name="L4001"></a><tt class="py-lineno">4001</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L4002"></a><tt class="py-lineno">4002</tt>  <tt class="py-line">\r </tt>
-<a name="_MultipleMatch"></a><div id="_MultipleMatch-def"><a name="L4003"></a><tt class="py-lineno">4003</tt> <a class="py-toggle" href="#" id="_MultipleMatch-toggle" onclick="return toggle('_MultipleMatch');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._MultipleMatch-class.html">_MultipleMatch</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_MultipleMatch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_MultipleMatch-expanded"><a name="_MultipleMatch.__init__"></a><div id="_MultipleMatch.__init__-def"><a name="L4004"></a><tt class="py-lineno">4004</tt> <a class="py-toggle" href="#" id="_MultipleMatch.__init__-toggle" onclick="return toggle('_MultipleMatch.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._MultipleMatch-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">stopOn</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_MultipleMatch.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_MultipleMatch.__init__-expanded"><a name="L4005"></a><tt class="py-lineno">4005</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt class="py-name">_MultipleMatch</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-639" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-639', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4006"></a><tt class="py-lineno">4006</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L4007"></a><tt class="py-lineno">4007</tt>  <tt class="py-line">        <tt class="py-name">ender</tt> <tt class="py-op">=</tt> <tt class="py-name">stopOn</tt> </tt>\r
-<a name="L4008"></a><tt class="py-lineno">4008</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">ender</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4009"></a><tt class="py-lineno">4009</tt>  <tt class="py-line">            <tt class="py-name">ender</tt> <tt class="py-op">=</tt> <tt id="link-640" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-640', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt><tt class="py-name">ender</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4010"></a><tt class="py-lineno">4010</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_ender</tt> <tt class="py-op">=</tt> <tt class="py-op">~</tt><tt class="py-name">ender</tt> <tt class="py-keyword">if</tt> <tt class="py-name">ender</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">None</tt> </tt>\r
-</div><a name="L4011"></a><tt class="py-lineno">4011</tt>  <tt class="py-line">\r </tt>
-<a name="_MultipleMatch.parseImpl"></a><div id="_MultipleMatch.parseImpl-def"><a name="L4012"></a><tt class="py-lineno">4012</tt> <a class="py-toggle" href="#" id="_MultipleMatch.parseImpl-toggle" onclick="return toggle('_MultipleMatch.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._MultipleMatch-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_MultipleMatch.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_MultipleMatch.parseImpl-expanded"><a name="L4013"></a><tt class="py-lineno">4013</tt>  <tt class="py-line">        <tt class="py-name">self_expr_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> </tt>\r
-<a name="L4014"></a><tt class="py-lineno">4014</tt>  <tt class="py-line">        <tt class="py-name">self_skip_ignorables</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_skipIgnorables</tt> </tt>\r
-<a name="L4015"></a><tt class="py-lineno">4015</tt>  <tt class="py-line">        <tt class="py-name">check_ender</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_ender</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L4016"></a><tt class="py-lineno">4016</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">check_ender</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4017"></a><tt class="py-lineno">4017</tt>  <tt class="py-line">            <tt class="py-name">try_not_ender</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_ender</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-641', 'tryParse', 'link-171');">tryParse</a></tt> </tt>\r
-<a name="L4018"></a><tt class="py-lineno">4018</tt>  <tt class="py-line">\r </tt>
-<a name="L4019"></a><tt class="py-lineno">4019</tt>  <tt class="py-line">        <tt class="py-comment"># must be at least one (but first see if we are the stopOn sentinel;</tt>\r </tt>
-<a name="L4020"></a><tt class="py-lineno">4020</tt>  <tt class="py-line">        <tt class="py-comment"># if so, fail)</tt>\r </tt>
-<a name="L4021"></a><tt class="py-lineno">4021</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">check_ender</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4022"></a><tt class="py-lineno">4022</tt>  <tt class="py-line">            <tt class="py-name">try_not_ender</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4023"></a><tt class="py-lineno">4023</tt>  <tt class="py-line">        <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self_expr_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4024"></a><tt class="py-lineno">4024</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4025"></a><tt class="py-lineno">4025</tt>  <tt class="py-line">            <tt class="py-name">hasIgnoreExprs</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4026"></a><tt class="py-lineno">4026</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4027"></a><tt class="py-lineno">4027</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">check_ender</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4028"></a><tt class="py-lineno">4028</tt>  <tt class="py-line">                    <tt class="py-name">try_not_ender</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4029"></a><tt class="py-lineno">4029</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasIgnoreExprs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4030"></a><tt class="py-lineno">4030</tt>  <tt class="py-line">                    <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">self_skip_ignorables</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4031"></a><tt class="py-lineno">4031</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4032"></a><tt class="py-lineno">4032</tt>  <tt class="py-line">                    <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L4033"></a><tt class="py-lineno">4033</tt>  <tt class="py-line">                <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tmptokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self_expr_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">preloc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4034"></a><tt class="py-lineno">4034</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">tmptokens</tt> <tt class="py-keyword">or</tt> <tt class="py-name">tmptokens</tt><tt class="py-op">.</tt><tt id="link-642" class="py-name"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-642', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4035"></a><tt class="py-lineno">4035</tt>  <tt class="py-line">                    <tt class="py-name">tokens</tt> <tt class="py-op">+=</tt> <tt class="py-name">tmptokens</tt> </tt>\r
-<a name="L4036"></a><tt class="py-lineno">4036</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-643" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-643', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">,</tt><tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4037"></a><tt class="py-lineno">4037</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L4038"></a><tt class="py-lineno">4038</tt>  <tt class="py-line">\r </tt>
-<a name="L4039"></a><tt class="py-lineno">4039</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> </tt>\r
-</div></div><a name="L4040"></a><tt class="py-lineno">4040</tt>  <tt class="py-line">\r </tt>
-<a name="OneOrMore"></a><div id="OneOrMore-def"><a name="L4041"></a><tt class="py-lineno">4041</tt> <a class="py-toggle" href="#" id="OneOrMore-toggle" onclick="return toggle('OneOrMore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.OneOrMore-class.html">OneOrMore</a><tt class="py-op">(</tt><tt class="py-base-class">_MultipleMatch</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OneOrMore-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OneOrMore-expanded"><a name="L4042"></a><tt class="py-lineno">4042</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4043"></a><tt class="py-lineno">4043</tt>  <tt class="py-line"><tt class="py-docstring">    Repetition of one or more of the given expression.\r</tt> </tt>
-<a name="L4044"></a><tt class="py-lineno">4044</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4045"></a><tt class="py-lineno">4045</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L4046"></a><tt class="py-lineno">4046</tt>  <tt class="py-line"><tt class="py-docstring">     - expr - expression that must match one or more times\r</tt> </tt>
-<a name="L4047"></a><tt class="py-lineno">4047</tt>  <tt class="py-line"><tt class="py-docstring">     - stopOn - (default=C{None}) - expression for a terminating sentinel\r</tt> </tt>
-<a name="L4048"></a><tt class="py-lineno">4048</tt>  <tt class="py-line"><tt class="py-docstring">          (only required if the sentinel would ordinarily match the repetition\r</tt> </tt>
-<a name="L4049"></a><tt class="py-lineno">4049</tt>  <tt class="py-line"><tt class="py-docstring">          expression)\r</tt> </tt>
-<a name="L4050"></a><tt class="py-lineno">4050</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4051"></a><tt class="py-lineno">4051</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4052"></a><tt class="py-lineno">4052</tt>  <tt class="py-line"><tt class="py-docstring">        data_word = Word(alphas)\r</tt> </tt>
-<a name="L4053"></a><tt class="py-lineno">4053</tt>  <tt class="py-line"><tt class="py-docstring">        label = data_word + FollowedBy(':')\r</tt> </tt>
-<a name="L4054"></a><tt class="py-lineno">4054</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))\r</tt> </tt>
-<a name="L4055"></a><tt class="py-lineno">4055</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4056"></a><tt class="py-lineno">4056</tt>  <tt class="py-line"><tt class="py-docstring">        text = "shape: SQUARE posn: upper left color: BLACK"\r</tt> </tt>
-<a name="L4057"></a><tt class="py-lineno">4057</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(attr_expr).parseString(text).pprint()  # Fail! read 'color' as data instead of next label -&gt; [['shape', 'SQUARE color']]\r</tt> </tt>
-<a name="L4058"></a><tt class="py-lineno">4058</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4059"></a><tt class="py-lineno">4059</tt>  <tt class="py-line"><tt class="py-docstring">        # use stopOn attribute for OneOrMore to avoid reading label string as part of the data\r</tt> </tt>
-<a name="L4060"></a><tt class="py-lineno">4060</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r</tt> </tt>
-<a name="L4061"></a><tt class="py-lineno">4061</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(attr_expr).parseString(text).pprint() # Better -&gt; [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']]\r</tt> </tt>
-<a name="L4062"></a><tt class="py-lineno">4062</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4063"></a><tt class="py-lineno">4063</tt>  <tt class="py-line"><tt class="py-docstring">        # could also be written as\r</tt> </tt>
-<a name="L4064"></a><tt class="py-lineno">4064</tt>  <tt class="py-line"><tt class="py-docstring">        (attr_expr * (1,)).parseString(text).pprint()\r</tt> </tt>
-<a name="L4065"></a><tt class="py-lineno">4065</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4066"></a><tt class="py-lineno">4066</tt>  <tt class="py-line">\r </tt>
-<a name="OneOrMore.__str__"></a><div id="OneOrMore.__str__-def"><a name="L4067"></a><tt class="py-lineno">4067</tt> <a class="py-toggle" href="#" id="OneOrMore.__str__-toggle" onclick="return toggle('OneOrMore.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.OneOrMore-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OneOrMore.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OneOrMore.__str__-expanded"><a name="L4068"></a><tt class="py-lineno">4068</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4069"></a><tt class="py-lineno">4069</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L4070"></a><tt class="py-lineno">4070</tt>  <tt class="py-line">\r </tt>
-<a name="L4071"></a><tt class="py-lineno">4071</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4072"></a><tt class="py-lineno">4072</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"{"</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"}..."</tt> </tt>\r
-<a name="L4073"></a><tt class="py-lineno">4073</tt>  <tt class="py-line">\r </tt>
-<a name="L4074"></a><tt class="py-lineno">4074</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L4075"></a><tt class="py-lineno">4075</tt>  <tt class="py-line">\r </tt>
-<a name="ZeroOrMore"></a><div id="ZeroOrMore-def"><a name="L4076"></a><tt class="py-lineno">4076</tt> <a class="py-toggle" href="#" id="ZeroOrMore-toggle" onclick="return toggle('ZeroOrMore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a><tt class="py-op">(</tt><tt class="py-base-class">_MultipleMatch</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ZeroOrMore-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ZeroOrMore-expanded"><a name="L4077"></a><tt class="py-lineno">4077</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4078"></a><tt class="py-lineno">4078</tt>  <tt class="py-line"><tt class="py-docstring">    Optional repetition of zero or more of the given expression.\r</tt> </tt>
-<a name="L4079"></a><tt class="py-lineno">4079</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4080"></a><tt class="py-lineno">4080</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L4081"></a><tt class="py-lineno">4081</tt>  <tt class="py-line"><tt class="py-docstring">     - expr - expression that must match zero or more times\r</tt> </tt>
-<a name="L4082"></a><tt class="py-lineno">4082</tt>  <tt class="py-line"><tt class="py-docstring">     - stopOn - (default=C{None}) - expression for a terminating sentinel\r</tt> </tt>
-<a name="L4083"></a><tt class="py-lineno">4083</tt>  <tt class="py-line"><tt class="py-docstring">          (only required if the sentinel would ordinarily match the repetition\r</tt> </tt>
-<a name="L4084"></a><tt class="py-lineno">4084</tt>  <tt class="py-line"><tt class="py-docstring">          expression)\r</tt> </tt>
-<a name="L4085"></a><tt class="py-lineno">4085</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4086"></a><tt class="py-lineno">4086</tt>  <tt class="py-line"><tt class="py-docstring">    Example: similar to L{OneOrMore}\r</tt> </tt>
-<a name="L4087"></a><tt class="py-lineno">4087</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="ZeroOrMore.__init__"></a><div id="ZeroOrMore.__init__-def"><a name="L4088"></a><tt class="py-lineno">4088</tt> <a class="py-toggle" href="#" id="ZeroOrMore.__init__-toggle" onclick="return toggle('ZeroOrMore.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ZeroOrMore-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">stopOn</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ZeroOrMore.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ZeroOrMore.__init__-expanded"><a name="L4089"></a><tt class="py-lineno">4089</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-644" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-644', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-645" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-645', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">stopOn</tt><tt class="py-op">=</tt><tt class="py-name">stopOn</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4090"></a><tt class="py-lineno">4090</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L4091"></a><tt class="py-lineno">4091</tt>  <tt class="py-line">\r </tt>
-<a name="ZeroOrMore.parseImpl"></a><div id="ZeroOrMore.parseImpl-def"><a name="L4092"></a><tt class="py-lineno">4092</tt> <a class="py-toggle" href="#" id="ZeroOrMore.parseImpl-toggle" onclick="return toggle('ZeroOrMore.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ZeroOrMore-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ZeroOrMore.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ZeroOrMore.parseImpl-expanded"><a name="L4093"></a><tt class="py-lineno">4093</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4094"></a><tt class="py-lineno">4094</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-646" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-646', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-647" class="py-name"><a title="pyparsing.And.parseImpl
-pyparsing.CaselessKeyword.parseImpl
-pyparsing.CaselessLiteral.parseImpl
-pyparsing.CharsNotIn.parseImpl
-pyparsing.CloseMatch.parseImpl
-pyparsing.Each.parseImpl
-pyparsing.FollowedBy.parseImpl
-pyparsing.GoToColumn.parseImpl
-pyparsing.Keyword.parseImpl
-pyparsing.LineEnd.parseImpl
-pyparsing.LineStart.parseImpl
-pyparsing.Literal.parseImpl
-pyparsing.MatchFirst.parseImpl
-pyparsing.NoMatch.parseImpl
-pyparsing.NotAny.parseImpl
-pyparsing.Optional.parseImpl
-pyparsing.Or.parseImpl
-pyparsing.ParseElementEnhance.parseImpl
-pyparsing.ParserElement.parseImpl
-pyparsing.PrecededBy.parseImpl
-pyparsing.QuotedString.parseImpl
-pyparsing.Regex.parseImpl
-pyparsing.SkipTo.parseImpl
-pyparsing.StringEnd.parseImpl
-pyparsing.StringStart.parseImpl
-pyparsing.White.parseImpl
-pyparsing.Word.parseImpl
-pyparsing.WordEnd.parseImpl
-pyparsing.WordStart.parseImpl
-pyparsing.ZeroOrMore.parseImpl" class="py-name" href="#" onclick="return doclink('link-647', 'parseImpl', 'link-150');">parseImpl</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4095"></a><tt class="py-lineno">4095</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-648" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-648', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">,</tt><tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4096"></a><tt class="py-lineno">4096</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4097"></a><tt class="py-lineno">4097</tt>  <tt class="py-line">\r </tt>
-<a name="ZeroOrMore.__str__"></a><div id="ZeroOrMore.__str__-def"><a name="L4098"></a><tt class="py-lineno">4098</tt> <a class="py-toggle" href="#" id="ZeroOrMore.__str__-toggle" onclick="return toggle('ZeroOrMore.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.ZeroOrMore-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ZeroOrMore.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ZeroOrMore.__str__-expanded"><a name="L4099"></a><tt class="py-lineno">4099</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4100"></a><tt class="py-lineno">4100</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L4101"></a><tt class="py-lineno">4101</tt>  <tt class="py-line">\r </tt>
-<a name="L4102"></a><tt class="py-lineno">4102</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4103"></a><tt class="py-lineno">4103</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"["</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"]..."</tt> </tt>\r
-<a name="L4104"></a><tt class="py-lineno">4104</tt>  <tt class="py-line">\r </tt>
-<a name="L4105"></a><tt class="py-lineno">4105</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L4106"></a><tt class="py-lineno">4106</tt>  <tt class="py-line">\r </tt>
-<a name="_NullToken"></a><div id="_NullToken-def"><a name="L4107"></a><tt class="py-lineno">4107</tt> <a class="py-toggle" href="#" id="_NullToken-toggle" onclick="return toggle('_NullToken');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._NullToken-class.html">_NullToken</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_NullToken-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_NullToken-expanded"><a name="_NullToken.__bool__"></a><div id="_NullToken.__bool__-def"><a name="L4108"></a><tt class="py-lineno">4108</tt> <a class="py-toggle" href="#" id="_NullToken.__bool__-toggle" onclick="return toggle('_NullToken.__bool__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._NullToken-class.html#__bool__">__bool__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_NullToken.__bool__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_NullToken.__bool__-expanded"><a name="L4109"></a><tt class="py-lineno">4109</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="L4110"></a><tt class="py-lineno">4110</tt>  <tt class="py-line">    <tt class="py-name">__nonzero__</tt> <tt class="py-op">=</tt> <tt id="link-649" class="py-name"><a title="pyparsing.ParseResults.__bool__" class="py-name" href="#" onclick="return doclink('link-649', '__bool__', 'link-52');">__bool__</a></tt> </tt>\r
-<a name="_NullToken.__str__"></a><div id="_NullToken.__str__-def"><a name="L4111"></a><tt class="py-lineno">4111</tt> <a class="py-toggle" href="#" id="_NullToken.__str__-toggle" onclick="return toggle('_NullToken.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._NullToken-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_NullToken.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_NullToken.__str__-expanded"><a name="L4112"></a><tt class="py-lineno">4112</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>\r
-</div></div><a name="L4113"></a><tt class="py-lineno">4113</tt>  <tt class="py-line">\r </tt>
-<a name="L4114"></a><tt class="py-lineno">4114</tt>  <tt class="py-line"><tt id="link-650" class="py-name" targets="Variable pyparsing._optionalNotMatched=pyparsing-module.html#_optionalNotMatched"><a title="pyparsing._optionalNotMatched" class="py-name" href="#" onclick="return doclink('link-650', '_optionalNotMatched', 'link-650');">_optionalNotMatched</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_NullToken</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="Optional"></a><div id="Optional-def"><a name="L4115"></a><tt class="py-lineno">4115</tt> <a class="py-toggle" href="#" id="Optional-toggle" onclick="return toggle('Optional');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Optional-class.html">Optional</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Optional-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Optional-expanded"><a name="L4116"></a><tt class="py-lineno">4116</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4117"></a><tt class="py-lineno">4117</tt>  <tt class="py-line"><tt class="py-docstring">    Optional matching of the given expression.\r</tt> </tt>
-<a name="L4118"></a><tt class="py-lineno">4118</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4119"></a><tt class="py-lineno">4119</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L4120"></a><tt class="py-lineno">4120</tt>  <tt class="py-line"><tt class="py-docstring">     - expr - expression that must match zero or more times\r</tt> </tt>
-<a name="L4121"></a><tt class="py-lineno">4121</tt>  <tt class="py-line"><tt class="py-docstring">     - default (optional) - value to be returned if the optional expression is not found.\r</tt> </tt>
-<a name="L4122"></a><tt class="py-lineno">4122</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4123"></a><tt class="py-lineno">4123</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4124"></a><tt class="py-lineno">4124</tt>  <tt class="py-line"><tt class="py-docstring">        # US postal code can be a 5-digit zip, plus optional 4-digit qualifier\r</tt> </tt>
-<a name="L4125"></a><tt class="py-lineno">4125</tt>  <tt class="py-line"><tt class="py-docstring">        zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4)))\r</tt> </tt>
-<a name="L4126"></a><tt class="py-lineno">4126</tt>  <tt class="py-line"><tt class="py-docstring">        zip.runTests('''\r</tt> </tt>
-<a name="L4127"></a><tt class="py-lineno">4127</tt>  <tt class="py-line"><tt class="py-docstring">            # traditional ZIP code\r</tt> </tt>
-<a name="L4128"></a><tt class="py-lineno">4128</tt>  <tt class="py-line"><tt class="py-docstring">            12345\r</tt> </tt>
-<a name="L4129"></a><tt class="py-lineno">4129</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4130"></a><tt class="py-lineno">4130</tt>  <tt class="py-line"><tt class="py-docstring">            # ZIP+4 form\r</tt> </tt>
-<a name="L4131"></a><tt class="py-lineno">4131</tt>  <tt class="py-line"><tt class="py-docstring">            12101-0001\r</tt> </tt>
-<a name="L4132"></a><tt class="py-lineno">4132</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4133"></a><tt class="py-lineno">4133</tt>  <tt class="py-line"><tt class="py-docstring">            # invalid ZIP\r</tt> </tt>
-<a name="L4134"></a><tt class="py-lineno">4134</tt>  <tt class="py-line"><tt class="py-docstring">            98765-\r</tt> </tt>
-<a name="L4135"></a><tt class="py-lineno">4135</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L4136"></a><tt class="py-lineno">4136</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4137"></a><tt class="py-lineno">4137</tt>  <tt class="py-line"><tt class="py-docstring">        # traditional ZIP code\r</tt> </tt>
-<a name="L4138"></a><tt class="py-lineno">4138</tt>  <tt class="py-line"><tt class="py-docstring">        12345\r</tt> </tt>
-<a name="L4139"></a><tt class="py-lineno">4139</tt>  <tt class="py-line"><tt class="py-docstring">        ['12345']\r</tt> </tt>
-<a name="L4140"></a><tt class="py-lineno">4140</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4141"></a><tt class="py-lineno">4141</tt>  <tt class="py-line"><tt class="py-docstring">        # ZIP+4 form\r</tt> </tt>
-<a name="L4142"></a><tt class="py-lineno">4142</tt>  <tt class="py-line"><tt class="py-docstring">        12101-0001\r</tt> </tt>
-<a name="L4143"></a><tt class="py-lineno">4143</tt>  <tt class="py-line"><tt class="py-docstring">        ['12101-0001']\r</tt> </tt>
-<a name="L4144"></a><tt class="py-lineno">4144</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4145"></a><tt class="py-lineno">4145</tt>  <tt class="py-line"><tt class="py-docstring">        # invalid ZIP\r</tt> </tt>
-<a name="L4146"></a><tt class="py-lineno">4146</tt>  <tt class="py-line"><tt class="py-docstring">        98765-\r</tt> </tt>
-<a name="L4147"></a><tt class="py-lineno">4147</tt>  <tt class="py-line"><tt class="py-docstring">             ^\r</tt> </tt>
-<a name="L4148"></a><tt class="py-lineno">4148</tt>  <tt class="py-line"><tt class="py-docstring">        FAIL: Expected end of text (at char 5), (line:1, col:6)\r</tt> </tt>
-<a name="L4149"></a><tt class="py-lineno">4149</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Optional.__init__"></a><div id="Optional.__init__-def"><a name="L4150"></a><tt class="py-lineno">4150</tt> <a class="py-toggle" href="#" id="Optional.__init__-toggle" onclick="return toggle('Optional.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Optional-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt id="link-651" class="py-name"><a title="pyparsing._optionalNotMatched" class="py-name" href="#" onclick="return doclink('link-651', '_optionalNotMatched', 'link-650');">_optionalNotMatched</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Optional.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Optional.__init__-expanded"><a name="L4151"></a><tt class="py-lineno">4151</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-652" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-652', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-653', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4152"></a><tt class="py-lineno">4152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> </tt>\r
-<a name="L4153"></a><tt class="py-lineno">4153</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultValue</tt> <tt class="py-op">=</tt> <tt class="py-name">default</tt> </tt>\r
-<a name="L4154"></a><tt class="py-lineno">4154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L4155"></a><tt class="py-lineno">4155</tt>  <tt class="py-line">\r </tt>
-<a name="Optional.parseImpl"></a><div id="Optional.parseImpl-def"><a name="L4156"></a><tt class="py-lineno">4156</tt> <a class="py-toggle" href="#" id="Optional.parseImpl-toggle" onclick="return toggle('Optional.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Optional-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Optional.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Optional.parseImpl-expanded"><a name="L4157"></a><tt class="py-lineno">4157</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4158"></a><tt class="py-lineno">4158</tt>  <tt class="py-line">            <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt><tt class="py-op">(</tt> <tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4159"></a><tt class="py-lineno">4159</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-654" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-654', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">,</tt><tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4160"></a><tt class="py-lineno">4160</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultValue</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-655" class="py-name"><a title="pyparsing._optionalNotMatched" class="py-name" href="#" onclick="return doclink('link-655', '_optionalNotMatched', 'link-650');">_optionalNotMatched</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4161"></a><tt class="py-lineno">4161</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4162"></a><tt class="py-lineno">4162</tt>  <tt class="py-line">                    <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt id="link-656" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-656', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultValue</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4163"></a><tt class="py-lineno">4163</tt>  <tt class="py-line">                    <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultValue</tt> </tt>\r
-<a name="L4164"></a><tt class="py-lineno">4164</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4165"></a><tt class="py-lineno">4165</tt>  <tt class="py-line">                    <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultValue</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L4166"></a><tt class="py-lineno">4166</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4167"></a><tt class="py-lineno">4167</tt>  <tt class="py-line">                <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4168"></a><tt class="py-lineno">4168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt> </tt>\r
-</div><a name="L4169"></a><tt class="py-lineno">4169</tt>  <tt class="py-line">\r </tt>
-<a name="Optional.__str__"></a><div id="Optional.__str__-def"><a name="L4170"></a><tt class="py-lineno">4170</tt> <a class="py-toggle" href="#" id="Optional.__str__-toggle" onclick="return toggle('Optional.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Optional-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Optional.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Optional.__str__-expanded"><a name="L4171"></a><tt class="py-lineno">4171</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4172"></a><tt class="py-lineno">4172</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L4173"></a><tt class="py-lineno">4173</tt>  <tt class="py-line">\r </tt>
-<a name="L4174"></a><tt class="py-lineno">4174</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4175"></a><tt class="py-lineno">4175</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-string">"["</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"]"</tt> </tt>\r
-<a name="L4176"></a><tt class="py-lineno">4176</tt>  <tt class="py-line">\r </tt>
-<a name="L4177"></a><tt class="py-lineno">4177</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> </tt>\r
-</div></div><a name="L4178"></a><tt class="py-lineno">4178</tt>  <tt class="py-line">\r </tt>
-<a name="SkipTo"></a><div id="SkipTo-def"><a name="L4179"></a><tt class="py-lineno">4179</tt> <a class="py-toggle" href="#" id="SkipTo-toggle" onclick="return toggle('SkipTo');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.SkipTo-class.html">SkipTo</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="SkipTo-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SkipTo-expanded"><a name="L4180"></a><tt class="py-lineno">4180</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4181"></a><tt class="py-lineno">4181</tt>  <tt class="py-line"><tt class="py-docstring">    Token for skipping over all undefined text until the matched expression is found.\r</tt> </tt>
-<a name="L4182"></a><tt class="py-lineno">4182</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4183"></a><tt class="py-lineno">4183</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L4184"></a><tt class="py-lineno">4184</tt>  <tt class="py-line"><tt class="py-docstring">     - expr - target expression marking the end of the data to be skipped\r</tt> </tt>
-<a name="L4185"></a><tt class="py-lineno">4185</tt>  <tt class="py-line"><tt class="py-docstring">     - include - (default=C{False}) if True, the target expression is also parsed\r</tt> </tt>
-<a name="L4186"></a><tt class="py-lineno">4186</tt>  <tt class="py-line"><tt class="py-docstring">          (the skipped text and target expression are returned as a 2-element list).\r</tt> </tt>
-<a name="L4187"></a><tt class="py-lineno">4187</tt>  <tt class="py-line"><tt class="py-docstring">     - ignore - (default=C{None}) used to define grammars (typically quoted strings and\r</tt> </tt>
-<a name="L4188"></a><tt class="py-lineno">4188</tt>  <tt class="py-line"><tt class="py-docstring">          comments) that might contain false matches to the target expression\r</tt> </tt>
-<a name="L4189"></a><tt class="py-lineno">4189</tt>  <tt class="py-line"><tt class="py-docstring">     - failOn - (default=C{None}) define expressions that are not allowed to be\r</tt> </tt>
-<a name="L4190"></a><tt class="py-lineno">4190</tt>  <tt class="py-line"><tt class="py-docstring">          included in the skipped test; if found before the target expression is found,\r</tt> </tt>
-<a name="L4191"></a><tt class="py-lineno">4191</tt>  <tt class="py-line"><tt class="py-docstring">          the SkipTo is not a match\r</tt> </tt>
-<a name="L4192"></a><tt class="py-lineno">4192</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4193"></a><tt class="py-lineno">4193</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4194"></a><tt class="py-lineno">4194</tt>  <tt class="py-line"><tt class="py-docstring">        report = '''\r</tt> </tt>
-<a name="L4195"></a><tt class="py-lineno">4195</tt>  <tt class="py-line"><tt class="py-docstring">            Outstanding Issues Report - 1 Jan 2000\r</tt> </tt>
-<a name="L4196"></a><tt class="py-lineno">4196</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4197"></a><tt class="py-lineno">4197</tt>  <tt class="py-line"><tt class="py-docstring">               # | Severity | Description                               |  Days Open\r</tt> </tt>
-<a name="L4198"></a><tt class="py-lineno">4198</tt>  <tt class="py-line"><tt class="py-docstring">            -----+----------+-------------------------------------------+-----------\r</tt> </tt>
-<a name="L4199"></a><tt class="py-lineno">4199</tt>  <tt class="py-line"><tt class="py-docstring">             101 | Critical | Intermittent system crash                 |          6\r</tt> </tt>
-<a name="L4200"></a><tt class="py-lineno">4200</tt>  <tt class="py-line"><tt class="py-docstring">              94 | Cosmetic | Spelling error on Login ('log|n')         |         14\r</tt> </tt>
-<a name="L4201"></a><tt class="py-lineno">4201</tt>  <tt class="py-line"><tt class="py-docstring">              79 | Minor    | System slow when running too many reports |         47\r</tt> </tt>
-<a name="L4202"></a><tt class="py-lineno">4202</tt>  <tt class="py-line"><tt class="py-docstring">            '''\r</tt> </tt>
-<a name="L4203"></a><tt class="py-lineno">4203</tt>  <tt class="py-line"><tt class="py-docstring">        integer = Word(nums)\r</tt> </tt>
-<a name="L4204"></a><tt class="py-lineno">4204</tt>  <tt class="py-line"><tt class="py-docstring">        SEP = Suppress('|')\r</tt> </tt>
-<a name="L4205"></a><tt class="py-lineno">4205</tt>  <tt class="py-line"><tt class="py-docstring">        # use SkipTo to simply match everything up until the next SEP\r</tt> </tt>
-<a name="L4206"></a><tt class="py-lineno">4206</tt>  <tt class="py-line"><tt class="py-docstring">        # - ignore quoted strings, so that a '|' character inside a quoted string does not match\r</tt> </tt>
-<a name="L4207"></a><tt class="py-lineno">4207</tt>  <tt class="py-line"><tt class="py-docstring">        # - parse action will call token.strip() for each matched token, i.e., the description body\r</tt> </tt>
-<a name="L4208"></a><tt class="py-lineno">4208</tt>  <tt class="py-line"><tt class="py-docstring">        string_data = SkipTo(SEP, ignore=quotedString)\r</tt> </tt>
-<a name="L4209"></a><tt class="py-lineno">4209</tt>  <tt class="py-line"><tt class="py-docstring">        string_data.setParseAction(tokenMap(str.strip))\r</tt> </tt>
-<a name="L4210"></a><tt class="py-lineno">4210</tt>  <tt class="py-line"><tt class="py-docstring">        ticket_expr = (integer("issue_num") + SEP\r</tt> </tt>
-<a name="L4211"></a><tt class="py-lineno">4211</tt>  <tt class="py-line"><tt class="py-docstring">                      + string_data("sev") + SEP\r</tt> </tt>
-<a name="L4212"></a><tt class="py-lineno">4212</tt>  <tt class="py-line"><tt class="py-docstring">                      + string_data("desc") + SEP\r</tt> </tt>
-<a name="L4213"></a><tt class="py-lineno">4213</tt>  <tt class="py-line"><tt class="py-docstring">                      + integer("days_open"))\r</tt> </tt>
-<a name="L4214"></a><tt class="py-lineno">4214</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4215"></a><tt class="py-lineno">4215</tt>  <tt class="py-line"><tt class="py-docstring">        for tkt in ticket_expr.searchString(report):\r</tt> </tt>
-<a name="L4216"></a><tt class="py-lineno">4216</tt>  <tt class="py-line"><tt class="py-docstring">            print tkt.dump()\r</tt> </tt>
-<a name="L4217"></a><tt class="py-lineno">4217</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4218"></a><tt class="py-lineno">4218</tt>  <tt class="py-line"><tt class="py-docstring">        ['101', 'Critical', 'Intermittent system crash', '6']\r</tt> </tt>
-<a name="L4219"></a><tt class="py-lineno">4219</tt>  <tt class="py-line"><tt class="py-docstring">        - days_open: 6\r</tt> </tt>
-<a name="L4220"></a><tt class="py-lineno">4220</tt>  <tt class="py-line"><tt class="py-docstring">        - desc: Intermittent system crash\r</tt> </tt>
-<a name="L4221"></a><tt class="py-lineno">4221</tt>  <tt class="py-line"><tt class="py-docstring">        - issue_num: 101\r</tt> </tt>
-<a name="L4222"></a><tt class="py-lineno">4222</tt>  <tt class="py-line"><tt class="py-docstring">        - sev: Critical\r</tt> </tt>
-<a name="L4223"></a><tt class="py-lineno">4223</tt>  <tt class="py-line"><tt class="py-docstring">        ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14']\r</tt> </tt>
-<a name="L4224"></a><tt class="py-lineno">4224</tt>  <tt class="py-line"><tt class="py-docstring">        - days_open: 14\r</tt> </tt>
-<a name="L4225"></a><tt class="py-lineno">4225</tt>  <tt class="py-line"><tt class="py-docstring">        - desc: Spelling error on Login ('log|n')\r</tt> </tt>
-<a name="L4226"></a><tt class="py-lineno">4226</tt>  <tt class="py-line"><tt class="py-docstring">        - issue_num: 94\r</tt> </tt>
-<a name="L4227"></a><tt class="py-lineno">4227</tt>  <tt class="py-line"><tt class="py-docstring">        - sev: Cosmetic\r</tt> </tt>
-<a name="L4228"></a><tt class="py-lineno">4228</tt>  <tt class="py-line"><tt class="py-docstring">        ['79', 'Minor', 'System slow when running too many reports', '47']\r</tt> </tt>
-<a name="L4229"></a><tt class="py-lineno">4229</tt>  <tt class="py-line"><tt class="py-docstring">        - days_open: 47\r</tt> </tt>
-<a name="L4230"></a><tt class="py-lineno">4230</tt>  <tt class="py-line"><tt class="py-docstring">        - desc: System slow when running too many reports\r</tt> </tt>
-<a name="L4231"></a><tt class="py-lineno">4231</tt>  <tt class="py-line"><tt class="py-docstring">        - issue_num: 79\r</tt> </tt>
-<a name="L4232"></a><tt class="py-lineno">4232</tt>  <tt class="py-line"><tt class="py-docstring">        - sev: Minor\r</tt> </tt>
-<a name="L4233"></a><tt class="py-lineno">4233</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="SkipTo.__init__"></a><div id="SkipTo.__init__-def"><a name="L4234"></a><tt class="py-lineno">4234</tt> <a class="py-toggle" href="#" id="SkipTo.__init__-toggle" onclick="return toggle('SkipTo.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.SkipTo-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">,</tt> <tt class="py-param">include</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">ignore</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">failOn</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="SkipTo.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SkipTo.__init__-expanded"><a name="L4235"></a><tt class="py-lineno">4235</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-657" class="py-name" targets="Class pyparsing.SkipTo=pyparsing.SkipTo-class.html"><a title="pyparsing.SkipTo" class="py-name" href="#" onclick="return doclink('link-657', 'SkipTo', 'link-657');">SkipTo</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-658" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-658', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4236"></a><tt class="py-lineno">4236</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExpr</tt> <tt class="py-op">=</tt> <tt id="link-659" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-659', 'ignore', 'link-517');">ignore</a></tt> </tt>\r
-<a name="L4237"></a><tt class="py-lineno">4237</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L4238"></a><tt class="py-lineno">4238</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L4239"></a><tt class="py-lineno">4239</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">includeMatch</tt> <tt class="py-op">=</tt> <tt class="py-name">include</tt> </tt>\r
-<a name="L4240"></a><tt class="py-lineno">4240</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L4241"></a><tt class="py-lineno">4241</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">failOn</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4242"></a><tt class="py-lineno">4242</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failOn</tt> <tt class="py-op">=</tt> <tt id="link-660" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-660', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt><tt class="py-name">failOn</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4243"></a><tt class="py-lineno">4243</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4244"></a><tt class="py-lineno">4244</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failOn</tt> <tt class="py-op">=</tt> <tt class="py-name">failOn</tt> </tt>\r
-<a name="L4245"></a><tt class="py-lineno">4245</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt> <tt class="py-op">=</tt> <tt class="py-string">"No match found for "</tt><tt class="py-op">+</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4246"></a><tt class="py-lineno">4246</tt>  <tt class="py-line">\r </tt>
-<a name="SkipTo.parseImpl"></a><div id="SkipTo.parseImpl-def"><a name="L4247"></a><tt class="py-lineno">4247</tt> <a class="py-toggle" href="#" id="SkipTo.parseImpl-toggle" onclick="return toggle('SkipTo.parseImpl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.SkipTo-class.html#parseImpl">parseImpl</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="SkipTo.parseImpl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SkipTo.parseImpl-expanded"><a name="L4248"></a><tt class="py-lineno">4248</tt>  <tt class="py-line">        <tt class="py-name">startloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L4249"></a><tt class="py-lineno">4249</tt>  <tt class="py-line">        <tt class="py-name">instrlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4250"></a><tt class="py-lineno">4250</tt>  <tt class="py-line">        <tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> </tt>\r
-<a name="L4251"></a><tt class="py-lineno">4251</tt>  <tt class="py-line">        <tt class="py-name">expr_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">_parse</tt> </tt>\r
-<a name="L4252"></a><tt class="py-lineno">4252</tt>  <tt class="py-line">        <tt class="py-name">self_failOn_canParseNext</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failOn</tt><tt class="py-op">.</tt><tt id="link-661" class="py-name"><a title="pyparsing.ParserElement.canParseNext" class="py-name" href="#" onclick="return doclink('link-661', 'canParseNext', 'link-637');">canParseNext</a></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">failOn</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L4253"></a><tt class="py-lineno">4253</tt>  <tt class="py-line">        <tt class="py-name">self_ignoreExpr_tryParse</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExpr</tt><tt class="py-op">.</tt><tt id="link-662" class="py-name"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-662', 'tryParse', 'link-171');">tryParse</a></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L4254"></a><tt class="py-lineno">4254</tt>  <tt class="py-line">\r </tt>
-<a name="L4255"></a><tt class="py-lineno">4255</tt>  <tt class="py-line">        <tt class="py-name">tmploc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>\r
-<a name="L4256"></a><tt class="py-lineno">4256</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">tmploc</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">instrlen</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4257"></a><tt class="py-lineno">4257</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self_failOn_canParseNext</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4258"></a><tt class="py-lineno">4258</tt>  <tt class="py-line">                <tt class="py-comment"># break if failOn expression matches</tt>\r </tt>
-<a name="L4259"></a><tt class="py-lineno">4259</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self_failOn_canParseNext</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tmploc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4260"></a><tt class="py-lineno">4260</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>\r
-<a name="L4261"></a><tt class="py-lineno">4261</tt>  <tt class="py-line">\r </tt>
-<a name="L4262"></a><tt class="py-lineno">4262</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self_ignoreExpr_tryParse</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4263"></a><tt class="py-lineno">4263</tt>  <tt class="py-line">                <tt class="py-comment"># advance past ignore expressions</tt>\r </tt>
-<a name="L4264"></a><tt class="py-lineno">4264</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4265"></a><tt class="py-lineno">4265</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4266"></a><tt class="py-lineno">4266</tt>  <tt class="py-line">                        <tt class="py-name">tmploc</tt> <tt class="py-op">=</tt> <tt class="py-name">self_ignoreExpr_tryParse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tmploc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4267"></a><tt class="py-lineno">4267</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt id="link-663" class="py-name"><a title="pyparsing.ParseBaseException" class="py-name" href="#" onclick="return doclink('link-663', 'ParseBaseException', 'link-152');">ParseBaseException</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4268"></a><tt class="py-lineno">4268</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> </tt>\r
-<a name="L4269"></a><tt class="py-lineno">4269</tt>  <tt class="py-line">\r </tt>
-<a name="L4270"></a><tt class="py-lineno">4270</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4271"></a><tt class="py-lineno">4271</tt>  <tt class="py-line">                <tt class="py-name">expr_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">tmploc</tt><tt class="py-op">,</tt> <tt class="py-name">doActions</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4272"></a><tt class="py-lineno">4272</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-664" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-664', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">,</tt> <tt class="py-name">IndexError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4273"></a><tt class="py-lineno">4273</tt>  <tt class="py-line">                <tt class="py-comment"># no match, advance loc in string</tt>\r </tt>
-<a name="L4274"></a><tt class="py-lineno">4274</tt>  <tt class="py-line">                <tt class="py-name">tmploc</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L4275"></a><tt class="py-lineno">4275</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4276"></a><tt class="py-lineno">4276</tt>  <tt class="py-line">                <tt class="py-comment"># matched skipto expr, done</tt>\r </tt>
-<a name="L4277"></a><tt class="py-lineno">4277</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>\r
-<a name="L4278"></a><tt class="py-lineno">4278</tt>  <tt class="py-line">\r </tt>
-<a name="L4279"></a><tt class="py-lineno">4279</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4280"></a><tt class="py-lineno">4280</tt>  <tt class="py-line">            <tt class="py-comment"># ran off the end of the input string without matching skipto expr, fail</tt>\r </tt>
-<a name="L4281"></a><tt class="py-lineno">4281</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-665" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-665', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errmsg</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4282"></a><tt class="py-lineno">4282</tt>  <tt class="py-line">\r </tt>
-<a name="L4283"></a><tt class="py-lineno">4283</tt>  <tt class="py-line">        <tt class="py-comment"># build up return values</tt>\r </tt>
-<a name="L4284"></a><tt class="py-lineno">4284</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-name">tmploc</tt> </tt>\r
-<a name="L4285"></a><tt class="py-lineno">4285</tt>  <tt class="py-line">        <tt class="py-name">skiptext</tt> <tt class="py-op">=</tt> <tt class="py-name">instring</tt><tt class="py-op">[</tt><tt class="py-name">startloc</tt><tt class="py-op">:</tt><tt class="py-name">loc</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4286"></a><tt class="py-lineno">4286</tt>  <tt class="py-line">        <tt class="py-name">skipresult</tt> <tt class="py-op">=</tt> <tt id="link-666" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-666', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-name">skiptext</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4287"></a><tt class="py-lineno">4287</tt>  <tt class="py-line">\r </tt>
-<a name="L4288"></a><tt class="py-lineno">4288</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">includeMatch</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4289"></a><tt class="py-lineno">4289</tt>  <tt class="py-line">            <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">mat</tt> <tt class="py-op">=</tt> <tt class="py-name">expr_parse</tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">doActions</tt><tt class="py-op">,</tt><tt class="py-name">callPreParse</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4290"></a><tt class="py-lineno">4290</tt>  <tt class="py-line">            <tt class="py-name">skipresult</tt> <tt class="py-op">+=</tt> <tt class="py-name">mat</tt> </tt>\r
-<a name="L4291"></a><tt class="py-lineno">4291</tt>  <tt class="py-line">\r </tt>
-<a name="L4292"></a><tt class="py-lineno">4292</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-name">skipresult</tt> </tt>\r
-</div></div><a name="L4293"></a><tt class="py-lineno">4293</tt>  <tt class="py-line">\r </tt>
-<a name="Forward"></a><div id="Forward-def"><a name="L4294"></a><tt class="py-lineno">4294</tt> <a class="py-toggle" href="#" id="Forward-toggle" onclick="return toggle('Forward');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Forward-class.html">Forward</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Forward-expanded"><a name="L4295"></a><tt class="py-lineno">4295</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4296"></a><tt class="py-lineno">4296</tt>  <tt class="py-line"><tt class="py-docstring">    Forward declaration of an expression to be defined later -\r</tt> </tt>
-<a name="L4297"></a><tt class="py-lineno">4297</tt>  <tt class="py-line"><tt class="py-docstring">    used for recursive grammars, such as algebraic infix notation.\r</tt> </tt>
-<a name="L4298"></a><tt class="py-lineno">4298</tt>  <tt class="py-line"><tt class="py-docstring">    When the expression is known, it is assigned to the C{Forward} variable using the '&lt;&lt;' operator.\r</tt> </tt>
-<a name="L4299"></a><tt class="py-lineno">4299</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4300"></a><tt class="py-lineno">4300</tt>  <tt class="py-line"><tt class="py-docstring">    Note: take care when assigning to C{Forward} not to overlook precedence of operators.\r</tt> </tt>
-<a name="L4301"></a><tt class="py-lineno">4301</tt>  <tt class="py-line"><tt class="py-docstring">    Specifically, '|' has a lower precedence than '&lt;&lt;', so that::\r</tt> </tt>
-<a name="L4302"></a><tt class="py-lineno">4302</tt>  <tt class="py-line"><tt class="py-docstring">        fwdExpr &lt;&lt; a | b | c\r</tt> </tt>
-<a name="L4303"></a><tt class="py-lineno">4303</tt>  <tt class="py-line"><tt class="py-docstring">    will actually be evaluated as::\r</tt> </tt>
-<a name="L4304"></a><tt class="py-lineno">4304</tt>  <tt class="py-line"><tt class="py-docstring">        (fwdExpr &lt;&lt; a) | b | c\r</tt> </tt>
-<a name="L4305"></a><tt class="py-lineno">4305</tt>  <tt class="py-line"><tt class="py-docstring">    thereby leaving b and c out as parseable alternatives.  It is recommended that you\r</tt> </tt>
-<a name="L4306"></a><tt class="py-lineno">4306</tt>  <tt class="py-line"><tt class="py-docstring">    explicitly group the values inserted into the C{Forward}::\r</tt> </tt>
-<a name="L4307"></a><tt class="py-lineno">4307</tt>  <tt class="py-line"><tt class="py-docstring">        fwdExpr &lt;&lt; (a | b | c)\r</tt> </tt>
-<a name="L4308"></a><tt class="py-lineno">4308</tt>  <tt class="py-line"><tt class="py-docstring">    Converting to use the '&lt;&lt;=' operator instead will avoid this problem.\r</tt> </tt>
-<a name="L4309"></a><tt class="py-lineno">4309</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4310"></a><tt class="py-lineno">4310</tt>  <tt class="py-line"><tt class="py-docstring">    See L{ParseResults.pprint} for an example of a recursive parser created using\r</tt> </tt>
-<a name="L4311"></a><tt class="py-lineno">4311</tt>  <tt class="py-line"><tt class="py-docstring">    C{Forward}.\r</tt> </tt>
-<a name="L4312"></a><tt class="py-lineno">4312</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Forward.__init__"></a><div id="Forward.__init__-def"><a name="L4313"></a><tt class="py-lineno">4313</tt> <a class="py-toggle" href="#" id="Forward.__init__-toggle" onclick="return toggle('Forward.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.__init__-expanded"><a name="L4314"></a><tt class="py-lineno">4314</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-667" class="py-name" targets="Class pyparsing.Forward=pyparsing.Forward-class.html"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-667', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-668', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L4315"></a><tt class="py-lineno">4315</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.__lshift__"></a><div id="Forward.__lshift__-def"><a name="L4316"></a><tt class="py-lineno">4316</tt> <a class="py-toggle" href="#" id="Forward.__lshift__-toggle" onclick="return toggle('Forward.__lshift__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#__lshift__">__lshift__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.__lshift__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.__lshift__-expanded"><a name="L4317"></a><tt class="py-lineno">4317</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4318"></a><tt class="py-lineno">4318</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-669" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-669', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt class="py-name">_literalStringClass</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4319"></a><tt class="py-lineno">4319</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt> </tt>\r
-<a name="L4320"></a><tt class="py-lineno">4320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strRepr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>\r
-<a name="L4321"></a><tt class="py-lineno">4321</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">mayIndexError</tt> </tt>\r
-<a name="L4322"></a><tt class="py-lineno">4322</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">mayReturnEmpty</tt> </tt>\r
-<a name="L4323"></a><tt class="py-lineno">4323</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-670" class="py-name"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-670', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">whiteChars</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4324"></a><tt class="py-lineno">4324</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> </tt>\r
-<a name="L4325"></a><tt class="py-lineno">4325</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> </tt>\r
-<a name="L4326"></a><tt class="py-lineno">4326</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">.</tt><tt id="link-671" class="py-name"><a title="pyparsing.ParseResults.extend" class="py-name" href="#" onclick="return doclink('link-671', 'extend', 'link-70');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4327"></a><tt class="py-lineno">4327</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L4328"></a><tt class="py-lineno">4328</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.__ilshift__"></a><div id="Forward.__ilshift__-def"><a name="L4329"></a><tt class="py-lineno">4329</tt> <a class="py-toggle" href="#" id="Forward.__ilshift__-toggle" onclick="return toggle('Forward.__ilshift__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#__ilshift__">__ilshift__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.__ilshift__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.__ilshift__-expanded"><a name="L4330"></a><tt class="py-lineno">4330</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-name">other</tt> </tt>\r
-</div><a name="L4331"></a><tt class="py-lineno">4331</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.leaveWhitespace"></a><div id="Forward.leaveWhitespace-def"><a name="L4332"></a><tt class="py-lineno">4332</tt> <a class="py-toggle" href="#" id="Forward.leaveWhitespace-toggle" onclick="return toggle('Forward.leaveWhitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#leaveWhitespace">leaveWhitespace</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.leaveWhitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.leaveWhitespace-expanded"><a name="L4333"></a><tt class="py-lineno">4333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L4334"></a><tt class="py-lineno">4334</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L4335"></a><tt class="py-lineno">4335</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.streamline"></a><div id="Forward.streamline-def"><a name="L4336"></a><tt class="py-lineno">4336</tt> <a class="py-toggle" href="#" id="Forward.streamline-toggle" onclick="return toggle('Forward.streamline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#streamline">streamline</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.streamline-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.streamline-expanded"><a name="L4337"></a><tt class="py-lineno">4337</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4338"></a><tt class="py-lineno">4338</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamlined</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L4339"></a><tt class="py-lineno">4339</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4340"></a><tt class="py-lineno">4340</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-672" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-672', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4341"></a><tt class="py-lineno">4341</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L4342"></a><tt class="py-lineno">4342</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.validate"></a><div id="Forward.validate-def"><a name="L4343"></a><tt class="py-lineno">4343</tt> <a class="py-toggle" href="#" id="Forward.validate-toggle" onclick="return toggle('Forward.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#validate">validate</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">validateTrace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.validate-expanded"><a name="L4344"></a><tt class="py-lineno">4344</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">validateTrace</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4345"></a><tt class="py-lineno">4345</tt>  <tt class="py-line">            <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">validateTrace</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4346"></a><tt class="py-lineno">4346</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4347"></a><tt class="py-lineno">4347</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name"><a title="pyparsing.Forward.validate
-pyparsing.ParseElementEnhance.validate
-pyparsing.ParseExpression.validate
-pyparsing.ParserElement.validate" class="py-name" href="#" onclick="return doclink('link-673', 'validate', 'link-529');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4348"></a><tt class="py-lineno">4348</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-674" class="py-name"><a title="pyparsing.And.checkRecursion
-pyparsing.Each.checkRecursion
-pyparsing.MatchFirst.checkRecursion
-pyparsing.Or.checkRecursion
-pyparsing.ParseElementEnhance.checkRecursion
-pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return doclink('link-674', 'checkRecursion', 'link-316');">checkRecursion</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4349"></a><tt class="py-lineno">4349</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.__str__"></a><div id="Forward.__str__-def"><a name="L4350"></a><tt class="py-lineno">4350</tt> <a class="py-toggle" href="#" id="Forward.__str__-toggle" onclick="return toggle('Forward.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.__str__-expanded"><a name="L4351"></a><tt class="py-lineno">4351</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"name"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4352"></a><tt class="py-lineno">4352</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L4353"></a><tt class="py-lineno">4353</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">": ..."</tt> </tt>\r
-<a name="L4354"></a><tt class="py-lineno">4354</tt>  <tt class="py-line">\r </tt>
-<a name="L4355"></a><tt class="py-lineno">4355</tt>  <tt class="py-line">        <tt class="py-comment"># stubbed out for now - creates awful memory and perf issues</tt>\r </tt>
-<a name="L4356"></a><tt class="py-lineno">4356</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revertClass</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>\r
-<a name="L4357"></a><tt class="py-lineno">4357</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt class="py-name">_ForwardNoRecurse</tt> </tt>\r
-<a name="L4358"></a><tt class="py-lineno">4358</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4359"></a><tt class="py-lineno">4359</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4360"></a><tt class="py-lineno">4360</tt>  <tt class="py-line">                <tt class="py-name">retString</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4361"></a><tt class="py-lineno">4361</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4362"></a><tt class="py-lineno">4362</tt>  <tt class="py-line">                <tt class="py-name">retString</tt> <tt class="py-op">=</tt> <tt class="py-string">"None"</tt> </tt>\r
-<a name="L4363"></a><tt class="py-lineno">4363</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4364"></a><tt class="py-lineno">4364</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revertClass</tt> </tt>\r
-<a name="L4365"></a><tt class="py-lineno">4365</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">": "</tt> <tt class="py-op">+</tt> <tt class="py-name">retString</tt> </tt>\r
-</div><a name="L4366"></a><tt class="py-lineno">4366</tt>  <tt class="py-line">\r </tt>
-<a name="Forward.copy"></a><div id="Forward.copy-def"><a name="L4367"></a><tt class="py-lineno">4367</tt> <a class="py-toggle" href="#" id="Forward.copy-toggle" onclick="return toggle('Forward.copy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Forward-class.html#copy">copy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Forward.copy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Forward.copy-expanded"><a name="L4368"></a><tt class="py-lineno">4368</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4369"></a><tt class="py-lineno">4369</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-675" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-675', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-676" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-676', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4370"></a><tt class="py-lineno">4370</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4371"></a><tt class="py-lineno">4371</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-677" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-677', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4372"></a><tt class="py-lineno">4372</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">&lt;&lt;=</tt> <tt class="py-name">self</tt> </tt>\r
-<a name="L4373"></a><tt class="py-lineno">4373</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L4374"></a><tt class="py-lineno">4374</tt>  <tt class="py-line">\r </tt>
-<a name="_ForwardNoRecurse"></a><div id="_ForwardNoRecurse-def"><a name="L4375"></a><tt class="py-lineno">4375</tt> <a class="py-toggle" href="#" id="_ForwardNoRecurse-toggle" onclick="return toggle('_ForwardNoRecurse');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._ForwardNoRecurse-class.html">_ForwardNoRecurse</a><tt class="py-op">(</tt><tt class="py-base-class">Forward</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ForwardNoRecurse-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_ForwardNoRecurse-expanded"><a name="_ForwardNoRecurse.__str__"></a><div id="_ForwardNoRecurse.__str__-def"><a name="L4376"></a><tt class="py-lineno">4376</tt> <a class="py-toggle" href="#" id="_ForwardNoRecurse.__str__-toggle" onclick="return toggle('_ForwardNoRecurse.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._ForwardNoRecurse-class.html#__str__">__str__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_ForwardNoRecurse.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ForwardNoRecurse.__str__-expanded"><a name="L4377"></a><tt class="py-lineno">4377</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"..."</tt> </tt>\r
-</div></div><a name="L4378"></a><tt class="py-lineno">4378</tt>  <tt class="py-line">\r </tt>
-<a name="TokenConverter"></a><div id="TokenConverter-def"><a name="L4379"></a><tt class="py-lineno">4379</tt> <a class="py-toggle" href="#" id="TokenConverter-toggle" onclick="return toggle('TokenConverter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.TokenConverter-class.html">TokenConverter</a><tt class="py-op">(</tt><tt class="py-base-class">ParseElementEnhance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="TokenConverter-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TokenConverter-expanded"><a name="L4380"></a><tt class="py-lineno">4380</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4381"></a><tt class="py-lineno">4381</tt>  <tt class="py-line"><tt class="py-docstring">    Abstract subclass of C{ParseExpression}, for converting parsed results.\r</tt> </tt>
-<a name="L4382"></a><tt class="py-lineno">4382</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="TokenConverter.__init__"></a><div id="TokenConverter.__init__-def"><a name="L4383"></a><tt class="py-lineno">4383</tt> <a class="py-toggle" href="#" id="TokenConverter.__init__-toggle" onclick="return toggle('TokenConverter.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.TokenConverter-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">savelist</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="TokenConverter.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TokenConverter.__init__-expanded"><a name="L4384"></a><tt class="py-lineno">4384</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-678" class="py-name" targets="Class pyparsing.TokenConverter=pyparsing.TokenConverter-class.html"><a title="pyparsing.TokenConverter" class="py-name" href="#" onclick="return doclink('link-678', 'TokenConverter', 'link-678');">TokenConverter</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-679" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-679', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt><tt class="py-comment">#, savelist )</tt> </tt>\r
-<a name="L4385"></a><tt class="py-lineno">4385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div></div><a name="L4386"></a><tt class="py-lineno">4386</tt>  <tt class="py-line">\r </tt>
-<a name="Combine"></a><div id="Combine-def"><a name="L4387"></a><tt class="py-lineno">4387</tt> <a class="py-toggle" href="#" id="Combine-toggle" onclick="return toggle('Combine');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Combine-class.html">Combine</a><tt class="py-op">(</tt><tt class="py-base-class">TokenConverter</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Combine-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Combine-expanded"><a name="L4388"></a><tt class="py-lineno">4388</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4389"></a><tt class="py-lineno">4389</tt>  <tt class="py-line"><tt class="py-docstring">    Converter to concatenate all matching tokens to a single string.\r</tt> </tt>
-<a name="L4390"></a><tt class="py-lineno">4390</tt>  <tt class="py-line"><tt class="py-docstring">    By default, the matching patterns must also be contiguous in the input string;\r</tt> </tt>
-<a name="L4391"></a><tt class="py-lineno">4391</tt>  <tt class="py-line"><tt class="py-docstring">    this can be disabled by specifying C{'adjacent=False'} in the constructor.\r</tt> </tt>
-<a name="L4392"></a><tt class="py-lineno">4392</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4393"></a><tt class="py-lineno">4393</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4394"></a><tt class="py-lineno">4394</tt>  <tt class="py-line"><tt class="py-docstring">        real = Word(nums) + '.' + Word(nums)\r</tt> </tt>
-<a name="L4395"></a><tt class="py-lineno">4395</tt>  <tt class="py-line"><tt class="py-docstring">        print(real.parseString('3.1416')) # -&gt; ['3', '.', '1416']\r</tt> </tt>
-<a name="L4396"></a><tt class="py-lineno">4396</tt>  <tt class="py-line"><tt class="py-docstring">        # will also erroneously match the following\r</tt> </tt>
-<a name="L4397"></a><tt class="py-lineno">4397</tt>  <tt class="py-line"><tt class="py-docstring">        print(real.parseString('3. 1416')) # -&gt; ['3', '.', '1416']\r</tt> </tt>
-<a name="L4398"></a><tt class="py-lineno">4398</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4399"></a><tt class="py-lineno">4399</tt>  <tt class="py-line"><tt class="py-docstring">        real = Combine(Word(nums) + '.' + Word(nums))\r</tt> </tt>
-<a name="L4400"></a><tt class="py-lineno">4400</tt>  <tt class="py-line"><tt class="py-docstring">        print(real.parseString('3.1416')) # -&gt; ['3.1416']\r</tt> </tt>
-<a name="L4401"></a><tt class="py-lineno">4401</tt>  <tt class="py-line"><tt class="py-docstring">        # no match when there are internal spaces\r</tt> </tt>
-<a name="L4402"></a><tt class="py-lineno">4402</tt>  <tt class="py-line"><tt class="py-docstring">        print(real.parseString('3. 1416')) # -&gt; Exception: Expected W:(0123...)\r</tt> </tt>
-<a name="L4403"></a><tt class="py-lineno">4403</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Combine.__init__"></a><div id="Combine.__init__-def"><a name="L4404"></a><tt class="py-lineno">4404</tt> <a class="py-toggle" href="#" id="Combine.__init__-toggle" onclick="return toggle('Combine.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Combine-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">joinString</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">adjacent</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Combine.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Combine.__init__-expanded"><a name="L4405"></a><tt class="py-lineno">4405</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-680" class="py-name" targets="Class pyparsing.Combine=pyparsing.Combine-class.html"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-680', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-681" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-681', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4406"></a><tt class="py-lineno">4406</tt>  <tt class="py-line">        <tt class="py-comment"># suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself</tt>\r </tt>
-<a name="L4407"></a><tt class="py-lineno">4407</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">adjacent</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4408"></a><tt class="py-lineno">4408</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-682" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-682', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4409"></a><tt class="py-lineno">4409</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">adjacent</tt> <tt class="py-op">=</tt> <tt class="py-name">adjacent</tt> </tt>\r
-<a name="L4410"></a><tt class="py-lineno">4410</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">skipWhitespace</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L4411"></a><tt class="py-lineno">4411</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">joinString</tt> <tt class="py-op">=</tt> <tt class="py-name">joinString</tt> </tt>\r
-<a name="L4412"></a><tt class="py-lineno">4412</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L4413"></a><tt class="py-lineno">4413</tt>  <tt class="py-line">\r </tt>
-<a name="Combine.ignore"></a><div id="Combine.ignore-def"><a name="L4414"></a><tt class="py-lineno">4414</tt> <a class="py-toggle" href="#" id="Combine.ignore-toggle" onclick="return toggle('Combine.ignore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Combine-class.html#ignore">ignore</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Combine.ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Combine.ignore-expanded"><a name="L4415"></a><tt class="py-lineno">4415</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">adjacent</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4416"></a><tt class="py-lineno">4416</tt>  <tt class="py-line">            <tt id="link-683" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-683', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-684" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-684', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4417"></a><tt class="py-lineno">4417</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4418"></a><tt class="py-lineno">4418</tt>  <tt class="py-line">            <tt class="py-name">super</tt><tt class="py-op">(</tt> <tt id="link-685" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-685', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-686" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-686', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt> <tt class="py-name">other</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4419"></a><tt class="py-lineno">4419</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div><a name="L4420"></a><tt class="py-lineno">4420</tt>  <tt class="py-line">\r </tt>
-<a name="Combine.postParse"></a><div id="Combine.postParse-def"><a name="L4421"></a><tt class="py-lineno">4421</tt> <a class="py-toggle" href="#" id="Combine.postParse-toggle" onclick="return toggle('Combine.postParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Combine-class.html#postParse">postParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">tokenlist</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Combine.postParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Combine.postParse-expanded"><a name="L4422"></a><tt class="py-lineno">4422</tt>  <tt class="py-line">        <tt class="py-name">retToks</tt> <tt class="py-op">=</tt> <tt class="py-name">tokenlist</tt><tt class="py-op">.</tt><tt id="link-687" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-687', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4423"></a><tt class="py-lineno">4423</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">retToks</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4424"></a><tt class="py-lineno">4424</tt>  <tt class="py-line">        <tt class="py-name">retToks</tt> <tt class="py-op">+=</tt> <tt id="link-688" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-688', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">tokenlist</tt><tt class="py-op">.</tt><tt class="py-name">_asStringList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">joinString</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">modal</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modalResults</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4425"></a><tt class="py-lineno">4425</tt>  <tt class="py-line">\r </tt>
-<a name="L4426"></a><tt class="py-lineno">4426</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt> <tt class="py-keyword">and</tt> <tt class="py-name">retToks</tt><tt class="py-op">.</tt><tt id="link-689" class="py-name"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-689', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4427"></a><tt class="py-lineno">4427</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">retToks</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L4428"></a><tt class="py-lineno">4428</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4429"></a><tt class="py-lineno">4429</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">retToks</tt> </tt>\r
-</div></div><a name="L4430"></a><tt class="py-lineno">4430</tt>  <tt class="py-line">\r </tt>
-<a name="Group"></a><div id="Group-def"><a name="L4431"></a><tt class="py-lineno">4431</tt> <a class="py-toggle" href="#" id="Group-toggle" onclick="return toggle('Group');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Group-class.html">Group</a><tt class="py-op">(</tt><tt class="py-base-class">TokenConverter</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Group-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Group-expanded"><a name="L4432"></a><tt class="py-lineno">4432</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4433"></a><tt class="py-lineno">4433</tt>  <tt class="py-line"><tt class="py-docstring">    Converter to return the matched tokens as a list - useful for returning tokens of C{L{ZeroOrMore}} and C{L{OneOrMore}} expressions.\r</tt> </tt>
-<a name="L4434"></a><tt class="py-lineno">4434</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4435"></a><tt class="py-lineno">4435</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4436"></a><tt class="py-lineno">4436</tt>  <tt class="py-line"><tt class="py-docstring">        ident = Word(alphas)\r</tt> </tt>
-<a name="L4437"></a><tt class="py-lineno">4437</tt>  <tt class="py-line"><tt class="py-docstring">        num = Word(nums)\r</tt> </tt>
-<a name="L4438"></a><tt class="py-lineno">4438</tt>  <tt class="py-line"><tt class="py-docstring">        term = ident | num\r</tt> </tt>
-<a name="L4439"></a><tt class="py-lineno">4439</tt>  <tt class="py-line"><tt class="py-docstring">        func = ident + Optional(delimitedList(term))\r</tt> </tt>
-<a name="L4440"></a><tt class="py-lineno">4440</tt>  <tt class="py-line"><tt class="py-docstring">        print(func.parseString("fn a,b,100"))  # -&gt; ['fn', 'a', 'b', '100']\r</tt> </tt>
-<a name="L4441"></a><tt class="py-lineno">4441</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4442"></a><tt class="py-lineno">4442</tt>  <tt class="py-line"><tt class="py-docstring">        func = ident + Group(Optional(delimitedList(term)))\r</tt> </tt>
-<a name="L4443"></a><tt class="py-lineno">4443</tt>  <tt class="py-line"><tt class="py-docstring">        print(func.parseString("fn a,b,100"))  # -&gt; ['fn', ['a', 'b', '100']]\r</tt> </tt>
-<a name="L4444"></a><tt class="py-lineno">4444</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Group.__init__"></a><div id="Group.__init__-def"><a name="L4445"></a><tt class="py-lineno">4445</tt> <a class="py-toggle" href="#" id="Group.__init__-toggle" onclick="return toggle('Group.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Group-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Group.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Group.__init__-expanded"><a name="L4446"></a><tt class="py-lineno">4446</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-690" class="py-name" targets="Class pyparsing.Group=pyparsing.Group-class.html"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-690', 'Group', 'link-690');">Group</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-691" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-691', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4447"></a><tt class="py-lineno">4447</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L4448"></a><tt class="py-lineno">4448</tt>  <tt class="py-line">\r </tt>
-<a name="Group.postParse"></a><div id="Group.postParse-def"><a name="L4449"></a><tt class="py-lineno">4449</tt> <a class="py-toggle" href="#" id="Group.postParse-toggle" onclick="return toggle('Group.postParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Group-class.html#postParse">postParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">tokenlist</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Group.postParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Group.postParse-expanded"><a name="L4450"></a><tt class="py-lineno">4450</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">tokenlist</tt> <tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L4451"></a><tt class="py-lineno">4451</tt>  <tt class="py-line">\r </tt>
-<a name="Dict"></a><div id="Dict-def"><a name="L4452"></a><tt class="py-lineno">4452</tt> <a class="py-toggle" href="#" id="Dict-toggle" onclick="return toggle('Dict');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Dict-class.html">Dict</a><tt class="py-op">(</tt><tt class="py-base-class">TokenConverter</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Dict-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Dict-expanded"><a name="L4453"></a><tt class="py-lineno">4453</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4454"></a><tt class="py-lineno">4454</tt>  <tt class="py-line"><tt class="py-docstring">    Converter to return a repetitive expression as a list, but also as a dictionary.\r</tt> </tt>
-<a name="L4455"></a><tt class="py-lineno">4455</tt>  <tt class="py-line"><tt class="py-docstring">    Each element can also be referenced using the first token in the expression as its key.\r</tt> </tt>
-<a name="L4456"></a><tt class="py-lineno">4456</tt>  <tt class="py-line"><tt class="py-docstring">    Useful for tabular report scraping when the first column can be used as a item key.\r</tt> </tt>
-<a name="L4457"></a><tt class="py-lineno">4457</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4458"></a><tt class="py-lineno">4458</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4459"></a><tt class="py-lineno">4459</tt>  <tt class="py-line"><tt class="py-docstring">        data_word = Word(alphas)\r</tt> </tt>
-<a name="L4460"></a><tt class="py-lineno">4460</tt>  <tt class="py-line"><tt class="py-docstring">        label = data_word + FollowedBy(':')\r</tt> </tt>
-<a name="L4461"></a><tt class="py-lineno">4461</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))\r</tt> </tt>
-<a name="L4462"></a><tt class="py-lineno">4462</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4463"></a><tt class="py-lineno">4463</tt>  <tt class="py-line"><tt class="py-docstring">        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"\r</tt> </tt>
-<a name="L4464"></a><tt class="py-lineno">4464</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r</tt> </tt>
-<a name="L4465"></a><tt class="py-lineno">4465</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4466"></a><tt class="py-lineno">4466</tt>  <tt class="py-line"><tt class="py-docstring">        # print attributes as plain groups\r</tt> </tt>
-<a name="L4467"></a><tt class="py-lineno">4467</tt>  <tt class="py-line"><tt class="py-docstring">        print(OneOrMore(attr_expr).parseString(text).dump())\r</tt> </tt>
-<a name="L4468"></a><tt class="py-lineno">4468</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4469"></a><tt class="py-lineno">4469</tt>  <tt class="py-line"><tt class="py-docstring">        # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names\r</tt> </tt>
-<a name="L4470"></a><tt class="py-lineno">4470</tt>  <tt class="py-line"><tt class="py-docstring">        result = Dict(OneOrMore(Group(attr_expr))).parseString(text)\r</tt> </tt>
-<a name="L4471"></a><tt class="py-lineno">4471</tt>  <tt class="py-line"><tt class="py-docstring">        print(result.dump())\r</tt> </tt>
-<a name="L4472"></a><tt class="py-lineno">4472</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4473"></a><tt class="py-lineno">4473</tt>  <tt class="py-line"><tt class="py-docstring">        # access named fields as dict entries, or output as dict\r</tt> </tt>
-<a name="L4474"></a><tt class="py-lineno">4474</tt>  <tt class="py-line"><tt class="py-docstring">        print(result['shape'])\r</tt> </tt>
-<a name="L4475"></a><tt class="py-lineno">4475</tt>  <tt class="py-line"><tt class="py-docstring">        print(result.asDict())\r</tt> </tt>
-<a name="L4476"></a><tt class="py-lineno">4476</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4477"></a><tt class="py-lineno">4477</tt>  <tt class="py-line"><tt class="py-docstring">        ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap']\r</tt> </tt>
-<a name="L4478"></a><tt class="py-lineno">4478</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4479"></a><tt class="py-lineno">4479</tt>  <tt class="py-line"><tt class="py-docstring">        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]\r</tt> </tt>
-<a name="L4480"></a><tt class="py-lineno">4480</tt>  <tt class="py-line"><tt class="py-docstring">        - color: light blue\r</tt> </tt>
-<a name="L4481"></a><tt class="py-lineno">4481</tt>  <tt class="py-line"><tt class="py-docstring">        - posn: upper left\r</tt> </tt>
-<a name="L4482"></a><tt class="py-lineno">4482</tt>  <tt class="py-line"><tt class="py-docstring">        - shape: SQUARE\r</tt> </tt>
-<a name="L4483"></a><tt class="py-lineno">4483</tt>  <tt class="py-line"><tt class="py-docstring">        - texture: burlap\r</tt> </tt>
-<a name="L4484"></a><tt class="py-lineno">4484</tt>  <tt class="py-line"><tt class="py-docstring">        SQUARE\r</tt> </tt>
-<a name="L4485"></a><tt class="py-lineno">4485</tt>  <tt class="py-line"><tt class="py-docstring">        {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'}\r</tt> </tt>
-<a name="L4486"></a><tt class="py-lineno">4486</tt>  <tt class="py-line"><tt class="py-docstring">    See more examples at L{ParseResults} of accessing fields by results name.\r</tt> </tt>
-<a name="L4487"></a><tt class="py-lineno">4487</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Dict.__init__"></a><div id="Dict.__init__-def"><a name="L4488"></a><tt class="py-lineno">4488</tt> <a class="py-toggle" href="#" id="Dict.__init__-toggle" onclick="return toggle('Dict.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Dict-class.html#__init__">__init__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expr</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Dict.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Dict.__init__-expanded"><a name="L4489"></a><tt class="py-lineno">4489</tt>  <tt class="py-line">        <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-692" class="py-name" targets="Class pyparsing.Dict=pyparsing.Dict-class.html"><a title="pyparsing.Dict" class="py-name" href="#" onclick="return doclink('link-692', 'Dict', 'link-692');">Dict</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-693" class="py-name"><a title="pyparsing.And.__init__
-pyparsing.CaselessKeyword.__init__
-pyparsing.CaselessLiteral.__init__
-pyparsing.Char.__init__
-pyparsing.CharsNotIn.__init__
-pyparsing.CloseMatch.__init__
-pyparsing.Combine.__init__
-pyparsing.Dict.__init__
-pyparsing.Each.__init__
-pyparsing.Empty.__init__
-pyparsing.FollowedBy.__init__
-pyparsing.Forward.__init__
-pyparsing.GoToColumn.__init__
-pyparsing.Group.__init__
-pyparsing.Keyword.__init__
-pyparsing.LineEnd.__init__
-pyparsing.LineStart.__init__
-pyparsing.Literal.__init__
-pyparsing.MatchFirst.__init__
-pyparsing.NoMatch.__init__
-pyparsing.NotAny.__init__
-pyparsing.OnlyOnce.__init__
-pyparsing.Optional.__init__
-pyparsing.Or.__init__
-pyparsing.ParseBaseException.__init__
-pyparsing.ParseElementEnhance.__init__
-pyparsing.ParseExpression.__init__
-pyparsing.ParseResults.__init__
-pyparsing.ParserElement.__init__
-pyparsing.PrecededBy.__init__
-pyparsing.QuotedString.__init__
-pyparsing.RecursiveGrammarException.__init__
-pyparsing.Regex.__init__
-pyparsing.SkipTo.__init__
-pyparsing.StringEnd.__init__
-pyparsing.StringStart.__init__
-pyparsing.Token.__init__
-pyparsing.TokenConverter.__init__
-pyparsing.White.__init__
-pyparsing.Word.__init__
-pyparsing.WordEnd.__init__
-pyparsing.WordStart.__init__
-pyparsing.ZeroOrMore.__init__" class="py-name" href="#" onclick="return doclink('link-693', '__init__', 'link-344');">__init__</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4490"></a><tt class="py-lineno">4490</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saveAsList</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-</div><a name="L4491"></a><tt class="py-lineno">4491</tt>  <tt class="py-line">\r </tt>
-<a name="Dict.postParse"></a><div id="Dict.postParse-def"><a name="L4492"></a><tt class="py-lineno">4492</tt> <a class="py-toggle" href="#" id="Dict.postParse-toggle" onclick="return toggle('Dict.postParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Dict-class.html#postParse">postParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">tokenlist</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Dict.postParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Dict.postParse-expanded"><a name="L4493"></a><tt class="py-lineno">4493</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">tok</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">tokenlist</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4494"></a><tt class="py-lineno">4494</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4495"></a><tt class="py-lineno">4495</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>\r
-<a name="L4496"></a><tt class="py-lineno">4496</tt>  <tt class="py-line">            <tt class="py-name">ikey</tt> <tt class="py-op">=</tt> <tt class="py-name">tok</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4497"></a><tt class="py-lineno">4497</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">ikey</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4498"></a><tt class="py-lineno">4498</tt>  <tt class="py-line">                <tt class="py-name">ikey</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4499"></a><tt class="py-lineno">4499</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4500"></a><tt class="py-lineno">4500</tt>  <tt class="py-line">                <tt class="py-name">tokenlist</tt><tt class="py-op">[</tt><tt class="py-name">ikey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4501"></a><tt class="py-lineno">4501</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt id="link-694" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-694', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4502"></a><tt class="py-lineno">4502</tt>  <tt class="py-line">                <tt class="py-name">tokenlist</tt><tt class="py-op">[</tt><tt class="py-name">ikey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4503"></a><tt class="py-lineno">4503</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4504"></a><tt class="py-lineno">4504</tt>  <tt class="py-line">                <tt class="py-name">dictvalue</tt> <tt class="py-op">=</tt> <tt class="py-name">tok</tt><tt class="py-op">.</tt><tt id="link-695" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-695', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment">#ParseResults(i)</tt> </tt>\r
-<a name="L4505"></a><tt class="py-lineno">4505</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">dictvalue</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4506"></a><tt class="py-lineno">4506</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dictvalue</tt><tt class="py-op">)</tt><tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">dictvalue</tt><tt class="py-op">,</tt><tt id="link-696" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-696', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">dictvalue</tt><tt class="py-op">.</tt><tt id="link-697" class="py-name"><a title="pyparsing.ParseResults.haskeys" class="py-name" href="#" onclick="return doclink('link-697', 'haskeys', 'link-86');">haskeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4507"></a><tt class="py-lineno">4507</tt>  <tt class="py-line">                    <tt class="py-name">tokenlist</tt><tt class="py-op">[</tt><tt class="py-name">ikey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">dictvalue</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4508"></a><tt class="py-lineno">4508</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4509"></a><tt class="py-lineno">4509</tt>  <tt class="py-line">                    <tt class="py-name">tokenlist</tt><tt class="py-op">[</tt><tt class="py-name">ikey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_ParseResultsWithOffset</tt><tt class="py-op">(</tt><tt class="py-name">dictvalue</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4510"></a><tt class="py-lineno">4510</tt>  <tt class="py-line">\r </tt>
-<a name="L4511"></a><tt class="py-lineno">4511</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resultsName</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4512"></a><tt class="py-lineno">4512</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">tokenlist</tt> <tt class="py-op">]</tt> </tt>\r
-<a name="L4513"></a><tt class="py-lineno">4513</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4514"></a><tt class="py-lineno">4514</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">tokenlist</tt> </tt>\r
-</div></div><a name="L4515"></a><tt class="py-lineno">4515</tt>  <tt class="py-line">\r </tt>
-<a name="Suppress"></a><div id="Suppress-def"><a name="L4516"></a><tt class="py-lineno">4516</tt>  <tt class="py-line">\r </tt>
-<a name="L4517"></a><tt class="py-lineno">4517</tt> <a class="py-toggle" href="#" id="Suppress-toggle" onclick="return toggle('Suppress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.Suppress-class.html">Suppress</a><tt class="py-op">(</tt><tt class="py-base-class">TokenConverter</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Suppress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Suppress-expanded"><a name="L4518"></a><tt class="py-lineno">4518</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4519"></a><tt class="py-lineno">4519</tt>  <tt class="py-line"><tt class="py-docstring">    Converter for ignoring the results of a parsed expression.\r</tt> </tt>
-<a name="L4520"></a><tt class="py-lineno">4520</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4521"></a><tt class="py-lineno">4521</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4522"></a><tt class="py-lineno">4522</tt>  <tt class="py-line"><tt class="py-docstring">        source = "a, b, c,d"\r</tt> </tt>
-<a name="L4523"></a><tt class="py-lineno">4523</tt>  <tt class="py-line"><tt class="py-docstring">        wd = Word(alphas)\r</tt> </tt>
-<a name="L4524"></a><tt class="py-lineno">4524</tt>  <tt class="py-line"><tt class="py-docstring">        wd_list1 = wd + ZeroOrMore(',' + wd)\r</tt> </tt>
-<a name="L4525"></a><tt class="py-lineno">4525</tt>  <tt class="py-line"><tt class="py-docstring">        print(wd_list1.parseString(source))\r</tt> </tt>
-<a name="L4526"></a><tt class="py-lineno">4526</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4527"></a><tt class="py-lineno">4527</tt>  <tt class="py-line"><tt class="py-docstring">        # often, delimiters that are useful during parsing are just in the\r</tt> </tt>
-<a name="L4528"></a><tt class="py-lineno">4528</tt>  <tt class="py-line"><tt class="py-docstring">        # way afterward - use Suppress to keep them out of the parsed output\r</tt> </tt>
-<a name="L4529"></a><tt class="py-lineno">4529</tt>  <tt class="py-line"><tt class="py-docstring">        wd_list2 = wd + ZeroOrMore(Suppress(',') + wd)\r</tt> </tt>
-<a name="L4530"></a><tt class="py-lineno">4530</tt>  <tt class="py-line"><tt class="py-docstring">        print(wd_list2.parseString(source))\r</tt> </tt>
-<a name="L4531"></a><tt class="py-lineno">4531</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4532"></a><tt class="py-lineno">4532</tt>  <tt class="py-line"><tt class="py-docstring">        ['a', ',', 'b', ',', 'c', ',', 'd']\r</tt> </tt>
-<a name="L4533"></a><tt class="py-lineno">4533</tt>  <tt class="py-line"><tt class="py-docstring">        ['a', 'b', 'c', 'd']\r</tt> </tt>
-<a name="L4534"></a><tt class="py-lineno">4534</tt>  <tt class="py-line"><tt class="py-docstring">    (See also L{delimitedList}.)\r</tt> </tt>
-<a name="L4535"></a><tt class="py-lineno">4535</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="Suppress.postParse"></a><div id="Suppress.postParse-def"><a name="L4536"></a><tt class="py-lineno">4536</tt> <a class="py-toggle" href="#" id="Suppress.postParse-toggle" onclick="return toggle('Suppress.postParse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Suppress-class.html#postParse">postParse</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">tokenlist</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Suppress.postParse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Suppress.postParse-expanded"><a name="L4537"></a><tt class="py-lineno">4537</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4538"></a><tt class="py-lineno">4538</tt>  <tt class="py-line">\r </tt>
-<a name="Suppress.suppress"></a><div id="Suppress.suppress-def"><a name="L4539"></a><tt class="py-lineno">4539</tt> <a class="py-toggle" href="#" id="Suppress.suppress-toggle" onclick="return toggle('Suppress.suppress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.Suppress-class.html#suppress">suppress</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="Suppress.suppress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Suppress.suppress-expanded"><a name="L4540"></a><tt class="py-lineno">4540</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>\r
-</div></div><a name="L4541"></a><tt class="py-lineno">4541</tt>  <tt class="py-line">\r </tt>
-<a name="OnlyOnce"></a><div id="OnlyOnce-def"><a name="L4542"></a><tt class="py-lineno">4542</tt>  <tt class="py-line">\r </tt>
-<a name="L4543"></a><tt class="py-lineno">4543</tt> <a class="py-toggle" href="#" id="OnlyOnce-toggle" onclick="return toggle('OnlyOnce');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.OnlyOnce-class.html">OnlyOnce</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OnlyOnce-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OnlyOnce-expanded"><a name="L4544"></a><tt class="py-lineno">4544</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4545"></a><tt class="py-lineno">4545</tt>  <tt class="py-line"><tt class="py-docstring">    Wrapper for parse actions, to ensure they are only called once.\r</tt> </tt>
-<a name="L4546"></a><tt class="py-lineno">4546</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="OnlyOnce.__init__"></a><div id="OnlyOnce.__init__-def"><a name="L4547"></a><tt class="py-lineno">4547</tt> <a class="py-toggle" href="#" id="OnlyOnce.__init__-toggle" onclick="return toggle('OnlyOnce.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.OnlyOnce-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">methodCall</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OnlyOnce.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OnlyOnce.__init__-expanded"><a name="L4548"></a><tt class="py-lineno">4548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callable</tt> <tt class="py-op">=</tt> <tt class="py-name">_trim_arity</tt><tt class="py-op">(</tt><tt class="py-name">methodCall</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4549"></a><tt class="py-lineno">4549</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div><a name="OnlyOnce.__call__"></a><div id="OnlyOnce.__call__-def"><a name="L4550"></a><tt class="py-lineno">4550</tt> <a class="py-toggle" href="#" id="OnlyOnce.__call__-toggle" onclick="return toggle('OnlyOnce.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.OnlyOnce-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OnlyOnce.__call__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OnlyOnce.__call__-expanded"><a name="L4551"></a><tt class="py-lineno">4551</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">called</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4552"></a><tt class="py-lineno">4552</tt>  <tt class="py-line">            <tt class="py-name">results</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4553"></a><tt class="py-lineno">4553</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>\r
-<a name="L4554"></a><tt class="py-lineno">4554</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">results</tt> </tt>\r
-<a name="L4555"></a><tt class="py-lineno">4555</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-698" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-698', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="OnlyOnce.reset"></a><div id="OnlyOnce.reset-def"><a name="L4556"></a><tt class="py-lineno">4556</tt> <a class="py-toggle" href="#" id="OnlyOnce.reset-toggle" onclick="return toggle('OnlyOnce.reset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.OnlyOnce-class.html#reset">reset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="OnlyOnce.reset-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OnlyOnce.reset-expanded"><a name="L4557"></a><tt class="py-lineno">4557</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-</div></div><a name="L4558"></a><tt class="py-lineno">4558</tt>  <tt class="py-line">\r </tt>
-<a name="traceParseAction"></a><div id="traceParseAction-def"><a name="L4559"></a><tt class="py-lineno">4559</tt> <a class="py-toggle" href="#" id="traceParseAction-toggle" onclick="return toggle('traceParseAction');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#traceParseAction">traceParseAction</a><tt class="py-op">(</tt><tt class="py-param">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="traceParseAction-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="traceParseAction-expanded"><a name="L4560"></a><tt class="py-lineno">4560</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4561"></a><tt class="py-lineno">4561</tt>  <tt class="py-line"><tt class="py-docstring">    Decorator for debugging parse actions.\r</tt> </tt>
-<a name="L4562"></a><tt class="py-lineno">4562</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4563"></a><tt class="py-lineno">4563</tt>  <tt class="py-line"><tt class="py-docstring">    When the parse action is called, this decorator will print C{"&gt;&gt; entering I{method-name}(line:I{current_source_line}, I{parse_location}, I{matched_tokens})".}\r</tt> </tt>
-<a name="L4564"></a><tt class="py-lineno">4564</tt>  <tt class="py-line"><tt class="py-docstring">    When the parse action completes, the decorator will print C{"&lt;&lt;"} followed by the returned value, or any exception that the parse action raised.\r</tt> </tt>
-<a name="L4565"></a><tt class="py-lineno">4565</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4566"></a><tt class="py-lineno">4566</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4567"></a><tt class="py-lineno">4567</tt>  <tt class="py-line"><tt class="py-docstring">        wd = Word(alphas)\r</tt> </tt>
-<a name="L4568"></a><tt class="py-lineno">4568</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4569"></a><tt class="py-lineno">4569</tt>  <tt class="py-line"><tt class="py-docstring">        @traceParseAction\r</tt> </tt>
-<a name="L4570"></a><tt class="py-lineno">4570</tt>  <tt class="py-line"><tt class="py-docstring">        def remove_duplicate_chars(tokens):\r</tt> </tt>
-<a name="L4571"></a><tt class="py-lineno">4571</tt>  <tt class="py-line"><tt class="py-docstring">            return ''.join(sorted(set(''.join(tokens))))\r</tt> </tt>
-<a name="L4572"></a><tt class="py-lineno">4572</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4573"></a><tt class="py-lineno">4573</tt>  <tt class="py-line"><tt class="py-docstring">        wds = OneOrMore(wd).setParseAction(remove_duplicate_chars)\r</tt> </tt>
-<a name="L4574"></a><tt class="py-lineno">4574</tt>  <tt class="py-line"><tt class="py-docstring">        print(wds.parseString("slkdjs sld sldd sdlf sdljf"))\r</tt> </tt>
-<a name="L4575"></a><tt class="py-lineno">4575</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4576"></a><tt class="py-lineno">4576</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {}))\r</tt> </tt>
-<a name="L4577"></a><tt class="py-lineno">4577</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;&lt;leaving remove_duplicate_chars (ret: 'dfjkls')\r</tt> </tt>
-<a name="L4578"></a><tt class="py-lineno">4578</tt>  <tt class="py-line"><tt class="py-docstring">        ['dfjkls']\r</tt> </tt>
-<a name="L4579"></a><tt class="py-lineno">4579</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4580"></a><tt class="py-lineno">4580</tt>  <tt class="py-line">    <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">_trim_arity</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4581"></a><tt class="py-lineno">4581</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">z</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">paArgs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4582"></a><tt class="py-lineno">4582</tt>  <tt class="py-line">        <tt class="py-name">thisFunc</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>\r
-<a name="L4583"></a><tt class="py-lineno">4583</tt>  <tt class="py-line">        <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">paArgs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4584"></a><tt class="py-lineno">4584</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">paArgs</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4585"></a><tt class="py-lineno">4585</tt>  <tt class="py-line">            <tt class="py-name">thisFunc</tt> <tt class="py-op">=</tt> <tt class="py-name">paArgs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">'.'</tt> <tt class="py-op">+</tt> <tt class="py-name">thisFunc</tt> </tt>\r
-<a name="L4586"></a><tt class="py-lineno">4586</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt> <tt class="py-string">"&gt;&gt;entering %s(line: '%s', %d, %r)\n"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">thisFunc</tt><tt class="py-op">,</tt><tt id="link-699" class="py-name"><a title="pyparsing.line" class="py-name" href="#" onclick="return doclink('link-699', 'line', 'link-32');">line</a></tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4587"></a><tt class="py-lineno">4587</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4588"></a><tt class="py-lineno">4588</tt>  <tt class="py-line">            <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">paArgs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4589"></a><tt class="py-lineno">4589</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt> <tt class="py-keyword">as</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4590"></a><tt class="py-lineno">4590</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt> <tt class="py-string">"&lt;&lt;leaving %s (exception: %s)\n"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">thisFunc</tt><tt class="py-op">,</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4591"></a><tt class="py-lineno">4591</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>\r
-<a name="L4592"></a><tt class="py-lineno">4592</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt> <tt class="py-string">"&lt;&lt;leaving %s (ret: %r)\n"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">thisFunc</tt><tt class="py-op">,</tt><tt class="py-name">ret</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4593"></a><tt class="py-lineno">4593</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L4594"></a><tt class="py-lineno">4594</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4595"></a><tt class="py-lineno">4595</tt>  <tt class="py-line">        <tt class="py-name">z</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>\r
-<a name="L4596"></a><tt class="py-lineno">4596</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4597"></a><tt class="py-lineno">4597</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>\r
-<a name="L4598"></a><tt class="py-lineno">4598</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">z</tt> </tt>\r
-</div><a name="L4599"></a><tt class="py-lineno">4599</tt>  <tt class="py-line">\r </tt>
-<a name="delimitedList"></a><div id="delimitedList-def"><a name="L4600"></a><tt class="py-lineno">4600</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L4601"></a><tt class="py-lineno">4601</tt>  <tt class="py-line"><tt class="py-comment"># global helpers</tt>\r </tt>
-<a name="L4602"></a><tt class="py-lineno">4602</tt>  <tt class="py-line"><tt class="py-comment">#</tt>\r </tt>
-<a name="L4603"></a><tt class="py-lineno">4603</tt> <a class="py-toggle" href="#" id="delimitedList-toggle" onclick="return toggle('delimitedList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#delimitedList">delimitedList</a><tt class="py-op">(</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">delim</tt><tt class="py-op">=</tt><tt class="py-string">","</tt><tt class="py-op">,</tt> <tt class="py-param">combine</tt><tt class="py-op">=</tt><tt class="py-name">False</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="delimitedList-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="delimitedList-expanded"><a name="L4604"></a><tt class="py-lineno">4604</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4605"></a><tt class="py-lineno">4605</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to define a delimited list of expressions - the delimiter defaults to ','.\r</tt> </tt>
-<a name="L4606"></a><tt class="py-lineno">4606</tt>  <tt class="py-line"><tt class="py-docstring">    By default, the list elements and delimiters can have intervening whitespace, and\r</tt> </tt>
-<a name="L4607"></a><tt class="py-lineno">4607</tt>  <tt class="py-line"><tt class="py-docstring">    comments, but this can be overridden by passing C{combine=True} in the constructor.\r</tt> </tt>
-<a name="L4608"></a><tt class="py-lineno">4608</tt>  <tt class="py-line"><tt class="py-docstring">    If C{combine} is set to C{True}, the matching tokens are returned as a single token\r</tt> </tt>
-<a name="L4609"></a><tt class="py-lineno">4609</tt>  <tt class="py-line"><tt class="py-docstring">    string, with the delimiters included; otherwise, the matching tokens are returned\r</tt> </tt>
-<a name="L4610"></a><tt class="py-lineno">4610</tt>  <tt class="py-line"><tt class="py-docstring">    as a list of tokens, with the delimiters suppressed.\r</tt> </tt>
-<a name="L4611"></a><tt class="py-lineno">4611</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4612"></a><tt class="py-lineno">4612</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4613"></a><tt class="py-lineno">4613</tt>  <tt class="py-line"><tt class="py-docstring">        delimitedList(Word(alphas)).parseString("aa,bb,cc") # -&gt; ['aa', 'bb', 'cc']\r</tt> </tt>
-<a name="L4614"></a><tt class="py-lineno">4614</tt>  <tt class="py-line"><tt class="py-docstring">        delimitedList(Word(hexnums), delim=':', combine=True).parseString("AA:BB:CC:DD:EE") # -&gt; ['AA:BB:CC:DD:EE']\r</tt> </tt>
-<a name="L4615"></a><tt class="py-lineno">4615</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4616"></a><tt class="py-lineno">4616</tt>  <tt class="py-line">    <tt class="py-name">dlName</tt> <tt class="py-op">=</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">" ["</tt><tt class="py-op">+</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">delim</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">" "</tt><tt class="py-op">+</tt><tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">"]..."</tt> </tt>\r
-<a name="L4617"></a><tt class="py-lineno">4617</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">combine</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4618"></a><tt class="py-lineno">4618</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-700" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-700', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">+</tt> <tt id="link-701" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-701', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">delim</tt> <tt class="py-op">+</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-702" class="py-name" targets="Method pyparsing.ParserElement.setName()=pyparsing.ParserElement-class.html#setName"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-702', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-name">dlName</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4619"></a><tt class="py-lineno">4619</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4620"></a><tt class="py-lineno">4620</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt> <tt class="py-name">expr</tt> <tt class="py-op">+</tt> <tt id="link-703" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-703', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt> <tt id="link-704" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-704', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt> <tt class="py-name">delim</tt> <tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">expr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-705" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-705', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-name">dlName</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4621"></a><tt class="py-lineno">4621</tt>  <tt class="py-line">\r </tt>
-<a name="countedArray"></a><div id="countedArray-def"><a name="L4622"></a><tt class="py-lineno">4622</tt> <a class="py-toggle" href="#" id="countedArray-toggle" onclick="return toggle('countedArray');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#countedArray">countedArray</a><tt class="py-op">(</tt> <tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">intExpr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="countedArray-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="countedArray-expanded"><a name="L4623"></a><tt class="py-lineno">4623</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4624"></a><tt class="py-lineno">4624</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to define a counted list of expressions.\r</tt> </tt>
-<a name="L4625"></a><tt class="py-lineno">4625</tt>  <tt class="py-line"><tt class="py-docstring">    This helper defines a pattern of the form::\r</tt> </tt>
-<a name="L4626"></a><tt class="py-lineno">4626</tt>  <tt class="py-line"><tt class="py-docstring">        integer expr expr expr...\r</tt> </tt>
-<a name="L4627"></a><tt class="py-lineno">4627</tt>  <tt class="py-line"><tt class="py-docstring">    where the leading integer tells how many expr expressions follow.\r</tt> </tt>
-<a name="L4628"></a><tt class="py-lineno">4628</tt>  <tt class="py-line"><tt class="py-docstring">    The matched tokens returns the array of expr tokens as a list - the leading count token is suppressed.\r</tt> </tt>
-<a name="L4629"></a><tt class="py-lineno">4629</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4630"></a><tt class="py-lineno">4630</tt>  <tt class="py-line"><tt class="py-docstring">    If C{intExpr} is specified, it should be a pyparsing expression that produces an integer value.\r</tt> </tt>
-<a name="L4631"></a><tt class="py-lineno">4631</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4632"></a><tt class="py-lineno">4632</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4633"></a><tt class="py-lineno">4633</tt>  <tt class="py-line"><tt class="py-docstring">        countedArray(Word(alphas)).parseString('2 ab cd ef')  # -&gt; ['ab', 'cd']\r</tt> </tt>
-<a name="L4634"></a><tt class="py-lineno">4634</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4635"></a><tt class="py-lineno">4635</tt>  <tt class="py-line"><tt class="py-docstring">        # in this parser, the leading integer value is given in binary,\r</tt> </tt>
-<a name="L4636"></a><tt class="py-lineno">4636</tt>  <tt class="py-line"><tt class="py-docstring">        # '10' indicating that 2 values are in the array\r</tt> </tt>
-<a name="L4637"></a><tt class="py-lineno">4637</tt>  <tt class="py-line"><tt class="py-docstring">        binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2))\r</tt> </tt>
-<a name="L4638"></a><tt class="py-lineno">4638</tt>  <tt class="py-line"><tt class="py-docstring">        countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef')  # -&gt; ['ab', 'cd']\r</tt> </tt>
-<a name="L4639"></a><tt class="py-lineno">4639</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4640"></a><tt class="py-lineno">4640</tt>  <tt class="py-line">    <tt class="py-name">arrayExpr</tt> <tt class="py-op">=</tt> <tt id="link-706" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-706', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4641"></a><tt class="py-lineno">4641</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">countFieldParseAction</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4642"></a><tt class="py-lineno">4642</tt>  <tt class="py-line">        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4643"></a><tt class="py-lineno">4643</tt>  <tt class="py-line">        <tt class="py-name">arrayExpr</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-keyword">and</tt> <tt id="link-707" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-707', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt id="link-708" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-708', 'And', 'link-274');">And</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">expr</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-709" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-709', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt id="link-710" class="py-name" targets="Variable pyparsing.empty=pyparsing-module.html#empty"><a title="pyparsing.empty" class="py-name" href="#" onclick="return doclink('link-710', 'empty', 'link-710');">empty</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4644"></a><tt class="py-lineno">4644</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4645"></a><tt class="py-lineno">4645</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">intExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4646"></a><tt class="py-lineno">4646</tt>  <tt class="py-line">        <tt class="py-name">intExpr</tt> <tt class="py-op">=</tt> <tt id="link-711" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-711', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-712" class="py-name"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-712', 'nums', 'link-22');">nums</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-713" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-713', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4647"></a><tt class="py-lineno">4647</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4648"></a><tt class="py-lineno">4648</tt>  <tt class="py-line">        <tt class="py-name">intExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">intExpr</tt><tt class="py-op">.</tt><tt id="link-714" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-714', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4649"></a><tt class="py-lineno">4649</tt>  <tt class="py-line">    <tt class="py-name">intExpr</tt><tt class="py-op">.</tt><tt id="link-715" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-715', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"arrayLen"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4650"></a><tt class="py-lineno">4650</tt>  <tt class="py-line">    <tt class="py-name">intExpr</tt><tt class="py-op">.</tt><tt id="link-716" class="py-name"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-716', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">countFieldParseAction</tt><tt class="py-op">,</tt> <tt class="py-name">callDuringTry</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4651"></a><tt class="py-lineno">4651</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt> <tt class="py-name">intExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">arrayExpr</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-717" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-717', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'(len) '</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'...'</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4652"></a><tt class="py-lineno">4652</tt>  <tt class="py-line">\r </tt>
-<a name="_flatten"></a><div id="_flatten-def"><a name="L4653"></a><tt class="py-lineno">4653</tt> <a class="py-toggle" href="#" id="_flatten-toggle" onclick="return toggle('_flatten');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_flatten">_flatten</a><tt class="py-op">(</tt><tt class="py-param">L</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_flatten-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_flatten-expanded"><a name="L4654"></a><tt class="py-lineno">4654</tt>  <tt class="py-line">    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4655"></a><tt class="py-lineno">4655</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">L</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4656"></a><tt class="py-lineno">4656</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4657"></a><tt class="py-lineno">4657</tt>  <tt class="py-line">            <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt id="link-718" class="py-name"><a title="pyparsing.ParseResults.extend" class="py-name" href="#" onclick="return doclink('link-718', 'extend', 'link-70');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">_flatten</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4658"></a><tt class="py-lineno">4658</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4659"></a><tt class="py-lineno">4659</tt>  <tt class="py-line">            <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt id="link-719" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-719', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4660"></a><tt class="py-lineno">4660</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L4661"></a><tt class="py-lineno">4661</tt>  <tt class="py-line">\r </tt>
-<a name="matchPreviousLiteral"></a><div id="matchPreviousLiteral-def"><a name="L4662"></a><tt class="py-lineno">4662</tt> <a class="py-toggle" href="#" id="matchPreviousLiteral-toggle" onclick="return toggle('matchPreviousLiteral');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#matchPreviousLiteral">matchPreviousLiteral</a><tt class="py-op">(</tt><tt class="py-param">expr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="matchPreviousLiteral-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="matchPreviousLiteral-expanded"><a name="L4663"></a><tt class="py-lineno">4663</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4664"></a><tt class="py-lineno">4664</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to define an expression that is indirectly defined from\r</tt> </tt>
-<a name="L4665"></a><tt class="py-lineno">4665</tt>  <tt class="py-line"><tt class="py-docstring">    the tokens matched in a previous expression, that is, it looks\r</tt> </tt>
-<a name="L4666"></a><tt class="py-lineno">4666</tt>  <tt class="py-line"><tt class="py-docstring">    for a 'repeat' of a previous expression.  For example::\r</tt> </tt>
-<a name="L4667"></a><tt class="py-lineno">4667</tt>  <tt class="py-line"><tt class="py-docstring">        first = Word(nums)\r</tt> </tt>
-<a name="L4668"></a><tt class="py-lineno">4668</tt>  <tt class="py-line"><tt class="py-docstring">        second = matchPreviousLiteral(first)\r</tt> </tt>
-<a name="L4669"></a><tt class="py-lineno">4669</tt>  <tt class="py-line"><tt class="py-docstring">        matchExpr = first + ":" + second\r</tt> </tt>
-<a name="L4670"></a><tt class="py-lineno">4670</tt>  <tt class="py-line"><tt class="py-docstring">    will match C{"1:1"}, but not C{"1:2"}.  Because this matches a\r</tt> </tt>
-<a name="L4671"></a><tt class="py-lineno">4671</tt>  <tt class="py-line"><tt class="py-docstring">    previous literal, will also match the leading C{"1:1"} in C{"1:10"}.\r</tt> </tt>
-<a name="L4672"></a><tt class="py-lineno">4672</tt>  <tt class="py-line"><tt class="py-docstring">    If this is not desired, use C{matchPreviousExpr}.\r</tt> </tt>
-<a name="L4673"></a><tt class="py-lineno">4673</tt>  <tt class="py-line"><tt class="py-docstring">    Do I{not} use with packrat parsing enabled.\r</tt> </tt>
-<a name="L4674"></a><tt class="py-lineno">4674</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4675"></a><tt class="py-lineno">4675</tt>  <tt class="py-line">    <tt class="py-name">rep</tt> <tt class="py-op">=</tt> <tt id="link-720" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-720', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4676"></a><tt class="py-lineno">4676</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">copyTokenToRepeater</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4677"></a><tt class="py-lineno">4677</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4678"></a><tt class="py-lineno">4678</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4679"></a><tt class="py-lineno">4679</tt>  <tt class="py-line">                <tt class="py-name">rep</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4680"></a><tt class="py-lineno">4680</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4681"></a><tt class="py-lineno">4681</tt>  <tt class="py-line">                <tt class="py-comment"># flatten t tokens</tt>\r </tt>
-<a name="L4682"></a><tt class="py-lineno">4682</tt>  <tt class="py-line">                <tt class="py-name">tflat</tt> <tt class="py-op">=</tt> <tt class="py-name">_flatten</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-721" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-721', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4683"></a><tt class="py-lineno">4683</tt>  <tt class="py-line">                <tt class="py-name">rep</tt> <tt class="py-op">&lt;&lt;</tt> <tt id="link-722" class="py-name"><a title="pyparsing.And" class="py-name" href="#" onclick="return doclink('link-722', 'And', 'link-274');">And</a></tt><tt class="py-op">(</tt><tt id="link-723" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-723', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">tt</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">tt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tflat</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4684"></a><tt class="py-lineno">4684</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4685"></a><tt class="py-lineno">4685</tt>  <tt class="py-line">            <tt class="py-name">rep</tt> <tt class="py-op">&lt;&lt;</tt> <tt id="link-724" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-724', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4686"></a><tt class="py-lineno">4686</tt>  <tt class="py-line">    <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-725" class="py-name"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-725', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">copyTokenToRepeater</tt><tt class="py-op">,</tt> <tt class="py-name">callDuringTry</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4687"></a><tt class="py-lineno">4687</tt>  <tt class="py-line">    <tt class="py-name">rep</tt><tt class="py-op">.</tt><tt id="link-726" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-726', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'(prev) '</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4688"></a><tt class="py-lineno">4688</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">rep</tt> </tt>\r
-</div><a name="L4689"></a><tt class="py-lineno">4689</tt>  <tt class="py-line">\r </tt>
-<a name="matchPreviousExpr"></a><div id="matchPreviousExpr-def"><a name="L4690"></a><tt class="py-lineno">4690</tt> <a class="py-toggle" href="#" id="matchPreviousExpr-toggle" onclick="return toggle('matchPreviousExpr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#matchPreviousExpr">matchPreviousExpr</a><tt class="py-op">(</tt><tt class="py-param">expr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="matchPreviousExpr-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="matchPreviousExpr-expanded"><a name="L4691"></a><tt class="py-lineno">4691</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4692"></a><tt class="py-lineno">4692</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to define an expression that is indirectly defined from\r</tt> </tt>
-<a name="L4693"></a><tt class="py-lineno">4693</tt>  <tt class="py-line"><tt class="py-docstring">    the tokens matched in a previous expression, that is, it looks\r</tt> </tt>
-<a name="L4694"></a><tt class="py-lineno">4694</tt>  <tt class="py-line"><tt class="py-docstring">    for a 'repeat' of a previous expression.  For example::\r</tt> </tt>
-<a name="L4695"></a><tt class="py-lineno">4695</tt>  <tt class="py-line"><tt class="py-docstring">        first = Word(nums)\r</tt> </tt>
-<a name="L4696"></a><tt class="py-lineno">4696</tt>  <tt class="py-line"><tt class="py-docstring">        second = matchPreviousExpr(first)\r</tt> </tt>
-<a name="L4697"></a><tt class="py-lineno">4697</tt>  <tt class="py-line"><tt class="py-docstring">        matchExpr = first + ":" + second\r</tt> </tt>
-<a name="L4698"></a><tt class="py-lineno">4698</tt>  <tt class="py-line"><tt class="py-docstring">    will match C{"1:1"}, but not C{"1:2"}.  Because this matches by\r</tt> </tt>
-<a name="L4699"></a><tt class="py-lineno">4699</tt>  <tt class="py-line"><tt class="py-docstring">    expressions, will I{not} match the leading C{"1:1"} in C{"1:10"};\r</tt> </tt>
-<a name="L4700"></a><tt class="py-lineno">4700</tt>  <tt class="py-line"><tt class="py-docstring">    the expressions are evaluated first, and then compared, so\r</tt> </tt>
-<a name="L4701"></a><tt class="py-lineno">4701</tt>  <tt class="py-line"><tt class="py-docstring">    C{"1"} is compared with C{"10"}.\r</tt> </tt>
-<a name="L4702"></a><tt class="py-lineno">4702</tt>  <tt class="py-line"><tt class="py-docstring">    Do I{not} use with packrat parsing enabled.\r</tt> </tt>
-<a name="L4703"></a><tt class="py-lineno">4703</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4704"></a><tt class="py-lineno">4704</tt>  <tt class="py-line">    <tt class="py-name">rep</tt> <tt class="py-op">=</tt> <tt id="link-727" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-727', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4705"></a><tt class="py-lineno">4705</tt>  <tt class="py-line">    <tt class="py-name">e2</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-728" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-728', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4706"></a><tt class="py-lineno">4706</tt>  <tt class="py-line">    <tt class="py-name">rep</tt> <tt class="py-op">&lt;&lt;=</tt> <tt class="py-name">e2</tt> </tt>\r
-<a name="L4707"></a><tt class="py-lineno">4707</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">copyTokenToRepeater</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4708"></a><tt class="py-lineno">4708</tt>  <tt class="py-line">        <tt class="py-name">matchTokens</tt> <tt class="py-op">=</tt> <tt class="py-name">_flatten</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-729" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-729', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4709"></a><tt class="py-lineno">4709</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">mustMatchTheseTokens</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4710"></a><tt class="py-lineno">4710</tt>  <tt class="py-line">            <tt class="py-name">theseTokens</tt> <tt class="py-op">=</tt> <tt class="py-name">_flatten</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-730" class="py-name"><a title="pyparsing.ParseResults.asList" class="py-name" href="#" onclick="return doclink('link-730', 'asList', 'link-37');">asList</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4711"></a><tt class="py-lineno">4711</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt>  <tt class="py-name">theseTokens</tt> <tt class="py-op">!=</tt> <tt class="py-name">matchTokens</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4712"></a><tt class="py-lineno">4712</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-731" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-731', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4713"></a><tt class="py-lineno">4713</tt>  <tt class="py-line">        <tt class="py-name">rep</tt><tt class="py-op">.</tt><tt id="link-732" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-732', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt> <tt class="py-name">mustMatchTheseTokens</tt><tt class="py-op">,</tt> <tt class="py-name">callDuringTry</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L4714"></a><tt class="py-lineno">4714</tt>  <tt class="py-line">    <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-733" class="py-name"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-733', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">copyTokenToRepeater</tt><tt class="py-op">,</tt> <tt class="py-name">callDuringTry</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4715"></a><tt class="py-lineno">4715</tt>  <tt class="py-line">    <tt class="py-name">rep</tt><tt class="py-op">.</tt><tt id="link-734" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-734', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'(prev) '</tt> <tt class="py-op">+</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4716"></a><tt class="py-lineno">4716</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">rep</tt> </tt>\r
-</div><a name="L4717"></a><tt class="py-lineno">4717</tt>  <tt class="py-line">\r </tt>
-<a name="_escapeRegexRangeChars"></a><div id="_escapeRegexRangeChars-def"><a name="L4718"></a><tt class="py-lineno">4718</tt> <a class="py-toggle" href="#" id="_escapeRegexRangeChars-toggle" onclick="return toggle('_escapeRegexRangeChars');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_escapeRegexRangeChars">_escapeRegexRangeChars</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_escapeRegexRangeChars-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_escapeRegexRangeChars-expanded"><a name="L4719"></a><tt class="py-lineno">4719</tt>  <tt class="py-line">    <tt class="py-comment">#~  escape these chars: ^-]</tt>\r </tt>
-<a name="L4720"></a><tt class="py-lineno">4720</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-string">r"\^-]"</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4721"></a><tt class="py-lineno">4721</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt id="link-735" class="py-name"><a title="pyparsing._bslash" class="py-name" href="#" onclick="return doclink('link-735', '_bslash', 'link-28');">_bslash</a></tt><tt class="py-op">+</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4722"></a><tt class="py-lineno">4722</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4723"></a><tt class="py-lineno">4723</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"\t"</tt><tt class="py-op">,</tt><tt class="py-string">r"\t"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4724"></a><tt class="py-lineno">4724</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4725"></a><tt class="py-lineno">4725</tt>  <tt class="py-line">\r </tt>
-<a name="oneOf"></a><div id="oneOf-def"><a name="L4726"></a><tt class="py-lineno">4726</tt> <a class="py-toggle" href="#" id="oneOf-toggle" onclick="return toggle('oneOf');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#oneOf">oneOf</a><tt class="py-op">(</tt> <tt class="py-param">strs</tt><tt class="py-op">,</tt> <tt class="py-param">caseless</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">useRegex</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="oneOf-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="oneOf-expanded"><a name="L4727"></a><tt class="py-lineno">4727</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4728"></a><tt class="py-lineno">4728</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to quickly define a set of alternative Literals, and makes sure to do\r</tt> </tt>
-<a name="L4729"></a><tt class="py-lineno">4729</tt>  <tt class="py-line"><tt class="py-docstring">    longest-first testing when there is a conflict, regardless of the input order,\r</tt> </tt>
-<a name="L4730"></a><tt class="py-lineno">4730</tt>  <tt class="py-line"><tt class="py-docstring">    but returns a C{L{MatchFirst}} for best performance.\r</tt> </tt>
-<a name="L4731"></a><tt class="py-lineno">4731</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4732"></a><tt class="py-lineno">4732</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L4733"></a><tt class="py-lineno">4733</tt>  <tt class="py-line"><tt class="py-docstring">     - strs - a string of space-delimited literals, or a collection of string literals\r</tt> </tt>
-<a name="L4734"></a><tt class="py-lineno">4734</tt>  <tt class="py-line"><tt class="py-docstring">     - caseless - (default=C{False}) - treat all literals as caseless\r</tt> </tt>
-<a name="L4735"></a><tt class="py-lineno">4735</tt>  <tt class="py-line"><tt class="py-docstring">     - useRegex - (default=C{True}) - as an optimization, will generate a Regex\r</tt> </tt>
-<a name="L4736"></a><tt class="py-lineno">4736</tt>  <tt class="py-line"><tt class="py-docstring">          object; otherwise, will generate a C{MatchFirst} object (if C{caseless=True}, or\r</tt> </tt>
-<a name="L4737"></a><tt class="py-lineno">4737</tt>  <tt class="py-line"><tt class="py-docstring">          if creating a C{Regex} raises an exception)\r</tt> </tt>
-<a name="L4738"></a><tt class="py-lineno">4738</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4739"></a><tt class="py-lineno">4739</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4740"></a><tt class="py-lineno">4740</tt>  <tt class="py-line"><tt class="py-docstring">        comp_oper = oneOf("&lt; = &gt; &lt;= &gt;= !=")\r</tt> </tt>
-<a name="L4741"></a><tt class="py-lineno">4741</tt>  <tt class="py-line"><tt class="py-docstring">        var = Word(alphas)\r</tt> </tt>
-<a name="L4742"></a><tt class="py-lineno">4742</tt>  <tt class="py-line"><tt class="py-docstring">        number = Word(nums)\r</tt> </tt>
-<a name="L4743"></a><tt class="py-lineno">4743</tt>  <tt class="py-line"><tt class="py-docstring">        term = var | number\r</tt> </tt>
-<a name="L4744"></a><tt class="py-lineno">4744</tt>  <tt class="py-line"><tt class="py-docstring">        comparison_expr = term + comp_oper + term\r</tt> </tt>
-<a name="L4745"></a><tt class="py-lineno">4745</tt>  <tt class="py-line"><tt class="py-docstring">        print(comparison_expr.searchString("B = 12  AA=23 B&lt;=AA AA&gt;12"))\r</tt> </tt>
-<a name="L4746"></a><tt class="py-lineno">4746</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4747"></a><tt class="py-lineno">4747</tt>  <tt class="py-line"><tt class="py-docstring">        [['B', '=', '12'], ['AA', '=', '23'], ['B', '&lt;=', 'AA'], ['AA', '&gt;', '12']]\r</tt> </tt>
-<a name="L4748"></a><tt class="py-lineno">4748</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4749"></a><tt class="py-lineno">4749</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">caseless</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4750"></a><tt class="py-lineno">4750</tt>  <tt class="py-line">        <tt class="py-name">isequal</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4751"></a><tt class="py-lineno">4751</tt>  <tt class="py-line">        <tt class="py-name">masks</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4752"></a><tt class="py-lineno">4752</tt>  <tt class="py-line">        <tt class="py-name">parseElementClass</tt> <tt class="py-op">=</tt> <tt id="link-736" class="py-name"><a title="pyparsing.CaselessLiteral" class="py-name" href="#" onclick="return doclink('link-736', 'CaselessLiteral', 'link-379');">CaselessLiteral</a></tt> </tt>\r
-<a name="L4753"></a><tt class="py-lineno">4753</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4754"></a><tt class="py-lineno">4754</tt>  <tt class="py-line">        <tt class="py-name">isequal</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> <tt class="py-name">a</tt> <tt class="py-op">==</tt> <tt class="py-name">b</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4755"></a><tt class="py-lineno">4755</tt>  <tt class="py-line">        <tt class="py-name">masks</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">:</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L4756"></a><tt class="py-lineno">4756</tt>  <tt class="py-line">        <tt class="py-name">parseElementClass</tt> <tt class="py-op">=</tt> <tt id="link-737" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-737', 'Literal', 'link-326');">Literal</a></tt> </tt>\r
-<a name="L4757"></a><tt class="py-lineno">4757</tt>  <tt class="py-line">\r </tt>
-<a name="L4758"></a><tt class="py-lineno">4758</tt>  <tt class="py-line">    <tt class="py-name">symbols</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4759"></a><tt class="py-lineno">4759</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">strs</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4760"></a><tt class="py-lineno">4760</tt>  <tt class="py-line">        <tt class="py-name">symbols</tt> <tt class="py-op">=</tt> <tt class="py-name">strs</tt><tt class="py-op">.</tt><tt id="link-738" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-738', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4761"></a><tt class="py-lineno">4761</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">strs</tt><tt class="py-op">,</tt> <tt class="py-name">Iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4762"></a><tt class="py-lineno">4762</tt>  <tt class="py-line">        <tt class="py-name">symbols</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">strs</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4763"></a><tt class="py-lineno">4763</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4764"></a><tt class="py-lineno">4764</tt>  <tt class="py-line">        <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid argument to oneOf, expected string or iterable"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L4765"></a><tt class="py-lineno">4765</tt>  <tt class="py-line">                <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4766"></a><tt class="py-lineno">4766</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">symbols</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4767"></a><tt class="py-lineno">4767</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-739" class="py-name"><a title="pyparsing.NoMatch" class="py-name" href="#" onclick="return doclink('link-739', 'NoMatch', 'link-347');">NoMatch</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4768"></a><tt class="py-lineno">4768</tt>  <tt class="py-line">\r </tt>
-<a name="L4769"></a><tt class="py-lineno">4769</tt>  <tt class="py-line">    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>\r
-<a name="L4770"></a><tt class="py-lineno">4770</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4771"></a><tt class="py-lineno">4771</tt>  <tt class="py-line">        <tt class="py-name">cur</tt> <tt class="py-op">=</tt> <tt class="py-name">symbols</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4772"></a><tt class="py-lineno">4772</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">j</tt><tt class="py-op">,</tt><tt class="py-name">other</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4773"></a><tt class="py-lineno">4773</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-name">isequal</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">cur</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4774"></a><tt class="py-lineno">4774</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">symbols</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-name">j</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4775"></a><tt class="py-lineno">4775</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>\r
-<a name="L4776"></a><tt class="py-lineno">4776</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt> <tt class="py-name">masks</tt><tt class="py-op">(</tt><tt class="py-name">cur</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4777"></a><tt class="py-lineno">4777</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">symbols</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-name">j</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4778"></a><tt class="py-lineno">4778</tt>  <tt class="py-line">                <tt class="py-name">symbols</tt><tt class="py-op">.</tt><tt id="link-740" class="py-name"><a title="pyparsing.ParseResults.insert" class="py-name" href="#" onclick="return doclink('link-740', 'insert', 'link-66');">insert</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4779"></a><tt class="py-lineno">4779</tt>  <tt class="py-line">                <tt class="py-name">cur</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt> </tt>\r
-<a name="L4780"></a><tt class="py-lineno">4780</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>\r
-<a name="L4781"></a><tt class="py-lineno">4781</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4782"></a><tt class="py-lineno">4782</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>\r
-<a name="L4783"></a><tt class="py-lineno">4783</tt>  <tt class="py-line">\r </tt>
-<a name="L4784"></a><tt class="py-lineno">4784</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">caseless</tt> <tt class="py-keyword">and</tt> <tt class="py-name">useRegex</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4785"></a><tt class="py-lineno">4785</tt>  <tt class="py-line">        <tt class="py-comment">#~ print (strs,"-&gt;", "|".join( [ _escapeRegexChars(sym) for sym in symbols] ))</tt>\r </tt>
-<a name="L4786"></a><tt class="py-lineno">4786</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4787"></a><tt class="py-lineno">4787</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4788"></a><tt class="py-lineno">4788</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-741" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-741', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt> <tt class="py-string">"[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_escapeRegexRangeChars</tt><tt class="py-op">(</tt><tt class="py-name">sym</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">sym</tt> <tt class="py-keyword">in</tt> <tt class="py-name">symbols</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-742" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-742', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">' | '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4789"></a><tt class="py-lineno">4789</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4790"></a><tt class="py-lineno">4790</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-743" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-743', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt> <tt class="py-string">"|"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">sym</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">sym</tt> <tt class="py-keyword">in</tt> <tt class="py-name">symbols</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-744" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-744', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">' | '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4791"></a><tt class="py-lineno">4791</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4792"></a><tt class="py-lineno">4792</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Exception creating Regex for oneOf, building MatchFirst"</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L4793"></a><tt class="py-lineno">4793</tt>  <tt class="py-line">                    <tt class="py-name">SyntaxWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4794"></a><tt class="py-lineno">4794</tt>  <tt class="py-line">\r </tt>
-<a name="L4795"></a><tt class="py-lineno">4795</tt>  <tt class="py-line">\r </tt>
-<a name="L4796"></a><tt class="py-lineno">4796</tt>  <tt class="py-line">    <tt class="py-comment"># last resort, just use MatchFirst</tt>\r </tt>
-<a name="L4797"></a><tt class="py-lineno">4797</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-745" class="py-name"><a title="pyparsing.MatchFirst" class="py-name" href="#" onclick="return doclink('link-745', 'MatchFirst', 'link-292');">MatchFirst</a></tt><tt class="py-op">(</tt><tt class="py-name">parseElementClass</tt><tt class="py-op">(</tt><tt class="py-name">sym</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">sym</tt> <tt class="py-keyword">in</tt> <tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-746" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-746', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">' | '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">symbols</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4798"></a><tt class="py-lineno">4798</tt>  <tt class="py-line">\r </tt>
-<a name="dictOf"></a><div id="dictOf-def"><a name="L4799"></a><tt class="py-lineno">4799</tt> <a class="py-toggle" href="#" id="dictOf-toggle" onclick="return toggle('dictOf');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#dictOf">dictOf</a><tt class="py-op">(</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="dictOf-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="dictOf-expanded"><a name="L4800"></a><tt class="py-lineno">4800</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4801"></a><tt class="py-lineno">4801</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to easily and clearly define a dictionary by specifying the respective patterns\r</tt> </tt>
-<a name="L4802"></a><tt class="py-lineno">4802</tt>  <tt class="py-line"><tt class="py-docstring">    for the key and value.  Takes care of defining the C{L{Dict}}, C{L{ZeroOrMore}}, and C{L{Group}} tokens\r</tt> </tt>
-<a name="L4803"></a><tt class="py-lineno">4803</tt>  <tt class="py-line"><tt class="py-docstring">    in the proper order.  The key pattern can include delimiting markers or punctuation,\r</tt> </tt>
-<a name="L4804"></a><tt class="py-lineno">4804</tt>  <tt class="py-line"><tt class="py-docstring">    as long as they are suppressed, thereby leaving the significant key text.  The value\r</tt> </tt>
-<a name="L4805"></a><tt class="py-lineno">4805</tt>  <tt class="py-line"><tt class="py-docstring">    pattern can include named results, so that the C{Dict} results can include named token\r</tt> </tt>
-<a name="L4806"></a><tt class="py-lineno">4806</tt>  <tt class="py-line"><tt class="py-docstring">    fields.\r</tt> </tt>
-<a name="L4807"></a><tt class="py-lineno">4807</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4808"></a><tt class="py-lineno">4808</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4809"></a><tt class="py-lineno">4809</tt>  <tt class="py-line"><tt class="py-docstring">        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"\r</tt> </tt>
-<a name="L4810"></a><tt class="py-lineno">4810</tt>  <tt class="py-line"><tt class="py-docstring">        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r</tt> </tt>
-<a name="L4811"></a><tt class="py-lineno">4811</tt>  <tt class="py-line"><tt class="py-docstring">        print(OneOrMore(attr_expr).parseString(text).dump())\r</tt> </tt>
-<a name="L4812"></a><tt class="py-lineno">4812</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4813"></a><tt class="py-lineno">4813</tt>  <tt class="py-line"><tt class="py-docstring">        attr_label = label\r</tt> </tt>
-<a name="L4814"></a><tt class="py-lineno">4814</tt>  <tt class="py-line"><tt class="py-docstring">        attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)\r</tt> </tt>
-<a name="L4815"></a><tt class="py-lineno">4815</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4816"></a><tt class="py-lineno">4816</tt>  <tt class="py-line"><tt class="py-docstring">        # similar to Dict, but simpler call format\r</tt> </tt>
-<a name="L4817"></a><tt class="py-lineno">4817</tt>  <tt class="py-line"><tt class="py-docstring">        result = dictOf(attr_label, attr_value).parseString(text)\r</tt> </tt>
-<a name="L4818"></a><tt class="py-lineno">4818</tt>  <tt class="py-line"><tt class="py-docstring">        print(result.dump())\r</tt> </tt>
-<a name="L4819"></a><tt class="py-lineno">4819</tt>  <tt class="py-line"><tt class="py-docstring">        print(result['shape'])\r</tt> </tt>
-<a name="L4820"></a><tt class="py-lineno">4820</tt>  <tt class="py-line"><tt class="py-docstring">        print(result.shape)  # object attribute access works too\r</tt> </tt>
-<a name="L4821"></a><tt class="py-lineno">4821</tt>  <tt class="py-line"><tt class="py-docstring">        print(result.asDict())\r</tt> </tt>
-<a name="L4822"></a><tt class="py-lineno">4822</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4823"></a><tt class="py-lineno">4823</tt>  <tt class="py-line"><tt class="py-docstring">        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]\r</tt> </tt>
-<a name="L4824"></a><tt class="py-lineno">4824</tt>  <tt class="py-line"><tt class="py-docstring">        - color: light blue\r</tt> </tt>
-<a name="L4825"></a><tt class="py-lineno">4825</tt>  <tt class="py-line"><tt class="py-docstring">        - posn: upper left\r</tt> </tt>
-<a name="L4826"></a><tt class="py-lineno">4826</tt>  <tt class="py-line"><tt class="py-docstring">        - shape: SQUARE\r</tt> </tt>
-<a name="L4827"></a><tt class="py-lineno">4827</tt>  <tt class="py-line"><tt class="py-docstring">        - texture: burlap\r</tt> </tt>
-<a name="L4828"></a><tt class="py-lineno">4828</tt>  <tt class="py-line"><tt class="py-docstring">        SQUARE\r</tt> </tt>
-<a name="L4829"></a><tt class="py-lineno">4829</tt>  <tt class="py-line"><tt class="py-docstring">        SQUARE\r</tt> </tt>
-<a name="L4830"></a><tt class="py-lineno">4830</tt>  <tt class="py-line"><tt class="py-docstring">        {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'}\r</tt> </tt>
-<a name="L4831"></a><tt class="py-lineno">4831</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4832"></a><tt class="py-lineno">4832</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-747" class="py-name"><a title="pyparsing.Dict" class="py-name" href="#" onclick="return doclink('link-747', 'Dict', 'link-692');">Dict</a></tt><tt class="py-op">(</tt> <tt id="link-748" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-748', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt> <tt id="link-749" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-749', 'Group', 'link-690');">Group</a></tt> <tt class="py-op">(</tt> <tt class="py-name">key</tt> <tt class="py-op">+</tt> <tt class="py-name">value</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L4833"></a><tt class="py-lineno">4833</tt>  <tt class="py-line">\r </tt>
-<a name="originalTextFor"></a><div id="originalTextFor-def"><a name="L4834"></a><tt class="py-lineno">4834</tt> <a class="py-toggle" href="#" id="originalTextFor-toggle" onclick="return toggle('originalTextFor');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#originalTextFor">originalTextFor</a><tt class="py-op">(</tt><tt class="py-param">expr</tt><tt class="py-op">,</tt> <tt class="py-param">asString</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="originalTextFor-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="originalTextFor-expanded"><a name="L4835"></a><tt class="py-lineno">4835</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4836"></a><tt class="py-lineno">4836</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to return the original, untokenized text for a given expression.  Useful to\r</tt> </tt>
-<a name="L4837"></a><tt class="py-lineno">4837</tt>  <tt class="py-line"><tt class="py-docstring">    restore the parsed fields of an HTML start tag into the raw tag text itself, or to\r</tt> </tt>
-<a name="L4838"></a><tt class="py-lineno">4838</tt>  <tt class="py-line"><tt class="py-docstring">    revert separate tokens with intervening whitespace back to the original matching\r</tt> </tt>
-<a name="L4839"></a><tt class="py-lineno">4839</tt>  <tt class="py-line"><tt class="py-docstring">    input text. By default, returns astring containing the original parsed text.\r</tt> </tt>
-<a name="L4840"></a><tt class="py-lineno">4840</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4841"></a><tt class="py-lineno">4841</tt>  <tt class="py-line"><tt class="py-docstring">    If the optional C{asString} argument is passed as C{False}, then the return value is a\r</tt> </tt>
-<a name="L4842"></a><tt class="py-lineno">4842</tt>  <tt class="py-line"><tt class="py-docstring">    C{L{ParseResults}} containing any results names that were originally matched, and a\r</tt> </tt>
-<a name="L4843"></a><tt class="py-lineno">4843</tt>  <tt class="py-line"><tt class="py-docstring">    single token containing the original matched text from the input string.  So if\r</tt> </tt>
-<a name="L4844"></a><tt class="py-lineno">4844</tt>  <tt class="py-line"><tt class="py-docstring">    the expression passed to C{L{originalTextFor}} contains expressions with defined\r</tt> </tt>
-<a name="L4845"></a><tt class="py-lineno">4845</tt>  <tt class="py-line"><tt class="py-docstring">    results names, you must set C{asString} to C{False} if you want to preserve those\r</tt> </tt>
-<a name="L4846"></a><tt class="py-lineno">4846</tt>  <tt class="py-line"><tt class="py-docstring">    results name values.\r</tt> </tt>
-<a name="L4847"></a><tt class="py-lineno">4847</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4848"></a><tt class="py-lineno">4848</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4849"></a><tt class="py-lineno">4849</tt>  <tt class="py-line"><tt class="py-docstring">        src = "this is test &lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt; normal text "\r</tt> </tt>
-<a name="L4850"></a><tt class="py-lineno">4850</tt>  <tt class="py-line"><tt class="py-docstring">        for tag in ("b","i"):\r</tt> </tt>
-<a name="L4851"></a><tt class="py-lineno">4851</tt>  <tt class="py-line"><tt class="py-docstring">            opener,closer = makeHTMLTags(tag)\r</tt> </tt>
-<a name="L4852"></a><tt class="py-lineno">4852</tt>  <tt class="py-line"><tt class="py-docstring">            patt = originalTextFor(opener + SkipTo(closer) + closer)\r</tt> </tt>
-<a name="L4853"></a><tt class="py-lineno">4853</tt>  <tt class="py-line"><tt class="py-docstring">            print(patt.searchString(src)[0])\r</tt> </tt>
-<a name="L4854"></a><tt class="py-lineno">4854</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4855"></a><tt class="py-lineno">4855</tt>  <tt class="py-line"><tt class="py-docstring">        ['&lt;b&gt; bold &lt;i&gt;text&lt;/i&gt; &lt;/b&gt;']\r</tt> </tt>
-<a name="L4856"></a><tt class="py-lineno">4856</tt>  <tt class="py-line"><tt class="py-docstring">        ['&lt;i&gt;text&lt;/i&gt;']\r</tt> </tt>
-<a name="L4857"></a><tt class="py-lineno">4857</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4858"></a><tt class="py-lineno">4858</tt>  <tt class="py-line">    <tt class="py-name">locMarker</tt> <tt class="py-op">=</tt> <tt id="link-750" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-750', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-751" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-751', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">loc</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4859"></a><tt class="py-lineno">4859</tt>  <tt class="py-line">    <tt class="py-name">endlocMarker</tt> <tt class="py-op">=</tt> <tt class="py-name">locMarker</tt><tt class="py-op">.</tt><tt id="link-752" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-752', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4860"></a><tt class="py-lineno">4860</tt>  <tt class="py-line">    <tt class="py-name">endlocMarker</tt><tt class="py-op">.</tt><tt class="py-name">callPreparse</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>\r
-<a name="L4861"></a><tt class="py-lineno">4861</tt>  <tt class="py-line">    <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">locMarker</tt><tt class="py-op">(</tt><tt class="py-string">"_original_start"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">expr</tt> <tt class="py-op">+</tt> <tt class="py-name">endlocMarker</tt><tt class="py-op">(</tt><tt class="py-string">"_original_end"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4862"></a><tt class="py-lineno">4862</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">asString</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4863"></a><tt class="py-lineno">4863</tt>  <tt class="py-line">        <tt class="py-name">extractText</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">_original_start</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">_original_end</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L4864"></a><tt class="py-lineno">4864</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4865"></a><tt class="py-lineno">4865</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">extractText</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4866"></a><tt class="py-lineno">4866</tt>  <tt class="py-line">            <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-753" class="py-name"><a title="pyparsing.ParseResults.pop" class="py-name" href="#" onclick="return doclink('link-753', 'pop', 'link-188');">pop</a></tt><tt class="py-op">(</tt><tt class="py-string">'_original_start'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-754" class="py-name"><a title="pyparsing.ParseResults.pop" class="py-name" href="#" onclick="return doclink('link-754', 'pop', 'link-188');">pop</a></tt><tt class="py-op">(</tt><tt class="py-string">'_original_end'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4867"></a><tt class="py-lineno">4867</tt>  <tt class="py-line">    <tt class="py-name">matchExpr</tt><tt class="py-op">.</tt><tt id="link-755" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-755', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">extractText</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4868"></a><tt class="py-lineno">4868</tt>  <tt class="py-line">    <tt class="py-name">matchExpr</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt> <tt class="py-op">=</tt> <tt class="py-name">expr</tt><tt class="py-op">.</tt><tt class="py-name">ignoreExprs</tt> </tt>\r
-<a name="L4869"></a><tt class="py-lineno">4869</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">matchExpr</tt> </tt>\r
-</div><a name="L4870"></a><tt class="py-lineno">4870</tt>  <tt class="py-line">\r </tt>
-<a name="ungroup"></a><div id="ungroup-def"><a name="L4871"></a><tt class="py-lineno">4871</tt> <a class="py-toggle" href="#" id="ungroup-toggle" onclick="return toggle('ungroup');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#ungroup">ungroup</a><tt class="py-op">(</tt><tt class="py-param">expr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="ungroup-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ungroup-expanded"><a name="L4872"></a><tt class="py-lineno">4872</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4873"></a><tt class="py-lineno">4873</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to undo pyparsing's default grouping of And expressions, even\r</tt> </tt>
-<a name="L4874"></a><tt class="py-lineno">4874</tt>  <tt class="py-line"><tt class="py-docstring">    if all but one are non-empty.\r</tt> </tt>
-<a name="L4875"></a><tt class="py-lineno">4875</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4876"></a><tt class="py-lineno">4876</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-756" class="py-name"><a title="pyparsing.TokenConverter" class="py-name" href="#" onclick="return doclink('link-756', 'TokenConverter', 'link-678');">TokenConverter</a></tt><tt class="py-op">(</tt><tt class="py-name">expr</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-757" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-757', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4877"></a><tt class="py-lineno">4877</tt>  <tt class="py-line">\r </tt>
-<a name="locatedExpr"></a><div id="locatedExpr-def"><a name="L4878"></a><tt class="py-lineno">4878</tt> <a class="py-toggle" href="#" id="locatedExpr-toggle" onclick="return toggle('locatedExpr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#locatedExpr">locatedExpr</a><tt class="py-op">(</tt><tt class="py-param">expr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="locatedExpr-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="locatedExpr-expanded"><a name="L4879"></a><tt class="py-lineno">4879</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4880"></a><tt class="py-lineno">4880</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to decorate a returned token with its starting and ending locations in the input string.\r</tt> </tt>
-<a name="L4881"></a><tt class="py-lineno">4881</tt>  <tt class="py-line"><tt class="py-docstring">    This helper adds the following results names:\r</tt> </tt>
-<a name="L4882"></a><tt class="py-lineno">4882</tt>  <tt class="py-line"><tt class="py-docstring">     - locn_start = location where matched expression begins\r</tt> </tt>
-<a name="L4883"></a><tt class="py-lineno">4883</tt>  <tt class="py-line"><tt class="py-docstring">     - locn_end = location where matched expression ends\r</tt> </tt>
-<a name="L4884"></a><tt class="py-lineno">4884</tt>  <tt class="py-line"><tt class="py-docstring">     - value = the actual parsed results\r</tt> </tt>
-<a name="L4885"></a><tt class="py-lineno">4885</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4886"></a><tt class="py-lineno">4886</tt>  <tt class="py-line"><tt class="py-docstring">    Be careful if the input text contains C{&lt;TAB&gt;} characters, you may want to call\r</tt> </tt>
-<a name="L4887"></a><tt class="py-lineno">4887</tt>  <tt class="py-line"><tt class="py-docstring">    C{L{ParserElement.parseWithTabs}}\r</tt> </tt>
-<a name="L4888"></a><tt class="py-lineno">4888</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4889"></a><tt class="py-lineno">4889</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4890"></a><tt class="py-lineno">4890</tt>  <tt class="py-line"><tt class="py-docstring">        wd = Word(alphas)\r</tt> </tt>
-<a name="L4891"></a><tt class="py-lineno">4891</tt>  <tt class="py-line"><tt class="py-docstring">        for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"):\r</tt> </tt>
-<a name="L4892"></a><tt class="py-lineno">4892</tt>  <tt class="py-line"><tt class="py-docstring">            print(match)\r</tt> </tt>
-<a name="L4893"></a><tt class="py-lineno">4893</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L4894"></a><tt class="py-lineno">4894</tt>  <tt class="py-line"><tt class="py-docstring">        [[0, 'ljsdf', 5]]\r</tt> </tt>
-<a name="L4895"></a><tt class="py-lineno">4895</tt>  <tt class="py-line"><tt class="py-docstring">        [[8, 'lksdjjf', 15]]\r</tt> </tt>
-<a name="L4896"></a><tt class="py-lineno">4896</tt>  <tt class="py-line"><tt class="py-docstring">        [[18, 'lkkjj', 23]]\r</tt> </tt>
-<a name="L4897"></a><tt class="py-lineno">4897</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4898"></a><tt class="py-lineno">4898</tt>  <tt class="py-line">    <tt class="py-name">locator</tt> <tt class="py-op">=</tt> <tt id="link-758" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-758', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-759" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-759', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">l</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4899"></a><tt class="py-lineno">4899</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-760" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-760', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt class="py-name">locator</tt><tt class="py-op">(</tt><tt class="py-string">"locn_start"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">expr</tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">locator</tt><tt class="py-op">.</tt><tt id="link-761" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-761', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-762" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-762', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-string">"locn_end"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4900"></a><tt class="py-lineno">4900</tt>  <tt class="py-line">\r </tt>
-<a name="L4901"></a><tt class="py-lineno">4901</tt>  <tt class="py-line">\r </tt>
-<a name="L4902"></a><tt class="py-lineno">4902</tt>  <tt class="py-line"><tt class="py-comment"># convenience constants for positional expressions</tt>\r </tt>
-<a name="L4903"></a><tt class="py-lineno">4903</tt>  <tt class="py-line"><tt id="link-763" class="py-name"><a title="pyparsing.empty" class="py-name" href="#" onclick="return doclink('link-763', 'empty', 'link-710');">empty</a></tt>       <tt class="py-op">=</tt> <tt id="link-764" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-764', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-765" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-765', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"empty"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4904"></a><tt class="py-lineno">4904</tt>  <tt class="py-line"><tt id="link-766" class="py-name" targets="Variable pyparsing.lineStart=pyparsing-module.html#lineStart"><a title="pyparsing.lineStart" class="py-name" href="#" onclick="return doclink('link-766', 'lineStart', 'link-766');">lineStart</a></tt>   <tt class="py-op">=</tt> <tt id="link-767" class="py-name"><a title="pyparsing.LineStart" class="py-name" href="#" onclick="return doclink('link-767', 'LineStart', 'link-481');">LineStart</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-768" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-768', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"lineStart"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4905"></a><tt class="py-lineno">4905</tt>  <tt class="py-line"><tt id="link-769" class="py-name" targets="Variable pyparsing.lineEnd=pyparsing-module.html#lineEnd"><a title="pyparsing.lineEnd" class="py-name" href="#" onclick="return doclink('link-769', 'lineEnd', 'link-769');">lineEnd</a></tt>     <tt class="py-op">=</tt> <tt id="link-770" class="py-name"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-770', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-771" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-771', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"lineEnd"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4906"></a><tt class="py-lineno">4906</tt>  <tt class="py-line"><tt id="link-772" class="py-name" targets="Variable pyparsing.stringStart=pyparsing-module.html#stringStart"><a title="pyparsing.stringStart" class="py-name" href="#" onclick="return doclink('link-772', 'stringStart', 'link-772');">stringStart</a></tt> <tt class="py-op">=</tt> <tt id="link-773" class="py-name"><a title="pyparsing.StringStart" class="py-name" href="#" onclick="return doclink('link-773', 'StringStart', 'link-492');">StringStart</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-774" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-774', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"stringStart"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4907"></a><tt class="py-lineno">4907</tt>  <tt class="py-line"><tt id="link-775" class="py-name" targets="Variable pyparsing.stringEnd=pyparsing-module.html#stringEnd"><a title="pyparsing.stringEnd" class="py-name" href="#" onclick="return doclink('link-775', 'stringEnd', 'link-775');">stringEnd</a></tt>   <tt class="py-op">=</tt> <tt id="link-776" class="py-name"><a title="pyparsing.StringEnd" class="py-name" href="#" onclick="return doclink('link-776', 'StringEnd', 'link-238');">StringEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-777" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-777', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"stringEnd"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4908"></a><tt class="py-lineno">4908</tt>  <tt class="py-line">\r </tt>
-<a name="L4909"></a><tt class="py-lineno">4909</tt>  <tt class="py-line"><tt id="link-778" class="py-name" targets="Variable pyparsing._escapedPunc=pyparsing-module.html#_escapedPunc"><a title="pyparsing._escapedPunc" class="py-name" href="#" onclick="return doclink('link-778', '_escapedPunc', 'link-778');">_escapedPunc</a></tt> <tt class="py-op">=</tt> <tt id="link-779" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-779', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt> <tt id="link-780" class="py-name"><a title="pyparsing._bslash" class="py-name" href="#" onclick="return doclink('link-780', '_bslash', 'link-28');">_bslash</a></tt><tt class="py-op">,</tt> <tt class="py-string">r"\[]-*.$+^?()~ "</tt><tt class="py-op">,</tt> <tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">2</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-781" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-781', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4910"></a><tt class="py-lineno">4910</tt>  <tt class="py-line"><tt id="link-782" class="py-name" targets="Variable pyparsing._escapedHexChar=pyparsing-module.html#_escapedHexChar"><a title="pyparsing._escapedHexChar" class="py-name" href="#" onclick="return doclink('link-782', '_escapedHexChar', 'link-782');">_escapedHexChar</a></tt> <tt class="py-op">=</tt> <tt id="link-783" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-783', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"\\0?[xX][0-9a-fA-F]+"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-784" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-784', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-string">r'\0x'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4911"></a><tt class="py-lineno">4911</tt>  <tt class="py-line"><tt id="link-785" class="py-name" targets="Variable pyparsing._escapedOctChar=pyparsing-module.html#_escapedOctChar"><a title="pyparsing._escapedOctChar" class="py-name" href="#" onclick="return doclink('link-785', '_escapedOctChar', 'link-785');">_escapedOctChar</a></tt> <tt class="py-op">=</tt> <tt id="link-786" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-786', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"\\0[0-7]+"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-787" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-787', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4912"></a><tt class="py-lineno">4912</tt>  <tt class="py-line"><tt id="link-788" class="py-name" targets="Variable pyparsing._singleChar=pyparsing-module.html#_singleChar"><a title="pyparsing._singleChar" class="py-name" href="#" onclick="return doclink('link-788', '_singleChar', 'link-788');">_singleChar</a></tt> <tt class="py-op">=</tt> <tt id="link-789" class="py-name"><a title="pyparsing._escapedPunc" class="py-name" href="#" onclick="return doclink('link-789', '_escapedPunc', 'link-778');">_escapedPunc</a></tt> <tt class="py-op">|</tt> <tt id="link-790" class="py-name"><a title="pyparsing._escapedHexChar" class="py-name" href="#" onclick="return doclink('link-790', '_escapedHexChar', 'link-782');">_escapedHexChar</a></tt> <tt class="py-op">|</tt> <tt id="link-791" class="py-name"><a title="pyparsing._escapedOctChar" class="py-name" href="#" onclick="return doclink('link-791', '_escapedOctChar', 'link-785');">_escapedOctChar</a></tt> <tt class="py-op">|</tt> <tt id="link-792" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-792', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">(</tt><tt class="py-string">r'\]'</tt><tt class="py-op">,</tt> <tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4913"></a><tt class="py-lineno">4913</tt>  <tt class="py-line"><tt id="link-793" class="py-name" targets="Variable pyparsing._charRange=pyparsing-module.html#_charRange"><a title="pyparsing._charRange" class="py-name" href="#" onclick="return doclink('link-793', '_charRange', 'link-793');">_charRange</a></tt> <tt class="py-op">=</tt> <tt id="link-794" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-794', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt id="link-795" class="py-name"><a title="pyparsing._singleChar" class="py-name" href="#" onclick="return doclink('link-795', '_singleChar', 'link-788');">_singleChar</a></tt> <tt class="py-op">+</tt> <tt id="link-796" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-796', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"-"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-797" class="py-name"><a title="pyparsing._singleChar" class="py-name" href="#" onclick="return doclink('link-797', '_singleChar', 'link-788');">_singleChar</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4914"></a><tt class="py-lineno">4914</tt>  <tt class="py-line"><tt id="link-798" class="py-name" targets="Variable pyparsing._reBracketExpr=pyparsing-module.html#_reBracketExpr"><a title="pyparsing._reBracketExpr" class="py-name" href="#" onclick="return doclink('link-798', '_reBracketExpr', 'link-798');">_reBracketExpr</a></tt> <tt class="py-op">=</tt> <tt id="link-799" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-799', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-string">"["</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-800" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-800', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-string">"^"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-801" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-801', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"negate"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-802" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-802', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt id="link-803" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-803', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt id="link-804" class="py-name"><a title="pyparsing._charRange" class="py-name" href="#" onclick="return doclink('link-804', '_charRange', 'link-793');">_charRange</a></tt> <tt class="py-op">|</tt> <tt id="link-805" class="py-name"><a title="pyparsing._singleChar" class="py-name" href="#" onclick="return doclink('link-805', '_singleChar', 'link-788');">_singleChar</a></tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-806" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-806', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"body"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"]"</tt> </tt>\r
-<a name="srange"></a><div id="srange-def"><a name="L4915"></a><tt class="py-lineno">4915</tt>  <tt class="py-line">\r </tt>
-<a name="L4916"></a><tt class="py-lineno">4916</tt> <a class="py-toggle" href="#" id="srange-toggle" onclick="return toggle('srange');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#srange">srange</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="srange-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="srange-expanded"><a name="L4917"></a><tt class="py-lineno">4917</tt>  <tt class="py-line">    <tt class="py-docstring">r"""\r</tt> </tt>
-<a name="L4918"></a><tt class="py-lineno">4918</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to easily define string ranges for use in Word construction.  Borrows\r</tt> </tt>
-<a name="L4919"></a><tt class="py-lineno">4919</tt>  <tt class="py-line"><tt class="py-docstring">    syntax from regexp '[]' string range definitions::\r</tt> </tt>
-<a name="L4920"></a><tt class="py-lineno">4920</tt>  <tt class="py-line"><tt class="py-docstring">        srange("[0-9]")   -&gt; "0123456789"\r</tt> </tt>
-<a name="L4921"></a><tt class="py-lineno">4921</tt>  <tt class="py-line"><tt class="py-docstring">        srange("[a-z]")   -&gt; "abcdefghijklmnopqrstuvwxyz"\r</tt> </tt>
-<a name="L4922"></a><tt class="py-lineno">4922</tt>  <tt class="py-line"><tt class="py-docstring">        srange("[a-z$_]") -&gt; "abcdefghijklmnopqrstuvwxyz$_"\r</tt> </tt>
-<a name="L4923"></a><tt class="py-lineno">4923</tt>  <tt class="py-line"><tt class="py-docstring">    The input string must be enclosed in []'s, and the returned string is the expanded\r</tt> </tt>
-<a name="L4924"></a><tt class="py-lineno">4924</tt>  <tt class="py-line"><tt class="py-docstring">    character set joined into a single string.\r</tt> </tt>
-<a name="L4925"></a><tt class="py-lineno">4925</tt>  <tt class="py-line"><tt class="py-docstring">    The values enclosed in the []'s may be:\r</tt> </tt>
-<a name="L4926"></a><tt class="py-lineno">4926</tt>  <tt class="py-line"><tt class="py-docstring">     - a single character\r</tt> </tt>
-<a name="L4927"></a><tt class="py-lineno">4927</tt>  <tt class="py-line"><tt class="py-docstring">     - an escaped character with a leading backslash (such as C{\-} or C{\]})\r</tt> </tt>
-<a name="L4928"></a><tt class="py-lineno">4928</tt>  <tt class="py-line"><tt class="py-docstring">     - an escaped hex character with a leading C{'\x'} (C{\x21}, which is a C{'!'} character)\r</tt> </tt>
-<a name="L4929"></a><tt class="py-lineno">4929</tt>  <tt class="py-line"><tt class="py-docstring">         (C{\0x##} is also supported for backwards compatibility)\r</tt> </tt>
-<a name="L4930"></a><tt class="py-lineno">4930</tt>  <tt class="py-line"><tt class="py-docstring">     - an escaped octal character with a leading C{'\0'} (C{\041}, which is a C{'!'} character)\r</tt> </tt>
-<a name="L4931"></a><tt class="py-lineno">4931</tt>  <tt class="py-line"><tt class="py-docstring">     - a range of any of the above, separated by a dash (C{'a-z'}, etc.)\r</tt> </tt>
-<a name="L4932"></a><tt class="py-lineno">4932</tt>  <tt class="py-line"><tt class="py-docstring">     - any combination of the above (C{'aeiouy'}, C{'a-zA-Z0-9_$'}, etc.)\r</tt> </tt>
-<a name="L4933"></a><tt class="py-lineno">4933</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4934"></a><tt class="py-lineno">4934</tt>  <tt class="py-line">    <tt class="py-name">_expanded</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">p</tt><tt class="py-op">:</tt> <tt class="py-name">p</tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt><tt id="link-807" class="py-name"><a title="pyparsing.ParseResults" class="py-name" href="#" onclick="return doclink('link-807', 'ParseResults', 'link-39');">ParseResults</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4935"></a><tt class="py-lineno">4935</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4936"></a><tt class="py-lineno">4936</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">_expanded</tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt id="link-808" class="py-name"><a title="pyparsing._reBracketExpr" class="py-name" href="#" onclick="return doclink('link-808', '_reBracketExpr', 'link-798');">_reBracketExpr</a></tt><tt class="py-op">.</tt><tt id="link-809" class="py-name"><a title="pyparsing.ParserElement.parseString" class="py-name" href="#" onclick="return doclink('link-809', 'parseString', 'link-317');">parseString</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L4937"></a><tt class="py-lineno">4937</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4938"></a><tt class="py-lineno">4938</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>\r
-</div><a name="L4939"></a><tt class="py-lineno">4939</tt>  <tt class="py-line">\r </tt>
-<a name="matchOnlyAtCol"></a><div id="matchOnlyAtCol-def"><a name="L4940"></a><tt class="py-lineno">4940</tt> <a class="py-toggle" href="#" id="matchOnlyAtCol-toggle" onclick="return toggle('matchOnlyAtCol');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#matchOnlyAtCol">matchOnlyAtCol</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="matchOnlyAtCol-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="matchOnlyAtCol-expanded"><a name="L4941"></a><tt class="py-lineno">4941</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4942"></a><tt class="py-lineno">4942</tt>  <tt class="py-line"><tt class="py-docstring">    Helper method for defining parse actions that require matching at a specific\r</tt> </tt>
-<a name="L4943"></a><tt class="py-lineno">4943</tt>  <tt class="py-line"><tt class="py-docstring">    column in the input text.\r</tt> </tt>
-<a name="L4944"></a><tt class="py-lineno">4944</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4945"></a><tt class="py-lineno">4945</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">verifyCol</tt><tt class="py-op">(</tt><tt class="py-param">strg</tt><tt class="py-op">,</tt><tt class="py-param">locn</tt><tt class="py-op">,</tt><tt class="py-param">toks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4946"></a><tt class="py-lineno">4946</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-810" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-810', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">locn</tt><tt class="py-op">,</tt><tt class="py-name">strg</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">n</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L4947"></a><tt class="py-lineno">4947</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-811" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-811', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">strg</tt><tt class="py-op">,</tt><tt class="py-name">locn</tt><tt class="py-op">,</tt><tt class="py-string">"matched token not at column %d"</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L4948"></a><tt class="py-lineno">4948</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">verifyCol</tt> </tt>\r
-</div><a name="L4949"></a><tt class="py-lineno">4949</tt>  <tt class="py-line">\r </tt>
-<a name="replaceWith"></a><div id="replaceWith-def"><a name="L4950"></a><tt class="py-lineno">4950</tt> <a class="py-toggle" href="#" id="replaceWith-toggle" onclick="return toggle('replaceWith');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#replaceWith">replaceWith</a><tt class="py-op">(</tt><tt class="py-param">replStr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="replaceWith-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="replaceWith-expanded"><a name="L4951"></a><tt class="py-lineno">4951</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4952"></a><tt class="py-lineno">4952</tt>  <tt class="py-line"><tt class="py-docstring">    Helper method for common parse actions that simply return a literal value.  Especially\r</tt> </tt>
-<a name="L4953"></a><tt class="py-lineno">4953</tt>  <tt class="py-line"><tt class="py-docstring">    useful when used with C{L{transformString&lt;ParserElement.transformString&gt;}()}.\r</tt> </tt>
-<a name="L4954"></a><tt class="py-lineno">4954</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4955"></a><tt class="py-lineno">4955</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4956"></a><tt class="py-lineno">4956</tt>  <tt class="py-line"><tt class="py-docstring">        num = Word(nums).setParseAction(lambda toks: int(toks[0]))\r</tt> </tt>
-<a name="L4957"></a><tt class="py-lineno">4957</tt>  <tt class="py-line"><tt class="py-docstring">        na = oneOf("N/A NA").setParseAction(replaceWith(math.nan))\r</tt> </tt>
-<a name="L4958"></a><tt class="py-lineno">4958</tt>  <tt class="py-line"><tt class="py-docstring">        term = na | num\r</tt> </tt>
-<a name="L4959"></a><tt class="py-lineno">4959</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4960"></a><tt class="py-lineno">4960</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(term).parseString("324 234 N/A 234") # -&gt; [324, 234, nan, 234]\r</tt> </tt>
-<a name="L4961"></a><tt class="py-lineno">4961</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4962"></a><tt class="py-lineno">4962</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-name">replStr</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4963"></a><tt class="py-lineno">4963</tt>  <tt class="py-line">\r </tt>
-<a name="removeQuotes"></a><div id="removeQuotes-def"><a name="L4964"></a><tt class="py-lineno">4964</tt> <a class="py-toggle" href="#" id="removeQuotes-toggle" onclick="return toggle('removeQuotes');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#removeQuotes">removeQuotes</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="removeQuotes-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="removeQuotes-expanded"><a name="L4965"></a><tt class="py-lineno">4965</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4966"></a><tt class="py-lineno">4966</tt>  <tt class="py-line"><tt class="py-docstring">    Helper parse action for removing quotation marks from parsed quoted strings.\r</tt> </tt>
-<a name="L4967"></a><tt class="py-lineno">4967</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4968"></a><tt class="py-lineno">4968</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L4969"></a><tt class="py-lineno">4969</tt>  <tt class="py-line"><tt class="py-docstring">        # by default, quotation marks are included in parsed results\r</tt> </tt>
-<a name="L4970"></a><tt class="py-lineno">4970</tt>  <tt class="py-line"><tt class="py-docstring">        quotedString.parseString("'Now is the Winter of our Discontent'") # -&gt; ["'Now is the Winter of our Discontent'"]\r</tt> </tt>
-<a name="L4971"></a><tt class="py-lineno">4971</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4972"></a><tt class="py-lineno">4972</tt>  <tt class="py-line"><tt class="py-docstring">        # use removeQuotes to strip quotation marks from parsed results\r</tt> </tt>
-<a name="L4973"></a><tt class="py-lineno">4973</tt>  <tt class="py-line"><tt class="py-docstring">        quotedString.setParseAction(removeQuotes)\r</tt> </tt>
-<a name="L4974"></a><tt class="py-lineno">4974</tt>  <tt class="py-line"><tt class="py-docstring">        quotedString.parseString("'Now is the Winter of our Discontent'") # -&gt; ["Now is the Winter of our Discontent"]\r</tt> </tt>
-<a name="L4975"></a><tt class="py-lineno">4975</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L4976"></a><tt class="py-lineno">4976</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L4977"></a><tt class="py-lineno">4977</tt>  <tt class="py-line">\r </tt>
-<a name="tokenMap"></a><div id="tokenMap-def"><a name="L4978"></a><tt class="py-lineno">4978</tt> <a class="py-toggle" href="#" id="tokenMap-toggle" onclick="return toggle('tokenMap');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#tokenMap">tokenMap</a><tt class="py-op">(</tt><tt class="py-param">func</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="tokenMap-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tokenMap-expanded"><a name="L4979"></a><tt class="py-lineno">4979</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L4980"></a><tt class="py-lineno">4980</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to define a parse action by mapping a function to all elements of a ParseResults list.If any additional\r</tt> </tt>
-<a name="L4981"></a><tt class="py-lineno">4981</tt>  <tt class="py-line"><tt class="py-docstring">    args are passed, they are forwarded to the given function as additional arguments after\r</tt> </tt>
-<a name="L4982"></a><tt class="py-lineno">4982</tt>  <tt class="py-line"><tt class="py-docstring">    the token, as in C{hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))}, which will convert the\r</tt> </tt>
-<a name="L4983"></a><tt class="py-lineno">4983</tt>  <tt class="py-line"><tt class="py-docstring">    parsed data to an integer using base 16.\r</tt> </tt>
-<a name="L4984"></a><tt class="py-lineno">4984</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4985"></a><tt class="py-lineno">4985</tt>  <tt class="py-line"><tt class="py-docstring">    Example (compare the last to example in L{ParserElement.transformString}::\r</tt> </tt>
-<a name="L4986"></a><tt class="py-lineno">4986</tt>  <tt class="py-line"><tt class="py-docstring">        hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))\r</tt> </tt>
-<a name="L4987"></a><tt class="py-lineno">4987</tt>  <tt class="py-line"><tt class="py-docstring">        hex_ints.runTests('''\r</tt> </tt>
-<a name="L4988"></a><tt class="py-lineno">4988</tt>  <tt class="py-line"><tt class="py-docstring">            00 11 22 aa FF 0a 0d 1a\r</tt> </tt>
-<a name="L4989"></a><tt class="py-lineno">4989</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L4990"></a><tt class="py-lineno">4990</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4991"></a><tt class="py-lineno">4991</tt>  <tt class="py-line"><tt class="py-docstring">        upperword = Word(alphas).setParseAction(tokenMap(str.upper))\r</tt> </tt>
-<a name="L4992"></a><tt class="py-lineno">4992</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(upperword).runTests('''\r</tt> </tt>
-<a name="L4993"></a><tt class="py-lineno">4993</tt>  <tt class="py-line"><tt class="py-docstring">            my kingdom for a horse\r</tt> </tt>
-<a name="L4994"></a><tt class="py-lineno">4994</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L4995"></a><tt class="py-lineno">4995</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L4996"></a><tt class="py-lineno">4996</tt>  <tt class="py-line"><tt class="py-docstring">        wd = Word(alphas).setParseAction(tokenMap(str.title))\r</tt> </tt>
-<a name="L4997"></a><tt class="py-lineno">4997</tt>  <tt class="py-line"><tt class="py-docstring">        OneOrMore(wd).setParseAction(' '.join).runTests('''\r</tt> </tt>
-<a name="L4998"></a><tt class="py-lineno">4998</tt>  <tt class="py-line"><tt class="py-docstring">            now is the winter of our discontent made glorious summer by this sun of york\r</tt> </tt>
-<a name="L4999"></a><tt class="py-lineno">4999</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5000"></a><tt class="py-lineno">5000</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5001"></a><tt class="py-lineno">5001</tt>  <tt class="py-line"><tt class="py-docstring">        00 11 22 aa FF 0a 0d 1a\r</tt> </tt>
-<a name="L5002"></a><tt class="py-lineno">5002</tt>  <tt class="py-line"><tt class="py-docstring">        [0, 17, 34, 170, 255, 10, 13, 26]\r</tt> </tt>
-<a name="L5003"></a><tt class="py-lineno">5003</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5004"></a><tt class="py-lineno">5004</tt>  <tt class="py-line"><tt class="py-docstring">        my kingdom for a horse\r</tt> </tt>
-<a name="L5005"></a><tt class="py-lineno">5005</tt>  <tt class="py-line"><tt class="py-docstring">        ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE']\r</tt> </tt>
-<a name="L5006"></a><tt class="py-lineno">5006</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5007"></a><tt class="py-lineno">5007</tt>  <tt class="py-line"><tt class="py-docstring">        now is the winter of our discontent made glorious summer by this sun of york\r</tt> </tt>
-<a name="L5008"></a><tt class="py-lineno">5008</tt>  <tt class="py-line"><tt class="py-docstring">        ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York']\r</tt> </tt>
-<a name="L5009"></a><tt class="py-lineno">5009</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5010"></a><tt class="py-lineno">5010</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">pa</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5011"></a><tt class="py-lineno">5011</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">func</tt><tt class="py-op">(</tt><tt class="py-name">tokn</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">tokn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">t</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L5012"></a><tt class="py-lineno">5012</tt>  <tt class="py-line">\r </tt>
-<a name="L5013"></a><tt class="py-lineno">5013</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5014"></a><tt class="py-lineno">5014</tt>  <tt class="py-line">        <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L5015"></a><tt class="py-lineno">5015</tt>  <tt class="py-line">                            <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'__class__'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5016"></a><tt class="py-lineno">5016</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5017"></a><tt class="py-lineno">5017</tt>  <tt class="py-line">        <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5018"></a><tt class="py-lineno">5018</tt>  <tt class="py-line">    <tt class="py-name">pa</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">=</tt> <tt class="py-name">func_name</tt> </tt>\r
-<a name="L5019"></a><tt class="py-lineno">5019</tt>  <tt class="py-line">\r </tt>
-<a name="L5020"></a><tt class="py-lineno">5020</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pa</tt> </tt>\r
-</div><a name="L5021"></a><tt class="py-lineno">5021</tt>  <tt class="py-line">\r </tt>
-<a name="L5022"></a><tt class="py-lineno">5022</tt>  <tt class="py-line"><tt id="link-812" class="py-name" targets="Static Method pyparsing.pyparsing_common.upcaseTokens()=pyparsing.pyparsing_common-class.html#upcaseTokens,Function pyparsing.upcaseTokens()=pyparsing-module.html#upcaseTokens"><a title="pyparsing.pyparsing_common.upcaseTokens
-pyparsing.upcaseTokens" class="py-name" href="#" onclick="return doclink('link-812', 'upcaseTokens', 'link-812');">upcaseTokens</a></tt> <tt class="py-op">=</tt> <tt id="link-813" class="py-name" targets="Function pyparsing.tokenMap()=pyparsing-module.html#tokenMap"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-813', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5023"></a><tt class="py-lineno">5023</tt>  <tt class="py-line"><tt class="py-string">"""(Deprecated) Helper parse action to convert tokens to upper case. Deprecated in favor of L{pyparsing_common.upcaseTokens}"""</tt> </tt>\r
-<a name="L5024"></a><tt class="py-lineno">5024</tt>  <tt class="py-line">\r </tt>
-<a name="L5025"></a><tt class="py-lineno">5025</tt>  <tt class="py-line"><tt id="link-814" class="py-name" targets="Function pyparsing.downcaseTokens()=pyparsing-module.html#downcaseTokens,Static Method pyparsing.pyparsing_common.downcaseTokens()=pyparsing.pyparsing_common-class.html#downcaseTokens"><a title="pyparsing.downcaseTokens
-pyparsing.pyparsing_common.downcaseTokens" class="py-name" href="#" onclick="return doclink('link-814', 'downcaseTokens', 'link-814');">downcaseTokens</a></tt> <tt class="py-op">=</tt> <tt id="link-815" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-815', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5026"></a><tt class="py-lineno">5026</tt>  <tt class="py-line"><tt class="py-string">"""(Deprecated) Helper parse action to convert tokens to lower case. Deprecated in favor of L{pyparsing_common.downcaseTokens}"""</tt> </tt>\r
-<a name="_makeTags"></a><div id="_makeTags-def"><a name="L5027"></a><tt class="py-lineno">5027</tt>  <tt class="py-line">\r </tt>
-<a name="L5028"></a><tt class="py-lineno">5028</tt> <a class="py-toggle" href="#" id="_makeTags-toggle" onclick="return toggle('_makeTags');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#_makeTags">_makeTags</a><tt class="py-op">(</tt><tt class="py-param">tagStr</tt><tt class="py-op">,</tt> <tt class="py-param">xml</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_makeTags-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_makeTags-expanded"><a name="L5029"></a><tt class="py-lineno">5029</tt>  <tt class="py-line">    <tt class="py-docstring">"""Internal helper to construct opening and closing tag expressions, given a tag name"""</tt> </tt>\r
-<a name="L5030"></a><tt class="py-lineno">5030</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tagStr</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5031"></a><tt class="py-lineno">5031</tt>  <tt class="py-line">        <tt class="py-name">resname</tt> <tt class="py-op">=</tt> <tt class="py-name">tagStr</tt> </tt>\r
-<a name="L5032"></a><tt class="py-lineno">5032</tt>  <tt class="py-line">        <tt class="py-name">tagStr</tt> <tt class="py-op">=</tt> <tt id="link-816" class="py-name"><a title="pyparsing.Keyword" class="py-name" href="#" onclick="return doclink('link-816', 'Keyword', 'link-363');">Keyword</a></tt><tt class="py-op">(</tt><tt class="py-name">tagStr</tt><tt class="py-op">,</tt> <tt class="py-name">caseless</tt><tt class="py-op">=</tt><tt class="py-keyword">not</tt> <tt class="py-name">xml</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5033"></a><tt class="py-lineno">5033</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5034"></a><tt class="py-lineno">5034</tt>  <tt class="py-line">        <tt class="py-name">resname</tt> <tt class="py-op">=</tt> <tt class="py-name">tagStr</tt><tt class="py-op">.</tt><tt class="py-name">name</tt> </tt>\r
-<a name="L5035"></a><tt class="py-lineno">5035</tt>  <tt class="py-line">\r </tt>
-<a name="L5036"></a><tt class="py-lineno">5036</tt>  <tt class="py-line">    <tt class="py-name">tagAttrName</tt> <tt class="py-op">=</tt> <tt id="link-817" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-817', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-818" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-818', 'alphas', 'link-21');">alphas</a></tt><tt class="py-op">,</tt><tt id="link-819" class="py-name"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-819', 'alphanums', 'link-25');">alphanums</a></tt><tt class="py-op">+</tt><tt class="py-string">"_-:"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5037"></a><tt class="py-lineno">5037</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">xml</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5038"></a><tt class="py-lineno">5038</tt>  <tt class="py-line">        <tt class="py-name">tagAttrValue</tt> <tt class="py-op">=</tt> <tt id="link-820" class="py-name" targets="Variable pyparsing.dblQuotedString=pyparsing-module.html#dblQuotedString"><a title="pyparsing.dblQuotedString" class="py-name" href="#" onclick="return doclink('link-820', 'dblQuotedString', 'link-820');">dblQuotedString</a></tt><tt class="py-op">.</tt><tt id="link-821" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-821', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-822" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-822', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt> <tt id="link-823" class="py-name" targets="Function pyparsing.removeQuotes()=pyparsing-module.html#removeQuotes"><a title="pyparsing.removeQuotes" class="py-name" href="#" onclick="return doclink('link-823', 'removeQuotes', 'link-823');">removeQuotes</a></tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5039"></a><tt class="py-lineno">5039</tt>  <tt class="py-line">        <tt class="py-name">openTag</tt> <tt class="py-op">=</tt> <tt id="link-824" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-824', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">tagStr</tt><tt class="py-op">(</tt><tt class="py-string">"tag"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5040"></a><tt class="py-lineno">5040</tt>  <tt class="py-line">                <tt id="link-825" class="py-name"><a title="pyparsing.Dict" class="py-name" href="#" onclick="return doclink('link-825', 'Dict', 'link-692');">Dict</a></tt><tt class="py-op">(</tt><tt id="link-826" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-826', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt><tt id="link-827" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-827', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">tagAttrName</tt> <tt class="py-op">+</tt> <tt id="link-828" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-828', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"="</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">tagAttrValue</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5041"></a><tt class="py-lineno">5041</tt>  <tt class="py-line">                <tt id="link-829" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-829', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">,</tt><tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">False</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-830" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-830', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"empty"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-831" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-831', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-832" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-832', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"&gt;"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5042"></a><tt class="py-lineno">5042</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5043"></a><tt class="py-lineno">5043</tt>  <tt class="py-line">        <tt class="py-name">printablesLessRAbrack</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-833" class="py-name"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-833', 'printables', 'link-29');">printables</a></tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-string">"&gt;"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5044"></a><tt class="py-lineno">5044</tt>  <tt class="py-line">        <tt class="py-name">tagAttrValue</tt> <tt class="py-op">=</tt> <tt id="link-834" class="py-name" targets="Variable pyparsing.quotedString=pyparsing-module.html#quotedString"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-834', 'quotedString', 'link-834');">quotedString</a></tt><tt class="py-op">.</tt><tt id="link-835" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-835', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-836" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-836', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt> <tt id="link-837" class="py-name"><a title="pyparsing.removeQuotes" class="py-name" href="#" onclick="return doclink('link-837', 'removeQuotes', 'link-823');">removeQuotes</a></tt> <tt class="py-op">)</tt> <tt class="py-op">|</tt> <tt id="link-838" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-838', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt class="py-name">printablesLessRAbrack</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5045"></a><tt class="py-lineno">5045</tt>  <tt class="py-line">        <tt class="py-name">openTag</tt> <tt class="py-op">=</tt> <tt id="link-839" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-839', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">tagStr</tt><tt class="py-op">(</tt><tt class="py-string">"tag"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5046"></a><tt class="py-lineno">5046</tt>  <tt class="py-line">                <tt id="link-840" class="py-name"><a title="pyparsing.Dict" class="py-name" href="#" onclick="return doclink('link-840', 'Dict', 'link-692');">Dict</a></tt><tt class="py-op">(</tt><tt id="link-841" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-841', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt><tt id="link-842" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-842', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">tagAttrName</tt><tt class="py-op">.</tt><tt id="link-843" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-843', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-844" class="py-name"><a title="pyparsing.downcaseTokens
-pyparsing.pyparsing_common.downcaseTokens" class="py-name" href="#" onclick="return doclink('link-844', 'downcaseTokens', 'link-814');">downcaseTokens</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5047"></a><tt class="py-lineno">5047</tt>  <tt class="py-line">                <tt id="link-845" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-845', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt> <tt id="link-846" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-846', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"="</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">tagAttrValue</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5048"></a><tt class="py-lineno">5048</tt>  <tt class="py-line">                <tt id="link-847" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-847', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">,</tt><tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">False</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-848" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-848', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"empty"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-849" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-849', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-850" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-850', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">"&gt;"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5049"></a><tt class="py-lineno">5049</tt>  <tt class="py-line">    <tt class="py-name">closeTag</tt> <tt class="py-op">=</tt> <tt id="link-851" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-851', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt class="py-name">_L</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;/"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">tagStr</tt> <tt class="py-op">+</tt> <tt class="py-string">"&gt;"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5050"></a><tt class="py-lineno">5050</tt>  <tt class="py-line">\r </tt>
-<a name="L5051"></a><tt class="py-lineno">5051</tt>  <tt class="py-line">    <tt class="py-name">openTag</tt> <tt class="py-op">=</tt> <tt class="py-name">openTag</tt><tt class="py-op">.</tt><tt id="link-852" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-852', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">+</tt><tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">resname</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">":"</tt><tt class="py-op">,</tt><tt class="py-string">" "</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-853" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-853', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-854" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-854', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;%s&gt;"</tt> <tt class="py-op">%</tt> <tt class="py-name">resname</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5052"></a><tt class="py-lineno">5052</tt>  <tt class="py-line">    <tt class="py-name">closeTag</tt> <tt class="py-op">=</tt> <tt class="py-name">closeTag</tt><tt class="py-op">.</tt><tt id="link-855" class="py-name"><a title="pyparsing.ParseExpression.setResultsName
-pyparsing.ParserElement.setResultsName" class="py-name" href="#" onclick="return doclink('link-855', 'setResultsName', 'link-306');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">+</tt><tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">resname</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">":"</tt><tt class="py-op">,</tt><tt class="py-string">" "</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-856" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-856', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-857" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-857', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;/%s&gt;"</tt> <tt class="py-op">%</tt> <tt class="py-name">resname</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5053"></a><tt class="py-lineno">5053</tt>  <tt class="py-line">    <tt class="py-name">openTag</tt><tt class="py-op">.</tt><tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">resname</tt> </tt>\r
-<a name="L5054"></a><tt class="py-lineno">5054</tt>  <tt class="py-line">    <tt class="py-name">closeTag</tt><tt class="py-op">.</tt><tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">resname</tt> </tt>\r
-<a name="L5055"></a><tt class="py-lineno">5055</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">openTag</tt><tt class="py-op">,</tt> <tt class="py-name">closeTag</tt> </tt>\r
-</div><a name="L5056"></a><tt class="py-lineno">5056</tt>  <tt class="py-line">\r </tt>
-<a name="makeHTMLTags"></a><div id="makeHTMLTags-def"><a name="L5057"></a><tt class="py-lineno">5057</tt> <a class="py-toggle" href="#" id="makeHTMLTags-toggle" onclick="return toggle('makeHTMLTags');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#makeHTMLTags">makeHTMLTags</a><tt class="py-op">(</tt><tt class="py-param">tagStr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="makeHTMLTags-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="makeHTMLTags-expanded"><a name="L5058"></a><tt class="py-lineno">5058</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5059"></a><tt class="py-lineno">5059</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to construct opening and closing tag expressions for HTML, given a tag name. Matches\r</tt> </tt>
-<a name="L5060"></a><tt class="py-lineno">5060</tt>  <tt class="py-line"><tt class="py-docstring">    tags in either upper or lower case, attributes with namespaces and with quoted or unquoted values.\r</tt> </tt>
-<a name="L5061"></a><tt class="py-lineno">5061</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5062"></a><tt class="py-lineno">5062</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5063"></a><tt class="py-lineno">5063</tt>  <tt class="py-line"><tt class="py-docstring">        text = '&lt;td&gt;More info at the &lt;a href="http://pyparsing.wikispaces.com"&gt;pyparsing&lt;/a&gt; wiki page&lt;/td&gt;'\r</tt> </tt>
-<a name="L5064"></a><tt class="py-lineno">5064</tt>  <tt class="py-line"><tt class="py-docstring">        # makeHTMLTags returns pyparsing expressions for the opening and closing tags as a 2-tuple\r</tt> </tt>
-<a name="L5065"></a><tt class="py-lineno">5065</tt>  <tt class="py-line"><tt class="py-docstring">        a,a_end = makeHTMLTags("A")\r</tt> </tt>
-<a name="L5066"></a><tt class="py-lineno">5066</tt>  <tt class="py-line"><tt class="py-docstring">        link_expr = a + SkipTo(a_end)("link_text") + a_end\r</tt> </tt>
-<a name="L5067"></a><tt class="py-lineno">5067</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5068"></a><tt class="py-lineno">5068</tt>  <tt class="py-line"><tt class="py-docstring">        for link in link_expr.searchString(text):\r</tt> </tt>
-<a name="L5069"></a><tt class="py-lineno">5069</tt>  <tt class="py-line"><tt class="py-docstring">            # attributes in the &lt;A&gt; tag (like "href" shown here) are also accessible as named results\r</tt> </tt>
-<a name="L5070"></a><tt class="py-lineno">5070</tt>  <tt class="py-line"><tt class="py-docstring">            print(link.link_text, '-&gt;', link.href)\r</tt> </tt>
-<a name="L5071"></a><tt class="py-lineno">5071</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5072"></a><tt class="py-lineno">5072</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing -&gt; http://pyparsing.wikispaces.com\r</tt> </tt>
-<a name="L5073"></a><tt class="py-lineno">5073</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5074"></a><tt class="py-lineno">5074</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_makeTags</tt><tt class="py-op">(</tt> <tt class="py-name">tagStr</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L5075"></a><tt class="py-lineno">5075</tt>  <tt class="py-line">\r </tt>
-<a name="makeXMLTags"></a><div id="makeXMLTags-def"><a name="L5076"></a><tt class="py-lineno">5076</tt> <a class="py-toggle" href="#" id="makeXMLTags-toggle" onclick="return toggle('makeXMLTags');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#makeXMLTags">makeXMLTags</a><tt class="py-op">(</tt><tt class="py-param">tagStr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="makeXMLTags-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="makeXMLTags-expanded"><a name="L5077"></a><tt class="py-lineno">5077</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5078"></a><tt class="py-lineno">5078</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to construct opening and closing tag expressions for XML, given a tag name. Matches\r</tt> </tt>
-<a name="L5079"></a><tt class="py-lineno">5079</tt>  <tt class="py-line"><tt class="py-docstring">    tags only in the given upper/lower case.\r</tt> </tt>
-<a name="L5080"></a><tt class="py-lineno">5080</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5081"></a><tt class="py-lineno">5081</tt>  <tt class="py-line"><tt class="py-docstring">    Example: similar to L{makeHTMLTags}\r</tt> </tt>
-<a name="L5082"></a><tt class="py-lineno">5082</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5083"></a><tt class="py-lineno">5083</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_makeTags</tt><tt class="py-op">(</tt> <tt class="py-name">tagStr</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt> <tt class="py-op">)</tt> </tt>\r
-</div><a name="L5084"></a><tt class="py-lineno">5084</tt>  <tt class="py-line">\r </tt>
-<a name="withAttribute"></a><div id="withAttribute-def"><a name="L5085"></a><tt class="py-lineno">5085</tt> <a class="py-toggle" href="#" id="withAttribute-toggle" onclick="return toggle('withAttribute');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#withAttribute">withAttribute</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">attrDict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="withAttribute-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="withAttribute-expanded"><a name="L5086"></a><tt class="py-lineno">5086</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5087"></a><tt class="py-lineno">5087</tt>  <tt class="py-line"><tt class="py-docstring">    Helper to create a validating parse action to be used with start tags created\r</tt> </tt>
-<a name="L5088"></a><tt class="py-lineno">5088</tt>  <tt class="py-line"><tt class="py-docstring">    with C{L{makeXMLTags}} or C{L{makeHTMLTags}}. Use C{withAttribute} to qualify a starting tag\r</tt> </tt>
-<a name="L5089"></a><tt class="py-lineno">5089</tt>  <tt class="py-line"><tt class="py-docstring">    with a required attribute value, to avoid false matches on common tags such as\r</tt> </tt>
-<a name="L5090"></a><tt class="py-lineno">5090</tt>  <tt class="py-line"><tt class="py-docstring">    C{&lt;TD&gt;} or C{&lt;DIV&gt;}.\r</tt> </tt>
-<a name="L5091"></a><tt class="py-lineno">5091</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5092"></a><tt class="py-lineno">5092</tt>  <tt class="py-line"><tt class="py-docstring">    Call C{withAttribute} with a series of attribute names and values. Specify the list\r</tt> </tt>
-<a name="L5093"></a><tt class="py-lineno">5093</tt>  <tt class="py-line"><tt class="py-docstring">    of filter attributes names and values as:\r</tt> </tt>
-<a name="L5094"></a><tt class="py-lineno">5094</tt>  <tt class="py-line"><tt class="py-docstring">     - keyword arguments, as in C{(align="right")}, or\r</tt> </tt>
-<a name="L5095"></a><tt class="py-lineno">5095</tt>  <tt class="py-line"><tt class="py-docstring">     - as an explicit dict with C{**} operator, when an attribute name is also a Python\r</tt> </tt>
-<a name="L5096"></a><tt class="py-lineno">5096</tt>  <tt class="py-line"><tt class="py-docstring">          reserved word, as in C{**{"class":"Customer", "align":"right"}}\r</tt> </tt>
-<a name="L5097"></a><tt class="py-lineno">5097</tt>  <tt class="py-line"><tt class="py-docstring">     - a list of name-value tuples, as in ( ("ns1:class", "Customer"), ("ns2:align","right") )\r</tt> </tt>
-<a name="L5098"></a><tt class="py-lineno">5098</tt>  <tt class="py-line"><tt class="py-docstring">    For attribute names with a namespace prefix, you must use the second form.  Attribute\r</tt> </tt>
-<a name="L5099"></a><tt class="py-lineno">5099</tt>  <tt class="py-line"><tt class="py-docstring">    names are matched insensitive to upper/lower case.\r</tt> </tt>
-<a name="L5100"></a><tt class="py-lineno">5100</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5101"></a><tt class="py-lineno">5101</tt>  <tt class="py-line"><tt class="py-docstring">    If just testing for C{class} (with or without a namespace), use C{L{withClass}}.\r</tt> </tt>
-<a name="L5102"></a><tt class="py-lineno">5102</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5103"></a><tt class="py-lineno">5103</tt>  <tt class="py-line"><tt class="py-docstring">    To verify that the attribute exists, but without specifying a value, pass\r</tt> </tt>
-<a name="L5104"></a><tt class="py-lineno">5104</tt>  <tt class="py-line"><tt class="py-docstring">    C{withAttribute.ANY_VALUE} as the value.\r</tt> </tt>
-<a name="L5105"></a><tt class="py-lineno">5105</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5106"></a><tt class="py-lineno">5106</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5107"></a><tt class="py-lineno">5107</tt>  <tt class="py-line"><tt class="py-docstring">        html = '''\r</tt> </tt>
-<a name="L5108"></a><tt class="py-lineno">5108</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div&gt;\r</tt> </tt>
-<a name="L5109"></a><tt class="py-lineno">5109</tt>  <tt class="py-line"><tt class="py-docstring">            Some text\r</tt> </tt>
-<a name="L5110"></a><tt class="py-lineno">5110</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div type="grid"&gt;1 4 0 1 0&lt;/div&gt;\r</tt> </tt>
-<a name="L5111"></a><tt class="py-lineno">5111</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div type="graph"&gt;1,3 2,3 1,1&lt;/div&gt;\r</tt> </tt>
-<a name="L5112"></a><tt class="py-lineno">5112</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div&gt;this has no type&lt;/div&gt;\r</tt> </tt>
-<a name="L5113"></a><tt class="py-lineno">5113</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;/div&gt;\r</tt> </tt>
-<a name="L5114"></a><tt class="py-lineno">5114</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5115"></a><tt class="py-lineno">5115</tt>  <tt class="py-line"><tt class="py-docstring">        '''\r</tt> </tt>
-<a name="L5116"></a><tt class="py-lineno">5116</tt>  <tt class="py-line"><tt class="py-docstring">        div,div_end = makeHTMLTags("div")\r</tt> </tt>
-<a name="L5117"></a><tt class="py-lineno">5117</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5118"></a><tt class="py-lineno">5118</tt>  <tt class="py-line"><tt class="py-docstring">        # only match div tag having a type attribute with value "grid"\r</tt> </tt>
-<a name="L5119"></a><tt class="py-lineno">5119</tt>  <tt class="py-line"><tt class="py-docstring">        div_grid = div().setParseAction(withAttribute(type="grid"))\r</tt> </tt>
-<a name="L5120"></a><tt class="py-lineno">5120</tt>  <tt class="py-line"><tt class="py-docstring">        grid_expr = div_grid + SkipTo(div | div_end)("body")\r</tt> </tt>
-<a name="L5121"></a><tt class="py-lineno">5121</tt>  <tt class="py-line"><tt class="py-docstring">        for grid_header in grid_expr.searchString(html):\r</tt> </tt>
-<a name="L5122"></a><tt class="py-lineno">5122</tt>  <tt class="py-line"><tt class="py-docstring">            print(grid_header.body)\r</tt> </tt>
-<a name="L5123"></a><tt class="py-lineno">5123</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5124"></a><tt class="py-lineno">5124</tt>  <tt class="py-line"><tt class="py-docstring">        # construct a match with any div tag having a type attribute, regardless of the value\r</tt> </tt>
-<a name="L5125"></a><tt class="py-lineno">5125</tt>  <tt class="py-line"><tt class="py-docstring">        div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE))\r</tt> </tt>
-<a name="L5126"></a><tt class="py-lineno">5126</tt>  <tt class="py-line"><tt class="py-docstring">        div_expr = div_any_type + SkipTo(div | div_end)("body")\r</tt> </tt>
-<a name="L5127"></a><tt class="py-lineno">5127</tt>  <tt class="py-line"><tt class="py-docstring">        for div_header in div_expr.searchString(html):\r</tt> </tt>
-<a name="L5128"></a><tt class="py-lineno">5128</tt>  <tt class="py-line"><tt class="py-docstring">            print(div_header.body)\r</tt> </tt>
-<a name="L5129"></a><tt class="py-lineno">5129</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5130"></a><tt class="py-lineno">5130</tt>  <tt class="py-line"><tt class="py-docstring">        1 4 0 1 0\r</tt> </tt>
-<a name="L5131"></a><tt class="py-lineno">5131</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5132"></a><tt class="py-lineno">5132</tt>  <tt class="py-line"><tt class="py-docstring">        1 4 0 1 0\r</tt> </tt>
-<a name="L5133"></a><tt class="py-lineno">5133</tt>  <tt class="py-line"><tt class="py-docstring">        1,3 2,3 1,1\r</tt> </tt>
-<a name="L5134"></a><tt class="py-lineno">5134</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5135"></a><tt class="py-lineno">5135</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5136"></a><tt class="py-lineno">5136</tt>  <tt class="py-line">        <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L5137"></a><tt class="py-lineno">5137</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5138"></a><tt class="py-lineno">5138</tt>  <tt class="py-line">        <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">attrDict</tt><tt class="py-op">.</tt><tt id="link-858" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#" onclick="return doclink('link-858', 'items', 'link-51');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5139"></a><tt class="py-lineno">5139</tt>  <tt class="py-line">    <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L5140"></a><tt class="py-lineno">5140</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">pa</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">tokens</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5141"></a><tt class="py-lineno">5141</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">attrName</tt><tt class="py-op">,</tt><tt class="py-name">attrValue</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5142"></a><tt class="py-lineno">5142</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">attrName</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tokens</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5143"></a><tt class="py-lineno">5143</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-859" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-859', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"no matching attribute "</tt> <tt class="py-op">+</tt> <tt class="py-name">attrName</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5144"></a><tt class="py-lineno">5144</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">attrValue</tt> <tt class="py-op">!=</tt> <tt id="link-860" class="py-name" targets="Function pyparsing.withAttribute()=pyparsing-module.html#withAttribute"><a title="pyparsing.withAttribute" class="py-name" href="#" onclick="return doclink('link-860', 'withAttribute', 'link-860');">withAttribute</a></tt><tt class="py-op">.</tt><tt class="py-name">ANY_VALUE</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-name">attrName</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">attrValue</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5145"></a><tt class="py-lineno">5145</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-861" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-861', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"attribute '%s' has value '%s', must be '%s'"</tt> <tt class="py-op">%</tt>\r </tt>
-<a name="L5146"></a><tt class="py-lineno">5146</tt>  <tt class="py-line">                                            <tt class="py-op">(</tt><tt class="py-name">attrName</tt><tt class="py-op">,</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-name">attrName</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">attrValue</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5147"></a><tt class="py-lineno">5147</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pa</tt> </tt>\r
-</div><a name="L5148"></a><tt class="py-lineno">5148</tt>  <tt class="py-line"><tt id="link-862" class="py-name"><a title="pyparsing.withAttribute" class="py-name" href="#" onclick="return doclink('link-862', 'withAttribute', 'link-860');">withAttribute</a></tt><tt class="py-op">.</tt><tt class="py-name">ANY_VALUE</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="withClass"></a><div id="withClass-def"><a name="L5149"></a><tt class="py-lineno">5149</tt>  <tt class="py-line">\r </tt>
-<a name="L5150"></a><tt class="py-lineno">5150</tt> <a class="py-toggle" href="#" id="withClass-toggle" onclick="return toggle('withClass');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#withClass">withClass</a><tt class="py-op">(</tt><tt class="py-param">classname</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="withClass-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="withClass-expanded"><a name="L5151"></a><tt class="py-lineno">5151</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5152"></a><tt class="py-lineno">5152</tt>  <tt class="py-line"><tt class="py-docstring">    Simplified version of C{L{withAttribute}} when matching on a div class - made\r</tt> </tt>
-<a name="L5153"></a><tt class="py-lineno">5153</tt>  <tt class="py-line"><tt class="py-docstring">    difficult because C{class} is a reserved word in Python.\r</tt> </tt>
-<a name="L5154"></a><tt class="py-lineno">5154</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5155"></a><tt class="py-lineno">5155</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5156"></a><tt class="py-lineno">5156</tt>  <tt class="py-line"><tt class="py-docstring">        html = '''\r</tt> </tt>
-<a name="L5157"></a><tt class="py-lineno">5157</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div&gt;\r</tt> </tt>
-<a name="L5158"></a><tt class="py-lineno">5158</tt>  <tt class="py-line"><tt class="py-docstring">            Some text\r</tt> </tt>
-<a name="L5159"></a><tt class="py-lineno">5159</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div class="grid"&gt;1 4 0 1 0&lt;/div&gt;\r</tt> </tt>
-<a name="L5160"></a><tt class="py-lineno">5160</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div class="graph"&gt;1,3 2,3 1,1&lt;/div&gt;\r</tt> </tt>
-<a name="L5161"></a><tt class="py-lineno">5161</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;div&gt;this &amp;lt;div&amp;gt; has no class&lt;/div&gt;\r</tt> </tt>
-<a name="L5162"></a><tt class="py-lineno">5162</tt>  <tt class="py-line"><tt class="py-docstring">            &lt;/div&gt;\r</tt> </tt>
-<a name="L5163"></a><tt class="py-lineno">5163</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5164"></a><tt class="py-lineno">5164</tt>  <tt class="py-line"><tt class="py-docstring">        '''\r</tt> </tt>
-<a name="L5165"></a><tt class="py-lineno">5165</tt>  <tt class="py-line"><tt class="py-docstring">        div,div_end = makeHTMLTags("div")\r</tt> </tt>
-<a name="L5166"></a><tt class="py-lineno">5166</tt>  <tt class="py-line"><tt class="py-docstring">        div_grid = div().setParseAction(withClass("grid"))\r</tt> </tt>
-<a name="L5167"></a><tt class="py-lineno">5167</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5168"></a><tt class="py-lineno">5168</tt>  <tt class="py-line"><tt class="py-docstring">        grid_expr = div_grid + SkipTo(div | div_end)("body")\r</tt> </tt>
-<a name="L5169"></a><tt class="py-lineno">5169</tt>  <tt class="py-line"><tt class="py-docstring">        for grid_header in grid_expr.searchString(html):\r</tt> </tt>
-<a name="L5170"></a><tt class="py-lineno">5170</tt>  <tt class="py-line"><tt class="py-docstring">            print(grid_header.body)\r</tt> </tt>
-<a name="L5171"></a><tt class="py-lineno">5171</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5172"></a><tt class="py-lineno">5172</tt>  <tt class="py-line"><tt class="py-docstring">        div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE))\r</tt> </tt>
-<a name="L5173"></a><tt class="py-lineno">5173</tt>  <tt class="py-line"><tt class="py-docstring">        div_expr = div_any_type + SkipTo(div | div_end)("body")\r</tt> </tt>
-<a name="L5174"></a><tt class="py-lineno">5174</tt>  <tt class="py-line"><tt class="py-docstring">        for div_header in div_expr.searchString(html):\r</tt> </tt>
-<a name="L5175"></a><tt class="py-lineno">5175</tt>  <tt class="py-line"><tt class="py-docstring">            print(div_header.body)\r</tt> </tt>
-<a name="L5176"></a><tt class="py-lineno">5176</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5177"></a><tt class="py-lineno">5177</tt>  <tt class="py-line"><tt class="py-docstring">        1 4 0 1 0\r</tt> </tt>
-<a name="L5178"></a><tt class="py-lineno">5178</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5179"></a><tt class="py-lineno">5179</tt>  <tt class="py-line"><tt class="py-docstring">        1 4 0 1 0\r</tt> </tt>
-<a name="L5180"></a><tt class="py-lineno">5180</tt>  <tt class="py-line"><tt class="py-docstring">        1,3 2,3 1,1\r</tt> </tt>
-<a name="L5181"></a><tt class="py-lineno">5181</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5182"></a><tt class="py-lineno">5182</tt>  <tt class="py-line">    <tt class="py-name">classattr</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s:class"</tt> <tt class="py-op">%</tt> <tt class="py-name">namespace</tt> <tt class="py-keyword">if</tt> <tt class="py-name">namespace</tt> <tt class="py-keyword">else</tt> <tt class="py-string">"class"</tt> </tt>\r
-<a name="L5183"></a><tt class="py-lineno">5183</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-863" class="py-name"><a title="pyparsing.withAttribute" class="py-name" href="#" onclick="return doclink('link-863', 'withAttribute', 'link-860');">withAttribute</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-name">classattr</tt> <tt class="py-op">:</tt> <tt class="py-name">classname</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5184"></a><tt class="py-lineno">5184</tt>  <tt class="py-line">\r </tt>
-<a name="L5185"></a><tt class="py-lineno">5185</tt>  <tt class="py-line"><tt id="link-864" class="py-name" targets="Variable pyparsing.opAssoc=pyparsing-module.html#opAssoc"><a title="pyparsing.opAssoc" class="py-name" href="#" onclick="return doclink('link-864', 'opAssoc', 'link-864');">opAssoc</a></tt> <tt class="py-op">=</tt> <tt class="py-name">SimpleNamespace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5186"></a><tt class="py-lineno">5186</tt>  <tt class="py-line"><tt id="link-865" class="py-name"><a title="pyparsing.opAssoc" class="py-name" href="#" onclick="return doclink('link-865', 'opAssoc', 'link-864');">opAssoc</a></tt><tt class="py-op">.</tt><tt class="py-name">LEFT</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5187"></a><tt class="py-lineno">5187</tt>  <tt class="py-line"><tt id="link-866" class="py-name"><a title="pyparsing.opAssoc" class="py-name" href="#" onclick="return doclink('link-866', 'opAssoc', 'link-864');">opAssoc</a></tt><tt class="py-op">.</tt><tt class="py-name">RIGHT</tt> <tt class="py-op">=</tt> <tt class="py-name">object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="infixNotation"></a><div id="infixNotation-def"><a name="L5188"></a><tt class="py-lineno">5188</tt>  <tt class="py-line">\r </tt>
-<a name="L5189"></a><tt class="py-lineno">5189</tt> <a class="py-toggle" href="#" id="infixNotation-toggle" onclick="return toggle('infixNotation');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#infixNotation">infixNotation</a><tt class="py-op">(</tt> <tt class="py-param">baseExpr</tt><tt class="py-op">,</tt> <tt class="py-param">opList</tt><tt class="py-op">,</tt> <tt class="py-param">lpar</tt><tt class="py-op">=</tt><tt id="link-867" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-867', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-param">rpar</tt><tt class="py-op">=</tt><tt id="link-868" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-868', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="infixNotation-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="infixNotation-expanded"><a name="L5190"></a><tt class="py-lineno">5190</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5191"></a><tt class="py-lineno">5191</tt>  <tt class="py-line"><tt class="py-docstring">    Helper method for constructing grammars of expressions made up of\r</tt> </tt>
-<a name="L5192"></a><tt class="py-lineno">5192</tt>  <tt class="py-line"><tt class="py-docstring">    operators working in a precedence hierarchy.  Operators may be unary or\r</tt> </tt>
-<a name="L5193"></a><tt class="py-lineno">5193</tt>  <tt class="py-line"><tt class="py-docstring">    binary, left- or right-associative.  Parse actions can also be attached\r</tt> </tt>
-<a name="L5194"></a><tt class="py-lineno">5194</tt>  <tt class="py-line"><tt class="py-docstring">    to operator expressions. The generated parser will also recognize the use\r</tt> </tt>
-<a name="L5195"></a><tt class="py-lineno">5195</tt>  <tt class="py-line"><tt class="py-docstring">    of parentheses to override operator precedences (see example below).\r</tt> </tt>
-<a name="L5196"></a><tt class="py-lineno">5196</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5197"></a><tt class="py-lineno">5197</tt>  <tt class="py-line"><tt class="py-docstring">    Note: if you define a deep operator list, you may see performance issues\r</tt> </tt>
-<a name="L5198"></a><tt class="py-lineno">5198</tt>  <tt class="py-line"><tt class="py-docstring">    when using infixNotation. See L{ParserElement.enablePackrat} for a\r</tt> </tt>
-<a name="L5199"></a><tt class="py-lineno">5199</tt>  <tt class="py-line"><tt class="py-docstring">    mechanism to potentially improve your parser performance.\r</tt> </tt>
-<a name="L5200"></a><tt class="py-lineno">5200</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5201"></a><tt class="py-lineno">5201</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L5202"></a><tt class="py-lineno">5202</tt>  <tt class="py-line"><tt class="py-docstring">     - baseExpr - expression representing the most basic element for the nested\r</tt> </tt>
-<a name="L5203"></a><tt class="py-lineno">5203</tt>  <tt class="py-line"><tt class="py-docstring">     - opList - list of tuples, one for each operator precedence level in the\r</tt> </tt>
-<a name="L5204"></a><tt class="py-lineno">5204</tt>  <tt class="py-line"><tt class="py-docstring">      expression grammar; each tuple is of the form\r</tt> </tt>
-<a name="L5205"></a><tt class="py-lineno">5205</tt>  <tt class="py-line"><tt class="py-docstring">      (opExpr, numTerms, rightLeftAssoc, parseAction), where:\r</tt> </tt>
-<a name="L5206"></a><tt class="py-lineno">5206</tt>  <tt class="py-line"><tt class="py-docstring">       - opExpr is the pyparsing expression for the operator;\r</tt> </tt>
-<a name="L5207"></a><tt class="py-lineno">5207</tt>  <tt class="py-line"><tt class="py-docstring">          may also be a string, which will be converted to a Literal;\r</tt> </tt>
-<a name="L5208"></a><tt class="py-lineno">5208</tt>  <tt class="py-line"><tt class="py-docstring">          if numTerms is 3, opExpr is a tuple of two expressions, for the\r</tt> </tt>
-<a name="L5209"></a><tt class="py-lineno">5209</tt>  <tt class="py-line"><tt class="py-docstring">          two operators separating the 3 terms\r</tt> </tt>
-<a name="L5210"></a><tt class="py-lineno">5210</tt>  <tt class="py-line"><tt class="py-docstring">       - numTerms is the number of terms for this operator (must\r</tt> </tt>
-<a name="L5211"></a><tt class="py-lineno">5211</tt>  <tt class="py-line"><tt class="py-docstring">          be 1, 2, or 3)\r</tt> </tt>
-<a name="L5212"></a><tt class="py-lineno">5212</tt>  <tt class="py-line"><tt class="py-docstring">       - rightLeftAssoc is the indicator whether the operator is\r</tt> </tt>
-<a name="L5213"></a><tt class="py-lineno">5213</tt>  <tt class="py-line"><tt class="py-docstring">          right or left associative, using the pyparsing-defined\r</tt> </tt>
-<a name="L5214"></a><tt class="py-lineno">5214</tt>  <tt class="py-line"><tt class="py-docstring">          constants C{opAssoc.RIGHT} and C{opAssoc.LEFT}.\r</tt> </tt>
-<a name="L5215"></a><tt class="py-lineno">5215</tt>  <tt class="py-line"><tt class="py-docstring">       - parseAction is the parse action to be associated with\r</tt> </tt>
-<a name="L5216"></a><tt class="py-lineno">5216</tt>  <tt class="py-line"><tt class="py-docstring">          expressions matching this operator expression (the\r</tt> </tt>
-<a name="L5217"></a><tt class="py-lineno">5217</tt>  <tt class="py-line"><tt class="py-docstring">          parse action tuple member may be omitted); if the parse action\r</tt> </tt>
-<a name="L5218"></a><tt class="py-lineno">5218</tt>  <tt class="py-line"><tt class="py-docstring">          is passed a tuple or list of functions, this is equivalent to\r</tt> </tt>
-<a name="L5219"></a><tt class="py-lineno">5219</tt>  <tt class="py-line"><tt class="py-docstring">          calling C{setParseAction(*fn)} (L{ParserElement.setParseAction})\r</tt> </tt>
-<a name="L5220"></a><tt class="py-lineno">5220</tt>  <tt class="py-line"><tt class="py-docstring">     - lpar - expression for matching left-parentheses (default=C{Suppress('(')})\r</tt> </tt>
-<a name="L5221"></a><tt class="py-lineno">5221</tt>  <tt class="py-line"><tt class="py-docstring">     - rpar - expression for matching right-parentheses (default=C{Suppress(')')})\r</tt> </tt>
-<a name="L5222"></a><tt class="py-lineno">5222</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5223"></a><tt class="py-lineno">5223</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5224"></a><tt class="py-lineno">5224</tt>  <tt class="py-line"><tt class="py-docstring">        # simple example of four-function arithmetic with ints and variable names\r</tt> </tt>
-<a name="L5225"></a><tt class="py-lineno">5225</tt>  <tt class="py-line"><tt class="py-docstring">        integer = pyparsing_common.signed_integer\r</tt> </tt>
-<a name="L5226"></a><tt class="py-lineno">5226</tt>  <tt class="py-line"><tt class="py-docstring">        varname = pyparsing_common.identifier\r</tt> </tt>
-<a name="L5227"></a><tt class="py-lineno">5227</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5228"></a><tt class="py-lineno">5228</tt>  <tt class="py-line"><tt class="py-docstring">        arith_expr = infixNotation(integer | varname,\r</tt> </tt>
-<a name="L5229"></a><tt class="py-lineno">5229</tt>  <tt class="py-line"><tt class="py-docstring">            [\r</tt> </tt>
-<a name="L5230"></a><tt class="py-lineno">5230</tt>  <tt class="py-line"><tt class="py-docstring">            ('-', 1, opAssoc.RIGHT),\r</tt> </tt>
-<a name="L5231"></a><tt class="py-lineno">5231</tt>  <tt class="py-line"><tt class="py-docstring">            (oneOf('* /'), 2, opAssoc.LEFT),\r</tt> </tt>
-<a name="L5232"></a><tt class="py-lineno">5232</tt>  <tt class="py-line"><tt class="py-docstring">            (oneOf('+ -'), 2, opAssoc.LEFT),\r</tt> </tt>
-<a name="L5233"></a><tt class="py-lineno">5233</tt>  <tt class="py-line"><tt class="py-docstring">            ])\r</tt> </tt>
-<a name="L5234"></a><tt class="py-lineno">5234</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5235"></a><tt class="py-lineno">5235</tt>  <tt class="py-line"><tt class="py-docstring">        arith_expr.runTests('''\r</tt> </tt>
-<a name="L5236"></a><tt class="py-lineno">5236</tt>  <tt class="py-line"><tt class="py-docstring">            5+3*6\r</tt> </tt>
-<a name="L5237"></a><tt class="py-lineno">5237</tt>  <tt class="py-line"><tt class="py-docstring">            (5+3)*6\r</tt> </tt>
-<a name="L5238"></a><tt class="py-lineno">5238</tt>  <tt class="py-line"><tt class="py-docstring">            -2--11\r</tt> </tt>
-<a name="L5239"></a><tt class="py-lineno">5239</tt>  <tt class="py-line"><tt class="py-docstring">            ''', fullDump=False)\r</tt> </tt>
-<a name="L5240"></a><tt class="py-lineno">5240</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5241"></a><tt class="py-lineno">5241</tt>  <tt class="py-line"><tt class="py-docstring">        5+3*6\r</tt> </tt>
-<a name="L5242"></a><tt class="py-lineno">5242</tt>  <tt class="py-line"><tt class="py-docstring">        [[5, '+', [3, '*', 6]]]\r</tt> </tt>
-<a name="L5243"></a><tt class="py-lineno">5243</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5244"></a><tt class="py-lineno">5244</tt>  <tt class="py-line"><tt class="py-docstring">        (5+3)*6\r</tt> </tt>
-<a name="L5245"></a><tt class="py-lineno">5245</tt>  <tt class="py-line"><tt class="py-docstring">        [[[5, '+', 3], '*', 6]]\r</tt> </tt>
-<a name="L5246"></a><tt class="py-lineno">5246</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5247"></a><tt class="py-lineno">5247</tt>  <tt class="py-line"><tt class="py-docstring">        -2--11\r</tt> </tt>
-<a name="L5248"></a><tt class="py-lineno">5248</tt>  <tt class="py-line"><tt class="py-docstring">        [[['-', 2], '-', ['-', 11]]]\r</tt> </tt>
-<a name="L5249"></a><tt class="py-lineno">5249</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5250"></a><tt class="py-lineno">5250</tt>  <tt class="py-line">    <tt class="py-comment"># captive version of FollowedBy that does not do parse actions or capture results names</tt>\r </tt>
-<a name="L5251"></a><tt class="py-lineno">5251</tt>  <tt class="py-line">    <tt class="py-keyword">class</tt> <tt class="py-def-name">_FB</tt><tt class="py-op">(</tt><tt class="py-base-class">FollowedBy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5252"></a><tt class="py-lineno">5252</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">parseImpl</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">instring</tt><tt class="py-op">,</tt> <tt class="py-param">loc</tt><tt class="py-op">,</tt> <tt class="py-param">doActions</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5253"></a><tt class="py-lineno">5253</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt><tt class="py-op">.</tt><tt id="link-869" class="py-name"><a title="pyparsing.ParserElement.tryParse" class="py-name" href="#" onclick="return doclink('link-869', 'tryParse', 'link-171');">tryParse</a></tt><tt class="py-op">(</tt><tt class="py-name">instring</tt><tt class="py-op">,</tt> <tt class="py-name">loc</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5254"></a><tt class="py-lineno">5254</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">loc</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L5255"></a><tt class="py-lineno">5255</tt>  <tt class="py-line">\r </tt>
-<a name="L5256"></a><tt class="py-lineno">5256</tt>  <tt class="py-line">    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-870" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-870', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5257"></a><tt class="py-lineno">5257</tt>  <tt class="py-line">    <tt class="py-name">lastExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">baseExpr</tt> <tt class="py-op">|</tt> <tt class="py-op">(</tt> <tt class="py-name">lpar</tt> <tt class="py-op">+</tt> <tt class="py-name">ret</tt> <tt class="py-op">+</tt> <tt class="py-name">rpar</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5258"></a><tt class="py-lineno">5258</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">operDef</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">opList</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5259"></a><tt class="py-lineno">5259</tt>  <tt class="py-line">        <tt class="py-name">opExpr</tt><tt class="py-op">,</tt><tt class="py-name">arity</tt><tt class="py-op">,</tt><tt class="py-name">rightLeftAssoc</tt><tt class="py-op">,</tt><tt class="py-name">pa</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">operDef</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L5260"></a><tt class="py-lineno">5260</tt>  <tt class="py-line">        <tt class="py-name">termName</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s term"</tt> <tt class="py-op">%</tt> <tt class="py-name">opExpr</tt> <tt class="py-keyword">if</tt> <tt class="py-name">arity</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">3</tt> <tt class="py-keyword">else</tt> <tt class="py-string">"%s%s term"</tt> <tt class="py-op">%</tt> <tt class="py-name">opExpr</tt> </tt>\r
-<a name="L5261"></a><tt class="py-lineno">5261</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5262"></a><tt class="py-lineno">5262</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">opExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">opExpr</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5263"></a><tt class="py-lineno">5263</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"if numterms=3, opExpr must be a tuple or list of two expressions"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5264"></a><tt class="py-lineno">5264</tt>  <tt class="py-line">            <tt class="py-name">opExpr1</tt><tt class="py-op">,</tt> <tt class="py-name">opExpr2</tt> <tt class="py-op">=</tt> <tt class="py-name">opExpr</tt> </tt>\r
-<a name="L5265"></a><tt class="py-lineno">5265</tt>  <tt class="py-line">        <tt class="py-name">thisExpr</tt> <tt class="py-op">=</tt> <tt id="link-871" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-871', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-872" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-872', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-name">termName</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5266"></a><tt class="py-lineno">5266</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rightLeftAssoc</tt> <tt class="py-op">==</tt> <tt id="link-873" class="py-name"><a title="pyparsing.opAssoc" class="py-name" href="#" onclick="return doclink('link-873', 'opAssoc', 'link-864');">opAssoc</a></tt><tt class="py-op">.</tt><tt class="py-name">LEFT</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5267"></a><tt class="py-lineno">5267</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5268"></a><tt class="py-lineno">5268</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-874" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-874', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt id="link-875" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-875', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5269"></a><tt class="py-lineno">5269</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5270"></a><tt class="py-lineno">5270</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">opExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5271"></a><tt class="py-lineno">5271</tt>  <tt class="py-line">                    <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-876" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-876', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt id="link-877" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-877', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5272"></a><tt class="py-lineno">5272</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5273"></a><tt class="py-lineno">5273</tt>  <tt class="py-line">                    <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt><tt class="py-op">+</tt><tt class="py-name">lastExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-878" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-878', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt id="link-879" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-879', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5274"></a><tt class="py-lineno">5274</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5275"></a><tt class="py-lineno">5275</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr1</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr2</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5276"></a><tt class="py-lineno">5276</tt>  <tt class="py-line">                            <tt id="link-880" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-880', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr1</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr2</tt> <tt class="py-op">+</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5277"></a><tt class="py-lineno">5277</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5278"></a><tt class="py-lineno">5278</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"operator must be unary (1), binary (2), or ternary (3)"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5279"></a><tt class="py-lineno">5279</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">rightLeftAssoc</tt> <tt class="py-op">==</tt> <tt id="link-881" class="py-name"><a title="pyparsing.opAssoc" class="py-name" href="#" onclick="return doclink('link-881', 'opAssoc', 'link-864');">opAssoc</a></tt><tt class="py-op">.</tt><tt class="py-name">RIGHT</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5280"></a><tt class="py-lineno">5280</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5281"></a><tt class="py-lineno">5281</tt>  <tt class="py-line">                <tt class="py-comment"># try to avoid LR with this extra test</tt>\r </tt>
-<a name="L5282"></a><tt class="py-lineno">5282</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">opExpr</tt><tt class="py-op">,</tt> <tt id="link-882" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-882', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5283"></a><tt class="py-lineno">5283</tt>  <tt class="py-line">                    <tt class="py-name">opExpr</tt> <tt class="py-op">=</tt> <tt id="link-883" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-883', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">opExpr</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5284"></a><tt class="py-lineno">5284</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">opExpr</tt><tt class="py-op">.</tt><tt class="py-name">expr</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-884" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-884', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5285"></a><tt class="py-lineno">5285</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5286"></a><tt class="py-lineno">5286</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">opExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5287"></a><tt class="py-lineno">5287</tt>  <tt class="py-line">                    <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-885" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-885', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt id="link-886" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-886', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">opExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5288"></a><tt class="py-lineno">5288</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5289"></a><tt class="py-lineno">5289</tt>  <tt class="py-line">                    <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-887" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-887', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt id="link-888" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-888', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5290"></a><tt class="py-lineno">5290</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">arity</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5291"></a><tt class="py-lineno">5291</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">_FB</tt><tt class="py-op">(</tt><tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr1</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr2</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \\r </tt>
-<a name="L5292"></a><tt class="py-lineno">5292</tt>  <tt class="py-line">                            <tt id="link-889" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-889', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr1</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">+</tt> <tt class="py-name">opExpr2</tt> <tt class="py-op">+</tt> <tt class="py-name">thisExpr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5293"></a><tt class="py-lineno">5293</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5294"></a><tt class="py-lineno">5294</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"operator must be unary (1), binary (2), or ternary (3)"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5295"></a><tt class="py-lineno">5295</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5296"></a><tt class="py-lineno">5296</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"operator must indicate right or left associativity"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5297"></a><tt class="py-lineno">5297</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pa</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5298"></a><tt class="py-lineno">5298</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pa</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">tuple</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5299"></a><tt class="py-lineno">5299</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt><tt class="py-op">.</tt><tt id="link-890" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-890', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">pa</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5300"></a><tt class="py-lineno">5300</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5301"></a><tt class="py-lineno">5301</tt>  <tt class="py-line">                <tt class="py-name">matchExpr</tt><tt class="py-op">.</tt><tt id="link-891" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-891', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">pa</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5302"></a><tt class="py-lineno">5302</tt>  <tt class="py-line">        <tt class="py-name">thisExpr</tt> <tt class="py-op">&lt;&lt;=</tt> <tt class="py-op">(</tt> <tt class="py-name">matchExpr</tt><tt class="py-op">.</tt><tt id="link-892" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-892', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-name">termName</tt><tt class="py-op">)</tt> <tt class="py-op">|</tt> <tt class="py-name">lastExpr</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5303"></a><tt class="py-lineno">5303</tt>  <tt class="py-line">        <tt class="py-name">lastExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">thisExpr</tt> </tt>\r
-<a name="L5304"></a><tt class="py-lineno">5304</tt>  <tt class="py-line">    <tt class="py-name">ret</tt> <tt class="py-op">&lt;&lt;=</tt> <tt class="py-name">lastExpr</tt> </tt>\r
-<a name="L5305"></a><tt class="py-lineno">5305</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L5306"></a><tt class="py-lineno">5306</tt>  <tt class="py-line">\r </tt>
-<a name="L5307"></a><tt class="py-lineno">5307</tt>  <tt class="py-line"><tt class="py-name">operatorPrecedence</tt> <tt class="py-op">=</tt> <tt id="link-893" class="py-name" targets="Function pyparsing.infixNotation()=pyparsing-module.html#infixNotation"><a title="pyparsing.infixNotation" class="py-name" href="#" onclick="return doclink('link-893', 'infixNotation', 'link-893');">infixNotation</a></tt> </tt>\r
-<a name="L5308"></a><tt class="py-lineno">5308</tt>  <tt class="py-line"><tt class="py-string">"""(Deprecated) Former name of C{L{infixNotation}}, will be dropped in a future release."""</tt> </tt>\r
-<a name="L5309"></a><tt class="py-lineno">5309</tt>  <tt class="py-line">\r </tt>
-<a name="L5310"></a><tt class="py-lineno">5310</tt>  <tt class="py-line"><tt id="link-894" class="py-name"><a title="pyparsing.dblQuotedString" class="py-name" href="#" onclick="return doclink('link-894', 'dblQuotedString', 'link-820');">dblQuotedString</a></tt> <tt class="py-op">=</tt> <tt id="link-895" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-895', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-896" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-896', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-897" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-897', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"string enclosed in double quotes"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5311"></a><tt class="py-lineno">5311</tt>  <tt class="py-line"><tt id="link-898" class="py-name" targets="Variable pyparsing.sglQuotedString=pyparsing-module.html#sglQuotedString"><a title="pyparsing.sglQuotedString" class="py-name" href="#" onclick="return doclink('link-898', 'sglQuotedString', 'link-898');">sglQuotedString</a></tt> <tt class="py-op">=</tt> <tt id="link-899" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-899', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-900" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-900', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*"</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">"'"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-901" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-901', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"string enclosed in single quotes"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5312"></a><tt class="py-lineno">5312</tt>  <tt class="py-line"><tt id="link-902" class="py-name"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-902', 'quotedString', 'link-834');">quotedString</a></tt> <tt class="py-op">=</tt> <tt id="link-903" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-903', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-904" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-904', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'"'</tt><tt class="py-op">|</tt>\r </tt>
-<a name="L5313"></a><tt class="py-lineno">5313</tt>  <tt class="py-line">                       <tt id="link-905" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-905', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*"</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">"'"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-906" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-906', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"quotedString using single or double quotes"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5314"></a><tt class="py-lineno">5314</tt>  <tt class="py-line"><tt id="link-907" class="py-name" targets="Variable pyparsing.unicodeString=pyparsing-module.html#unicodeString"><a title="pyparsing.unicodeString" class="py-name" href="#" onclick="return doclink('link-907', 'unicodeString', 'link-907');">unicodeString</a></tt> <tt class="py-op">=</tt> <tt id="link-908" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-908', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt class="py-name">_L</tt><tt class="py-op">(</tt><tt class="py-string">'u'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-909" class="py-name"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-909', 'quotedString', 'link-834');">quotedString</a></tt><tt class="py-op">.</tt><tt id="link-910" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-910', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-911" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-911', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"unicode string literal"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="nestedExpr"></a><div id="nestedExpr-def"><a name="L5315"></a><tt class="py-lineno">5315</tt>  <tt class="py-line">\r </tt>
-<a name="L5316"></a><tt class="py-lineno">5316</tt> <a class="py-toggle" href="#" id="nestedExpr-toggle" onclick="return toggle('nestedExpr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#nestedExpr">nestedExpr</a><tt class="py-op">(</tt><tt class="py-param">opener</tt><tt class="py-op">=</tt><tt class="py-string">"("</tt><tt class="py-op">,</tt> <tt class="py-param">closer</tt><tt class="py-op">=</tt><tt class="py-string">")"</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">ignoreExpr</tt><tt class="py-op">=</tt><tt id="link-912" class="py-name"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-912', 'quotedString', 'link-834');">quotedString</a></tt><tt class="py-op">.</tt><tt id="link-913" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-913', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="nestedExpr-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="nestedExpr-expanded"><a name="L5317"></a><tt class="py-lineno">5317</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5318"></a><tt class="py-lineno">5318</tt>  <tt class="py-line"><tt class="py-docstring">    Helper method for defining nested lists enclosed in opening and closing\r</tt> </tt>
-<a name="L5319"></a><tt class="py-lineno">5319</tt>  <tt class="py-line"><tt class="py-docstring">    delimiters ("(" and ")" are the default).\r</tt> </tt>
-<a name="L5320"></a><tt class="py-lineno">5320</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5321"></a><tt class="py-lineno">5321</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L5322"></a><tt class="py-lineno">5322</tt>  <tt class="py-line"><tt class="py-docstring">     - opener - opening character for a nested list (default=C{"("}); can also be a pyparsing expression\r</tt> </tt>
-<a name="L5323"></a><tt class="py-lineno">5323</tt>  <tt class="py-line"><tt class="py-docstring">     - closer - closing character for a nested list (default=C{")"}); can also be a pyparsing expression\r</tt> </tt>
-<a name="L5324"></a><tt class="py-lineno">5324</tt>  <tt class="py-line"><tt class="py-docstring">     - content - expression for items within the nested lists (default=C{None})\r</tt> </tt>
-<a name="L5325"></a><tt class="py-lineno">5325</tt>  <tt class="py-line"><tt class="py-docstring">     - ignoreExpr - expression for ignoring opening and closing delimiters (default=C{quotedString})\r</tt> </tt>
-<a name="L5326"></a><tt class="py-lineno">5326</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5327"></a><tt class="py-lineno">5327</tt>  <tt class="py-line"><tt class="py-docstring">    If an expression is not provided for the content argument, the nested\r</tt> </tt>
-<a name="L5328"></a><tt class="py-lineno">5328</tt>  <tt class="py-line"><tt class="py-docstring">    expression will capture all whitespace-delimited content between delimiters\r</tt> </tt>
-<a name="L5329"></a><tt class="py-lineno">5329</tt>  <tt class="py-line"><tt class="py-docstring">    as a list of separate values.\r</tt> </tt>
-<a name="L5330"></a><tt class="py-lineno">5330</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5331"></a><tt class="py-lineno">5331</tt>  <tt class="py-line"><tt class="py-docstring">    Use the C{ignoreExpr} argument to define expressions that may contain\r</tt> </tt>
-<a name="L5332"></a><tt class="py-lineno">5332</tt>  <tt class="py-line"><tt class="py-docstring">    opening or closing characters that should not be treated as opening\r</tt> </tt>
-<a name="L5333"></a><tt class="py-lineno">5333</tt>  <tt class="py-line"><tt class="py-docstring">    or closing characters for nesting, such as quotedString or a comment\r</tt> </tt>
-<a name="L5334"></a><tt class="py-lineno">5334</tt>  <tt class="py-line"><tt class="py-docstring">    expression.  Specify multiple expressions using an C{L{Or}} or C{L{MatchFirst}}.\r</tt> </tt>
-<a name="L5335"></a><tt class="py-lineno">5335</tt>  <tt class="py-line"><tt class="py-docstring">    The default is L{quotedString}, but if no expressions are to be ignored,\r</tt> </tt>
-<a name="L5336"></a><tt class="py-lineno">5336</tt>  <tt class="py-line"><tt class="py-docstring">    then pass C{None} for this argument.\r</tt> </tt>
-<a name="L5337"></a><tt class="py-lineno">5337</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5338"></a><tt class="py-lineno">5338</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5339"></a><tt class="py-lineno">5339</tt>  <tt class="py-line"><tt class="py-docstring">        data_type = oneOf("void int short long char float double")\r</tt> </tt>
-<a name="L5340"></a><tt class="py-lineno">5340</tt>  <tt class="py-line"><tt class="py-docstring">        decl_data_type = Combine(data_type + Optional(Word('*')))\r</tt> </tt>
-<a name="L5341"></a><tt class="py-lineno">5341</tt>  <tt class="py-line"><tt class="py-docstring">        ident = Word(alphas+'_', alphanums+'_')\r</tt> </tt>
-<a name="L5342"></a><tt class="py-lineno">5342</tt>  <tt class="py-line"><tt class="py-docstring">        number = pyparsing_common.number\r</tt> </tt>
-<a name="L5343"></a><tt class="py-lineno">5343</tt>  <tt class="py-line"><tt class="py-docstring">        arg = Group(decl_data_type + ident)\r</tt> </tt>
-<a name="L5344"></a><tt class="py-lineno">5344</tt>  <tt class="py-line"><tt class="py-docstring">        LPAR,RPAR = map(Suppress, "()")\r</tt> </tt>
-<a name="L5345"></a><tt class="py-lineno">5345</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5346"></a><tt class="py-lineno">5346</tt>  <tt class="py-line"><tt class="py-docstring">        code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment))\r</tt> </tt>
-<a name="L5347"></a><tt class="py-lineno">5347</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5348"></a><tt class="py-lineno">5348</tt>  <tt class="py-line"><tt class="py-docstring">        c_function = (decl_data_type("type")\r</tt> </tt>
-<a name="L5349"></a><tt class="py-lineno">5349</tt>  <tt class="py-line"><tt class="py-docstring">                      + ident("name")\r</tt> </tt>
-<a name="L5350"></a><tt class="py-lineno">5350</tt>  <tt class="py-line"><tt class="py-docstring">                      + LPAR + Optional(delimitedList(arg), [])("args") + RPAR\r</tt> </tt>
-<a name="L5351"></a><tt class="py-lineno">5351</tt>  <tt class="py-line"><tt class="py-docstring">                      + code_body("body"))\r</tt> </tt>
-<a name="L5352"></a><tt class="py-lineno">5352</tt>  <tt class="py-line"><tt class="py-docstring">        c_function.ignore(cStyleComment)\r</tt> </tt>
-<a name="L5353"></a><tt class="py-lineno">5353</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5354"></a><tt class="py-lineno">5354</tt>  <tt class="py-line"><tt class="py-docstring">        source_code = '''\r</tt> </tt>
-<a name="L5355"></a><tt class="py-lineno">5355</tt>  <tt class="py-line"><tt class="py-docstring">            int is_odd(int x) {\r</tt> </tt>
-<a name="L5356"></a><tt class="py-lineno">5356</tt>  <tt class="py-line"><tt class="py-docstring">                return (x%2);\r</tt> </tt>
-<a name="L5357"></a><tt class="py-lineno">5357</tt>  <tt class="py-line"><tt class="py-docstring">            }\r</tt> </tt>
-<a name="L5358"></a><tt class="py-lineno">5358</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5359"></a><tt class="py-lineno">5359</tt>  <tt class="py-line"><tt class="py-docstring">            int dec_to_hex(char hchar) {\r</tt> </tt>
-<a name="L5360"></a><tt class="py-lineno">5360</tt>  <tt class="py-line"><tt class="py-docstring">                if (hchar &gt;= '0' &amp;&amp; hchar &lt;= '9') {\r</tt> </tt>
-<a name="L5361"></a><tt class="py-lineno">5361</tt>  <tt class="py-line"><tt class="py-docstring">                    return (ord(hchar)-ord('0'));\r</tt> </tt>
-<a name="L5362"></a><tt class="py-lineno">5362</tt>  <tt class="py-line"><tt class="py-docstring">                } else {\r</tt> </tt>
-<a name="L5363"></a><tt class="py-lineno">5363</tt>  <tt class="py-line"><tt class="py-docstring">                    return (10+ord(hchar)-ord('A'));\r</tt> </tt>
-<a name="L5364"></a><tt class="py-lineno">5364</tt>  <tt class="py-line"><tt class="py-docstring">                }\r</tt> </tt>
-<a name="L5365"></a><tt class="py-lineno">5365</tt>  <tt class="py-line"><tt class="py-docstring">            }\r</tt> </tt>
-<a name="L5366"></a><tt class="py-lineno">5366</tt>  <tt class="py-line"><tt class="py-docstring">        '''\r</tt> </tt>
-<a name="L5367"></a><tt class="py-lineno">5367</tt>  <tt class="py-line"><tt class="py-docstring">        for func in c_function.searchString(source_code):\r</tt> </tt>
-<a name="L5368"></a><tt class="py-lineno">5368</tt>  <tt class="py-line"><tt class="py-docstring">            print("%(name)s (%(type)s) args: %(args)s" % func)\r</tt> </tt>
-<a name="L5369"></a><tt class="py-lineno">5369</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5370"></a><tt class="py-lineno">5370</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5371"></a><tt class="py-lineno">5371</tt>  <tt class="py-line"><tt class="py-docstring">        is_odd (int) args: [['int', 'x']]\r</tt> </tt>
-<a name="L5372"></a><tt class="py-lineno">5372</tt>  <tt class="py-line"><tt class="py-docstring">        dec_to_hex (int) args: [['char', 'hchar']]\r</tt> </tt>
-<a name="L5373"></a><tt class="py-lineno">5373</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5374"></a><tt class="py-lineno">5374</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">opener</tt> <tt class="py-op">==</tt> <tt class="py-name">closer</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5375"></a><tt class="py-lineno">5375</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"opening and closing strings cannot be the same"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5376"></a><tt class="py-lineno">5376</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5377"></a><tt class="py-lineno">5377</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">,</tt><tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5378"></a><tt class="py-lineno">5378</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5379"></a><tt class="py-lineno">5379</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">ignoreExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5380"></a><tt class="py-lineno">5380</tt>  <tt class="py-line">                    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-914" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-914', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-915" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-915', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-op">~</tt><tt class="py-name">ignoreExpr</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5381"></a><tt class="py-lineno">5381</tt>  <tt class="py-line">                                    <tt id="link-916" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-916', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">+</tt><tt class="py-name">closer</tt><tt class="py-op">+</tt><tt id="link-917" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-917', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-918" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-918', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt><tt class="py-op">,</tt><tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L5382"></a><tt class="py-lineno">5382</tt>  <tt class="py-line">                                <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-919" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-919', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5383"></a><tt class="py-lineno">5383</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5384"></a><tt class="py-lineno">5384</tt>  <tt class="py-line">                    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-920" class="py-name"><a title="pyparsing.empty" class="py-name" href="#" onclick="return doclink('link-920', 'empty', 'link-710');">empty</a></tt><tt class="py-op">.</tt><tt id="link-921" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-921', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt id="link-922" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-922', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">+</tt><tt class="py-name">closer</tt><tt class="py-op">+</tt><tt id="link-923" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-923', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-924" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-924', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt>\r </tt>
-<a name="L5385"></a><tt class="py-lineno">5385</tt>  <tt class="py-line">                                <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-925" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-925', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5386"></a><tt class="py-lineno">5386</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5387"></a><tt class="py-lineno">5387</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">ignoreExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5388"></a><tt class="py-lineno">5388</tt>  <tt class="py-line">                    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-926" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-926', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-927" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-927', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-op">~</tt><tt class="py-name">ignoreExpr</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5389"></a><tt class="py-lineno">5389</tt>  <tt class="py-line">                                    <tt class="py-op">~</tt><tt id="link-928" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-928', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">~</tt><tt id="link-929" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-929', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5390"></a><tt class="py-lineno">5390</tt>  <tt class="py-line">                                    <tt id="link-930" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-930', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">(</tt><tt id="link-931" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-931', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-932" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-932', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt><tt class="py-op">,</tt><tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L5391"></a><tt class="py-lineno">5391</tt>  <tt class="py-line">                                <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-933" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-933', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5392"></a><tt class="py-lineno">5392</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5393"></a><tt class="py-lineno">5393</tt>  <tt class="py-line">                    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-934" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-934', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-935" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-935', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-op">~</tt><tt id="link-936" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-936', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">~</tt><tt id="link-937" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-937', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5394"></a><tt class="py-lineno">5394</tt>  <tt class="py-line">                                    <tt id="link-938" class="py-name"><a title="pyparsing.CharsNotIn" class="py-name" href="#" onclick="return doclink('link-938', 'CharsNotIn', 'link-453');">CharsNotIn</a></tt><tt class="py-op">(</tt><tt id="link-939" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-939', 'ParserElement', 'link-130');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-940" class="py-name"><a title="pyparsing.ParserElement.DEFAULT_WHITE_CHARS" class="py-name" href="#" onclick="return doclink('link-940', 'DEFAULT_WHITE_CHARS', 'link-128');">DEFAULT_WHITE_CHARS</a></tt><tt class="py-op">,</tt><tt class="py-name">exact</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L5395"></a><tt class="py-lineno">5395</tt>  <tt class="py-line">                                <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-941" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-941', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5396"></a><tt class="py-lineno">5396</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5397"></a><tt class="py-lineno">5397</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"opening and closing arguments must be strings if no content expression is given"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5398"></a><tt class="py-lineno">5398</tt>  <tt class="py-line">    <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-942" class="py-name"><a title="pyparsing.Forward" class="py-name" href="#" onclick="return doclink('link-942', 'Forward', 'link-667');">Forward</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5399"></a><tt class="py-lineno">5399</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">ignoreExpr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5400"></a><tt class="py-lineno">5400</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">&lt;&lt;=</tt> <tt id="link-943" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-943', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt id="link-944" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-944', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-945" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-945', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">ignoreExpr</tt> <tt class="py-op">|</tt> <tt class="py-name">ret</tt> <tt class="py-op">|</tt> <tt class="py-name">content</tt> <tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-946" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-946', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5401"></a><tt class="py-lineno">5401</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5402"></a><tt class="py-lineno">5402</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">&lt;&lt;=</tt> <tt id="link-947" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-947', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt id="link-948" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-948', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-949" class="py-name"><a title="pyparsing.ZeroOrMore" class="py-name" href="#" onclick="return doclink('link-949', 'ZeroOrMore', 'link-282');">ZeroOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">ret</tt> <tt class="py-op">|</tt> <tt class="py-name">content</tt> <tt class="py-op">)</tt>  <tt class="py-op">+</tt> <tt id="link-950" class="py-name"><a title="pyparsing.Suppress" class="py-name" href="#" onclick="return doclink('link-950', 'Suppress', 'link-308');">Suppress</a></tt><tt class="py-op">(</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5403"></a><tt class="py-lineno">5403</tt>  <tt class="py-line">    <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt id="link-951" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-951', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'nested %s%s expression'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">opener</tt><tt class="py-op">,</tt><tt class="py-name">closer</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5404"></a><tt class="py-lineno">5404</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div><a name="L5405"></a><tt class="py-lineno">5405</tt>  <tt class="py-line">\r </tt>
-<a name="indentedBlock"></a><div id="indentedBlock-def"><a name="L5406"></a><tt class="py-lineno">5406</tt> <a class="py-toggle" href="#" id="indentedBlock-toggle" onclick="return toggle('indentedBlock');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#indentedBlock">indentedBlock</a><tt class="py-op">(</tt><tt class="py-param">blockStatementExpr</tt><tt class="py-op">,</tt> <tt class="py-param">indentStack</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="indentedBlock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="indentedBlock-expanded"><a name="L5407"></a><tt class="py-lineno">5407</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5408"></a><tt class="py-lineno">5408</tt>  <tt class="py-line"><tt class="py-docstring">    Helper method for defining space-delimited indentation blocks, such as\r</tt> </tt>
-<a name="L5409"></a><tt class="py-lineno">5409</tt>  <tt class="py-line"><tt class="py-docstring">    those used to define block statements in Python source code.\r</tt> </tt>
-<a name="L5410"></a><tt class="py-lineno">5410</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5411"></a><tt class="py-lineno">5411</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters:\r</tt> </tt>
-<a name="L5412"></a><tt class="py-lineno">5412</tt>  <tt class="py-line"><tt class="py-docstring">     - blockStatementExpr - expression defining syntax of statement that\r</tt> </tt>
-<a name="L5413"></a><tt class="py-lineno">5413</tt>  <tt class="py-line"><tt class="py-docstring">            is repeated within the indented block\r</tt> </tt>
-<a name="L5414"></a><tt class="py-lineno">5414</tt>  <tt class="py-line"><tt class="py-docstring">     - indentStack - list created by caller to manage indentation stack\r</tt> </tt>
-<a name="L5415"></a><tt class="py-lineno">5415</tt>  <tt class="py-line"><tt class="py-docstring">            (multiple statementWithIndentedBlock expressions within a single grammar\r</tt> </tt>
-<a name="L5416"></a><tt class="py-lineno">5416</tt>  <tt class="py-line"><tt class="py-docstring">            should share a common indentStack)\r</tt> </tt>
-<a name="L5417"></a><tt class="py-lineno">5417</tt>  <tt class="py-line"><tt class="py-docstring">     - indent - boolean indicating whether block must be indented beyond the\r</tt> </tt>
-<a name="L5418"></a><tt class="py-lineno">5418</tt>  <tt class="py-line"><tt class="py-docstring">            the current level; set to False for block of left-most statements\r</tt> </tt>
-<a name="L5419"></a><tt class="py-lineno">5419</tt>  <tt class="py-line"><tt class="py-docstring">            (default=C{True})\r</tt> </tt>
-<a name="L5420"></a><tt class="py-lineno">5420</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5421"></a><tt class="py-lineno">5421</tt>  <tt class="py-line"><tt class="py-docstring">    A valid block must contain at least one C{blockStatement}.\r</tt> </tt>
-<a name="L5422"></a><tt class="py-lineno">5422</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5423"></a><tt class="py-lineno">5423</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5424"></a><tt class="py-lineno">5424</tt>  <tt class="py-line"><tt class="py-docstring">        data = '''\r</tt> </tt>
-<a name="L5425"></a><tt class="py-lineno">5425</tt>  <tt class="py-line"><tt class="py-docstring">        def A(z):\r</tt> </tt>
-<a name="L5426"></a><tt class="py-lineno">5426</tt>  <tt class="py-line"><tt class="py-docstring">          A1\r</tt> </tt>
-<a name="L5427"></a><tt class="py-lineno">5427</tt>  <tt class="py-line"><tt class="py-docstring">          B = 100\r</tt> </tt>
-<a name="L5428"></a><tt class="py-lineno">5428</tt>  <tt class="py-line"><tt class="py-docstring">          G = A2\r</tt> </tt>
-<a name="L5429"></a><tt class="py-lineno">5429</tt>  <tt class="py-line"><tt class="py-docstring">          A2\r</tt> </tt>
-<a name="L5430"></a><tt class="py-lineno">5430</tt>  <tt class="py-line"><tt class="py-docstring">          A3\r</tt> </tt>
-<a name="L5431"></a><tt class="py-lineno">5431</tt>  <tt class="py-line"><tt class="py-docstring">        B\r</tt> </tt>
-<a name="L5432"></a><tt class="py-lineno">5432</tt>  <tt class="py-line"><tt class="py-docstring">        def BB(a,b,c):\r</tt> </tt>
-<a name="L5433"></a><tt class="py-lineno">5433</tt>  <tt class="py-line"><tt class="py-docstring">          BB1\r</tt> </tt>
-<a name="L5434"></a><tt class="py-lineno">5434</tt>  <tt class="py-line"><tt class="py-docstring">          def BBA():\r</tt> </tt>
-<a name="L5435"></a><tt class="py-lineno">5435</tt>  <tt class="py-line"><tt class="py-docstring">            bba1\r</tt> </tt>
-<a name="L5436"></a><tt class="py-lineno">5436</tt>  <tt class="py-line"><tt class="py-docstring">            bba2\r</tt> </tt>
-<a name="L5437"></a><tt class="py-lineno">5437</tt>  <tt class="py-line"><tt class="py-docstring">            bba3\r</tt> </tt>
-<a name="L5438"></a><tt class="py-lineno">5438</tt>  <tt class="py-line"><tt class="py-docstring">        C\r</tt> </tt>
-<a name="L5439"></a><tt class="py-lineno">5439</tt>  <tt class="py-line"><tt class="py-docstring">        D\r</tt> </tt>
-<a name="L5440"></a><tt class="py-lineno">5440</tt>  <tt class="py-line"><tt class="py-docstring">        def spam(x,y):\r</tt> </tt>
-<a name="L5441"></a><tt class="py-lineno">5441</tt>  <tt class="py-line"><tt class="py-docstring">             def eggs(z):\r</tt> </tt>
-<a name="L5442"></a><tt class="py-lineno">5442</tt>  <tt class="py-line"><tt class="py-docstring">                 pass\r</tt> </tt>
-<a name="L5443"></a><tt class="py-lineno">5443</tt>  <tt class="py-line"><tt class="py-docstring">        '''\r</tt> </tt>
-<a name="L5444"></a><tt class="py-lineno">5444</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5445"></a><tt class="py-lineno">5445</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5446"></a><tt class="py-lineno">5446</tt>  <tt class="py-line"><tt class="py-docstring">        indentStack = [1]\r</tt> </tt>
-<a name="L5447"></a><tt class="py-lineno">5447</tt>  <tt class="py-line"><tt class="py-docstring">        stmt = Forward()\r</tt> </tt>
-<a name="L5448"></a><tt class="py-lineno">5448</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5449"></a><tt class="py-lineno">5449</tt>  <tt class="py-line"><tt class="py-docstring">        identifier = Word(alphas, alphanums)\r</tt> </tt>
-<a name="L5450"></a><tt class="py-lineno">5450</tt>  <tt class="py-line"><tt class="py-docstring">        funcDecl = ("def" + identifier + Group( "(" + Optional( delimitedList(identifier) ) + ")" ) + ":")\r</tt> </tt>
-<a name="L5451"></a><tt class="py-lineno">5451</tt>  <tt class="py-line"><tt class="py-docstring">        func_body = indentedBlock(stmt, indentStack)\r</tt> </tt>
-<a name="L5452"></a><tt class="py-lineno">5452</tt>  <tt class="py-line"><tt class="py-docstring">        funcDef = Group( funcDecl + func_body )\r</tt> </tt>
-<a name="L5453"></a><tt class="py-lineno">5453</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5454"></a><tt class="py-lineno">5454</tt>  <tt class="py-line"><tt class="py-docstring">        rvalue = Forward()\r</tt> </tt>
-<a name="L5455"></a><tt class="py-lineno">5455</tt>  <tt class="py-line"><tt class="py-docstring">        funcCall = Group(identifier + "(" + Optional(delimitedList(rvalue)) + ")")\r</tt> </tt>
-<a name="L5456"></a><tt class="py-lineno">5456</tt>  <tt class="py-line"><tt class="py-docstring">        rvalue &lt;&lt; (funcCall | identifier | Word(nums))\r</tt> </tt>
-<a name="L5457"></a><tt class="py-lineno">5457</tt>  <tt class="py-line"><tt class="py-docstring">        assignment = Group(identifier + "=" + rvalue)\r</tt> </tt>
-<a name="L5458"></a><tt class="py-lineno">5458</tt>  <tt class="py-line"><tt class="py-docstring">        stmt &lt;&lt; ( funcDef | assignment | identifier )\r</tt> </tt>
-<a name="L5459"></a><tt class="py-lineno">5459</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5460"></a><tt class="py-lineno">5460</tt>  <tt class="py-line"><tt class="py-docstring">        module_body = OneOrMore(stmt)\r</tt> </tt>
-<a name="L5461"></a><tt class="py-lineno">5461</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5462"></a><tt class="py-lineno">5462</tt>  <tt class="py-line"><tt class="py-docstring">        parseTree = module_body.parseString(data)\r</tt> </tt>
-<a name="L5463"></a><tt class="py-lineno">5463</tt>  <tt class="py-line"><tt class="py-docstring">        parseTree.pprint()\r</tt> </tt>
-<a name="L5464"></a><tt class="py-lineno">5464</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5465"></a><tt class="py-lineno">5465</tt>  <tt class="py-line"><tt class="py-docstring">        [['def',\r</tt> </tt>
-<a name="L5466"></a><tt class="py-lineno">5466</tt>  <tt class="py-line"><tt class="py-docstring">          'A',\r</tt> </tt>
-<a name="L5467"></a><tt class="py-lineno">5467</tt>  <tt class="py-line"><tt class="py-docstring">          ['(', 'z', ')'],\r</tt> </tt>
-<a name="L5468"></a><tt class="py-lineno">5468</tt>  <tt class="py-line"><tt class="py-docstring">          ':',\r</tt> </tt>
-<a name="L5469"></a><tt class="py-lineno">5469</tt>  <tt class="py-line"><tt class="py-docstring">          [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]],\r</tt> </tt>
-<a name="L5470"></a><tt class="py-lineno">5470</tt>  <tt class="py-line"><tt class="py-docstring">         'B',\r</tt> </tt>
-<a name="L5471"></a><tt class="py-lineno">5471</tt>  <tt class="py-line"><tt class="py-docstring">         ['def',\r</tt> </tt>
-<a name="L5472"></a><tt class="py-lineno">5472</tt>  <tt class="py-line"><tt class="py-docstring">          'BB',\r</tt> </tt>
-<a name="L5473"></a><tt class="py-lineno">5473</tt>  <tt class="py-line"><tt class="py-docstring">          ['(', 'a', 'b', 'c', ')'],\r</tt> </tt>
-<a name="L5474"></a><tt class="py-lineno">5474</tt>  <tt class="py-line"><tt class="py-docstring">          ':',\r</tt> </tt>
-<a name="L5475"></a><tt class="py-lineno">5475</tt>  <tt class="py-line"><tt class="py-docstring">          [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]],\r</tt> </tt>
-<a name="L5476"></a><tt class="py-lineno">5476</tt>  <tt class="py-line"><tt class="py-docstring">         'C',\r</tt> </tt>
-<a name="L5477"></a><tt class="py-lineno">5477</tt>  <tt class="py-line"><tt class="py-docstring">         'D',\r</tt> </tt>
-<a name="L5478"></a><tt class="py-lineno">5478</tt>  <tt class="py-line"><tt class="py-docstring">         ['def',\r</tt> </tt>
-<a name="L5479"></a><tt class="py-lineno">5479</tt>  <tt class="py-line"><tt class="py-docstring">          'spam',\r</tt> </tt>
-<a name="L5480"></a><tt class="py-lineno">5480</tt>  <tt class="py-line"><tt class="py-docstring">          ['(', 'x', 'y', ')'],\r</tt> </tt>
-<a name="L5481"></a><tt class="py-lineno">5481</tt>  <tt class="py-line"><tt class="py-docstring">          ':',\r</tt> </tt>
-<a name="L5482"></a><tt class="py-lineno">5482</tt>  <tt class="py-line"><tt class="py-docstring">          [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]]\r</tt> </tt>
-<a name="L5483"></a><tt class="py-lineno">5483</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5484"></a><tt class="py-lineno">5484</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">checkPeerIndent</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5485"></a><tt class="py-lineno">5485</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">l</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>\r
-<a name="L5486"></a><tt class="py-lineno">5486</tt>  <tt class="py-line">        <tt class="py-name">curCol</tt> <tt class="py-op">=</tt> <tt id="link-952" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-952', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5487"></a><tt class="py-lineno">5487</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">curCol</tt> <tt class="py-op">!=</tt> <tt class="py-name">indentStack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5488"></a><tt class="py-lineno">5488</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">curCol</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">indentStack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5489"></a><tt class="py-lineno">5489</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-953" class="py-name"><a title="pyparsing.ParseFatalException" class="py-name" href="#" onclick="return doclink('link-953', 'ParseFatalException', 'link-143');">ParseFatalException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"illegal nesting"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5490"></a><tt class="py-lineno">5490</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-954" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-954', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"not a peer entry"</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5491"></a><tt class="py-lineno">5491</tt>  <tt class="py-line">\r </tt>
-<a name="L5492"></a><tt class="py-lineno">5492</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">checkSubIndent</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5493"></a><tt class="py-lineno">5493</tt>  <tt class="py-line">        <tt class="py-name">curCol</tt> <tt class="py-op">=</tt> <tt id="link-955" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-955', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5494"></a><tt class="py-lineno">5494</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">curCol</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">indentStack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5495"></a><tt class="py-lineno">5495</tt>  <tt class="py-line">            <tt class="py-name">indentStack</tt><tt class="py-op">.</tt><tt id="link-956" class="py-name"><a title="pyparsing.ParseExpression.append
-pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink('link-956', 'append', 'link-18');">append</a></tt><tt class="py-op">(</tt> <tt class="py-name">curCol</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5496"></a><tt class="py-lineno">5496</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5497"></a><tt class="py-lineno">5497</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-957" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-957', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"not a subentry"</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5498"></a><tt class="py-lineno">5498</tt>  <tt class="py-line">\r </tt>
-<a name="L5499"></a><tt class="py-lineno">5499</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">checkUnindent</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5500"></a><tt class="py-lineno">5500</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">l</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>\r
-<a name="L5501"></a><tt class="py-lineno">5501</tt>  <tt class="py-line">        <tt class="py-name">curCol</tt> <tt class="py-op">=</tt> <tt id="link-958" class="py-name"><a title="pyparsing.col" class="py-name" href="#" onclick="return doclink('link-958', 'col', 'link-31');">col</a></tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5502"></a><tt class="py-lineno">5502</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt><tt class="py-op">(</tt><tt class="py-name">indentStack</tt> <tt class="py-keyword">and</tt> <tt class="py-name">curCol</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">indentStack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-name">curCol</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">indentStack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5503"></a><tt class="py-lineno">5503</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-959" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-959', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-string">"not an unindent"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5504"></a><tt class="py-lineno">5504</tt>  <tt class="py-line">        <tt class="py-name">indentStack</tt><tt class="py-op">.</tt><tt id="link-960" class="py-name"><a title="pyparsing.ParseResults.pop" class="py-name" href="#" onclick="return doclink('link-960', 'pop', 'link-188');">pop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5505"></a><tt class="py-lineno">5505</tt>  <tt class="py-line">\r </tt>
-<a name="L5506"></a><tt class="py-lineno">5506</tt>  <tt class="py-line">    <tt class="py-name">NL</tt> <tt class="py-op">=</tt> <tt id="link-961" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-961', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt id="link-962" class="py-name"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-962', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-963" class="py-name"><a title="pyparsing.ParserElement.setWhitespaceChars" class="py-name" href="#" onclick="return doclink('link-963', 'setWhitespaceChars', 'link-463');">setWhitespaceChars</a></tt><tt class="py-op">(</tt><tt class="py-string">"\t "</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-964" class="py-name" targets="Method pyparsing.ParserElement.suppress()=pyparsing.ParserElement-class.html#suppress,Method pyparsing.Suppress.suppress()=pyparsing.Suppress-class.html#suppress"><a title="pyparsing.ParserElement.suppress
-pyparsing.Suppress.suppress" class="py-name" href="#" onclick="return doclink('link-964', 'suppress', 'link-964');">suppress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5507"></a><tt class="py-lineno">5507</tt>  <tt class="py-line">    <tt class="py-name">INDENT</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-965" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-965', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-966" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-966', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-967" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-967', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">checkSubIndent</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-968" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-968', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'INDENT'</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5508"></a><tt class="py-lineno">5508</tt>  <tt class="py-line">    <tt class="py-name">PEER</tt>   <tt class="py-op">=</tt> <tt id="link-969" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-969', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-970" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-970', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">checkPeerIndent</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-971', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5509"></a><tt class="py-lineno">5509</tt>  <tt class="py-line">    <tt class="py-name">UNDENT</tt> <tt class="py-op">=</tt> <tt id="link-972" class="py-name"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-972', 'Empty', 'link-237');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-973" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-973', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">checkUnindent</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-974" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-974', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'UNINDENT'</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5510"></a><tt class="py-lineno">5510</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5511"></a><tt class="py-lineno">5511</tt>  <tt class="py-line">        <tt class="py-name">smExpr</tt> <tt class="py-op">=</tt> <tt id="link-975" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-975', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt id="link-976" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-976', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">NL</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5512"></a><tt class="py-lineno">5512</tt>  <tt class="py-line">            <tt class="py-comment">#~ FollowedBy(blockStatementExpr) +</tt>\r </tt>
-<a name="L5513"></a><tt class="py-lineno">5513</tt>  <tt class="py-line">            <tt class="py-name">INDENT</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt id="link-977" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-977', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">PEER</tt> <tt class="py-op">+</tt> <tt id="link-978" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-978', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt class="py-name">blockStatementExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-979" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-979', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">NL</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">UNDENT</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5514"></a><tt class="py-lineno">5514</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5515"></a><tt class="py-lineno">5515</tt>  <tt class="py-line">        <tt class="py-name">smExpr</tt> <tt class="py-op">=</tt> <tt id="link-980" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-980', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt> <tt id="link-981" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-981', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">NL</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5516"></a><tt class="py-lineno">5516</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt id="link-982" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-982', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt> <tt class="py-name">PEER</tt> <tt class="py-op">+</tt> <tt id="link-983" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-983', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt class="py-name">blockStatementExpr</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-984" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-984', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-name">NL</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>\r
-<a name="L5517"></a><tt class="py-lineno">5517</tt>  <tt class="py-line">    <tt class="py-name">blockStatementExpr</tt><tt class="py-op">.</tt><tt id="link-985" class="py-name"><a title="pyparsing.Combine.ignore
-pyparsing.ParseElementEnhance.ignore
-pyparsing.ParseExpression.ignore
-pyparsing.ParserElement.ignore" class="py-name" href="#" onclick="return doclink('link-985', 'ignore', 'link-517');">ignore</a></tt><tt class="py-op">(</tt><tt id="link-986" class="py-name"><a title="pyparsing._bslash" class="py-name" href="#" onclick="return doclink('link-986', '_bslash', 'link-28');">_bslash</a></tt> <tt class="py-op">+</tt> <tt id="link-987" class="py-name"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-987', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5518"></a><tt class="py-lineno">5518</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">smExpr</tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-988', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'indented block'</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5519"></a><tt class="py-lineno">5519</tt>  <tt class="py-line">\r </tt>
-<a name="L5520"></a><tt class="py-lineno">5520</tt>  <tt class="py-line"><tt id="link-989" class="py-name" targets="Variable pyparsing.alphas8bit=pyparsing-module.html#alphas8bit"><a title="pyparsing.alphas8bit" class="py-name" href="#" onclick="return doclink('link-989', 'alphas8bit', 'link-989');">alphas8bit</a></tt> <tt class="py-op">=</tt> <tt id="link-990" class="py-name" targets="Function pyparsing.srange()=pyparsing-module.html#srange"><a title="pyparsing.srange" class="py-name" href="#" onclick="return doclink('link-990', 'srange', 'link-990');">srange</a></tt><tt class="py-op">(</tt><tt class="py-string">r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5521"></a><tt class="py-lineno">5521</tt>  <tt class="py-line"><tt id="link-991" class="py-name" targets="Variable pyparsing.punc8bit=pyparsing-module.html#punc8bit"><a title="pyparsing.punc8bit" class="py-name" href="#" onclick="return doclink('link-991', 'punc8bit', 'link-991');">punc8bit</a></tt> <tt class="py-op">=</tt> <tt id="link-992" class="py-name"><a title="pyparsing.srange" class="py-name" href="#" onclick="return doclink('link-992', 'srange', 'link-990');">srange</a></tt><tt class="py-op">(</tt><tt class="py-string">r"[\0xa1-\0xbf\0xd7\0xf7]"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5522"></a><tt class="py-lineno">5522</tt>  <tt class="py-line">\r </tt>
-<a name="L5523"></a><tt class="py-lineno">5523</tt>  <tt class="py-line"><tt id="link-993" class="py-name" targets="Variable pyparsing.anyOpenTag=pyparsing-module.html#anyOpenTag"><a title="pyparsing.anyOpenTag" class="py-name" href="#" onclick="return doclink('link-993', 'anyOpenTag', 'link-993');">anyOpenTag</a></tt><tt class="py-op">,</tt><tt id="link-994" class="py-name" targets="Variable pyparsing.anyCloseTag=pyparsing-module.html#anyCloseTag"><a title="pyparsing.anyCloseTag" class="py-name" href="#" onclick="return doclink('link-994', 'anyCloseTag', 'link-994');">anyCloseTag</a></tt> <tt class="py-op">=</tt> <tt id="link-995" class="py-name" targets="Function pyparsing.makeHTMLTags()=pyparsing-module.html#makeHTMLTags"><a title="pyparsing.makeHTMLTags" class="py-name" href="#" onclick="return doclink('link-995', 'makeHTMLTags', 'link-995');">makeHTMLTags</a></tt><tt class="py-op">(</tt><tt id="link-996" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-996', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-997" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-997', 'alphas', 'link-21');">alphas</a></tt><tt class="py-op">,</tt><tt id="link-998" class="py-name"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-998', 'alphanums', 'link-25');">alphanums</a></tt><tt class="py-op">+</tt><tt class="py-string">"_:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-999" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-999', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'any tag'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5524"></a><tt class="py-lineno">5524</tt>  <tt class="py-line"><tt id="link-1000" class="py-name" targets="Variable pyparsing._htmlEntityMap=pyparsing-module.html#_htmlEntityMap"><a title="pyparsing._htmlEntityMap" class="py-name" href="#" onclick="return doclink('link-1000', '_htmlEntityMap', 'link-1000');">_htmlEntityMap</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-string">"gt lt amp nbsp quot apos"</tt><tt class="py-op">.</tt><tt id="link-1001" class="py-name"><a title="pyparsing.ParserElement.split
-pyparsing.Regex.compiledREtype.split" class="py-name" href="#" onclick="return doclink('link-1001', 'split', 'link-16');">split</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-string">'&gt;&lt;&amp; "\''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5525"></a><tt class="py-lineno">5525</tt>  <tt class="py-line"><tt id="link-1002" class="py-name" targets="Variable pyparsing.commonHTMLEntity=pyparsing-module.html#commonHTMLEntity"><a title="pyparsing.commonHTMLEntity" class="py-name" href="#" onclick="return doclink('link-1002', 'commonHTMLEntity', 'link-1002');">commonHTMLEntity</a></tt> <tt class="py-op">=</tt> <tt id="link-1003" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1003', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">'&amp;(?P&lt;entity&gt;'</tt> <tt class="py-op">+</tt> <tt class="py-string">'|'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-1004" class="py-name"><a title="pyparsing._htmlEntityMap" class="py-name" href="#" onclick="return doclink('link-1004', '_htmlEntityMap', 'link-1000');">_htmlEntityMap</a></tt><tt class="py-op">.</tt><tt id="link-1005" class="py-name"><a title="pyparsing.ParseResults.keys" class="py-name" href="#" onclick="return doclink('link-1005', 'keys', 'link-56');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt><tt class="py-string">");"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1006" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1006', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"common HTML entity"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="replaceHTMLEntity"></a><div id="replaceHTMLEntity-def"><a name="L5526"></a><tt class="py-lineno">5526</tt> <a class="py-toggle" href="#" id="replaceHTMLEntity-toggle" onclick="return toggle('replaceHTMLEntity');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing-module.html#replaceHTMLEntity">replaceHTMLEntity</a><tt class="py-op">(</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="replaceHTMLEntity-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="replaceHTMLEntity-expanded"><a name="L5527"></a><tt class="py-lineno">5527</tt>  <tt class="py-line">    <tt class="py-docstring">"""Helper parser action to replace common HTML entities with their special characters"""</tt> </tt>\r
-<a name="L5528"></a><tt class="py-lineno">5528</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-1007" class="py-name"><a title="pyparsing._htmlEntityMap" class="py-name" href="#" onclick="return doclink('link-1007', '_htmlEntityMap', 'link-1000');">_htmlEntityMap</a></tt><tt class="py-op">.</tt><tt id="link-1008" class="py-name"><a title="pyparsing.ParseResults.get" class="py-name" href="#" onclick="return doclink('link-1008', 'get', 'link-43');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">entity</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5529"></a><tt class="py-lineno">5529</tt>  <tt class="py-line">\r </tt>
-<a name="L5530"></a><tt class="py-lineno">5530</tt>  <tt class="py-line"><tt class="py-comment"># it's easy to get these comment structures wrong - they're very common, so may as well make them available</tt>\r </tt>
-<a name="L5531"></a><tt class="py-lineno">5531</tt>  <tt class="py-line"><tt id="link-1009" class="py-name" targets="Variable pyparsing.cStyleComment=pyparsing-module.html#cStyleComment"><a title="pyparsing.cStyleComment" class="py-name" href="#" onclick="return doclink('link-1009', 'cStyleComment', 'link-1009');">cStyleComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1010" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-1010', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-1011" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1011', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"/\*(?:[^*]|\*(?!/))*"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'*/'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1012" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1012', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"C style comment"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5532"></a><tt class="py-lineno">5532</tt>  <tt class="py-line"><tt class="py-string">"Comment of the form C{/* ... */}"</tt> </tt>\r
-<a name="L5533"></a><tt class="py-lineno">5533</tt>  <tt class="py-line">\r </tt>
-<a name="L5534"></a><tt class="py-lineno">5534</tt>  <tt class="py-line"><tt id="link-1013" class="py-name" targets="Variable pyparsing.htmlComment=pyparsing-module.html#htmlComment"><a title="pyparsing.htmlComment" class="py-name" href="#" onclick="return doclink('link-1013', 'htmlComment', 'link-1013');">htmlComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1014" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1014', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"&lt;!--[\s\S]*?--&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1015" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1015', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"HTML comment"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5535"></a><tt class="py-lineno">5535</tt>  <tt class="py-line"><tt class="py-string">"Comment of the form C{&lt;!-- ... --&gt;}"</tt> </tt>\r
-<a name="L5536"></a><tt class="py-lineno">5536</tt>  <tt class="py-line">\r </tt>
-<a name="L5537"></a><tt class="py-lineno">5537</tt>  <tt class="py-line"><tt id="link-1016" class="py-name" targets="Variable pyparsing.restOfLine=pyparsing-module.html#restOfLine"><a title="pyparsing.restOfLine" class="py-name" href="#" onclick="return doclink('link-1016', 'restOfLine', 'link-1016');">restOfLine</a></tt> <tt class="py-op">=</tt> <tt id="link-1017" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1017', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r".*"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1018" class="py-name"><a title="pyparsing.Forward.leaveWhitespace
-pyparsing.ParseElementEnhance.leaveWhitespace
-pyparsing.ParseExpression.leaveWhitespace
-pyparsing.ParserElement.leaveWhitespace" class="py-name" href="#" onclick="return doclink('link-1018', 'leaveWhitespace', 'link-514');">leaveWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1019" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1019', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"rest of line"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5538"></a><tt class="py-lineno">5538</tt>  <tt class="py-line"><tt id="link-1020" class="py-name" targets="Variable pyparsing.dblSlashComment=pyparsing-module.html#dblSlashComment"><a title="pyparsing.dblSlashComment" class="py-name" href="#" onclick="return doclink('link-1020', 'dblSlashComment', 'link-1020');">dblSlashComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1021" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1021', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"//(?:\\\n|[^\n])*"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1022" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1022', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"// comment"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5539"></a><tt class="py-lineno">5539</tt>  <tt class="py-line"><tt class="py-string">"Comment of the form C{// ... (to end of line)}"</tt> </tt>\r
-<a name="L5540"></a><tt class="py-lineno">5540</tt>  <tt class="py-line">\r </tt>
-<a name="L5541"></a><tt class="py-lineno">5541</tt>  <tt class="py-line"><tt id="link-1023" class="py-name" targets="Variable pyparsing.cppStyleComment=pyparsing-module.html#cppStyleComment"><a title="pyparsing.cppStyleComment" class="py-name" href="#" onclick="return doclink('link-1023', 'cppStyleComment', 'link-1023');">cppStyleComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1024" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-1024', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-1025" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1025', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"/\*(?:[^*]|\*(?!/))*"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'*/'</tt><tt class="py-op">|</tt> <tt id="link-1026" class="py-name"><a title="pyparsing.dblSlashComment" class="py-name" href="#" onclick="return doclink('link-1026', 'dblSlashComment', 'link-1020');">dblSlashComment</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1027" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1027', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"C++ style comment"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5542"></a><tt class="py-lineno">5542</tt>  <tt class="py-line"><tt class="py-string">"Comment of either form C{L{cStyleComment}} or C{L{dblSlashComment}}"</tt> </tt>\r
-<a name="L5543"></a><tt class="py-lineno">5543</tt>  <tt class="py-line">\r </tt>
-<a name="L5544"></a><tt class="py-lineno">5544</tt>  <tt class="py-line"><tt id="link-1028" class="py-name" targets="Variable pyparsing.javaStyleComment=pyparsing-module.html#javaStyleComment"><a title="pyparsing.javaStyleComment" class="py-name" href="#" onclick="return doclink('link-1028', 'javaStyleComment', 'link-1028');">javaStyleComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1029" class="py-name"><a title="pyparsing.cppStyleComment" class="py-name" href="#" onclick="return doclink('link-1029', 'cppStyleComment', 'link-1023');">cppStyleComment</a></tt> </tt>\r
-<a name="L5545"></a><tt class="py-lineno">5545</tt>  <tt class="py-line"><tt class="py-string">"Same as C{L{cppStyleComment}}"</tt> </tt>\r
-<a name="L5546"></a><tt class="py-lineno">5546</tt>  <tt class="py-line">\r </tt>
-<a name="L5547"></a><tt class="py-lineno">5547</tt>  <tt class="py-line"><tt id="link-1030" class="py-name" targets="Variable pyparsing.pythonStyleComment=pyparsing-module.html#pythonStyleComment"><a title="pyparsing.pythonStyleComment" class="py-name" href="#" onclick="return doclink('link-1030', 'pythonStyleComment', 'link-1030');">pythonStyleComment</a></tt> <tt class="py-op">=</tt> <tt id="link-1031" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1031', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r"#.*"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1032" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1032', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"Python style comment"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5548"></a><tt class="py-lineno">5548</tt>  <tt class="py-line"><tt class="py-string">"Comment of the form C{# ... (to end of line)}"</tt> </tt>\r
-<a name="L5549"></a><tt class="py-lineno">5549</tt>  <tt class="py-line">\r </tt>
-<a name="L5550"></a><tt class="py-lineno">5550</tt>  <tt class="py-line"><tt id="link-1033" class="py-name" targets="Variable pyparsing._commasepitem=pyparsing-module.html#_commasepitem,Variable pyparsing.pyparsing_common._commasepitem=pyparsing.pyparsing_common-class.html#_commasepitem"><a title="pyparsing._commasepitem
-pyparsing.pyparsing_common._commasepitem" class="py-name" href="#" onclick="return doclink('link-1033', '_commasepitem', 'link-1033');">_commasepitem</a></tt> <tt class="py-op">=</tt> <tt id="link-1034" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-1034', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-1035" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-1035', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt id="link-1036" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1036', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1037" class="py-name"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-1037', 'printables', 'link-29');">printables</a></tt><tt class="py-op">,</tt> <tt class="py-name">excludeChars</tt><tt class="py-op">=</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5551"></a><tt class="py-lineno">5551</tt>  <tt class="py-line">                                  <tt id="link-1038" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1038', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt> <tt id="link-1039" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1039', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt class="py-string">" \t"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt>\r </tt>
-<a name="L5552"></a><tt class="py-lineno">5552</tt>  <tt class="py-line">                                            <tt class="py-op">~</tt><tt id="link-1040" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-1040', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">~</tt><tt id="link-1041" class="py-name"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-1041', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1042" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-1042', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1043" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1043', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"commaItem"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5553"></a><tt class="py-lineno">5553</tt>  <tt class="py-line"><tt id="link-1044" class="py-name" targets="Variable pyparsing.commaSeparatedList=pyparsing-module.html#commaSeparatedList"><a title="pyparsing.commaSeparatedList" class="py-name" href="#" onclick="return doclink('link-1044', 'commaSeparatedList', 'link-1044');">commaSeparatedList</a></tt> <tt class="py-op">=</tt> <tt id="link-1045" class="py-name" targets="Function pyparsing.delimitedList()=pyparsing-module.html#delimitedList"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1045', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt> <tt id="link-1046" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1046', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt> <tt id="link-1047" class="py-name"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-1047', 'quotedString', 'link-834');">quotedString</a></tt><tt class="py-op">.</tt><tt id="link-1048" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-1048', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">|</tt> <tt id="link-1049" class="py-name"><a title="pyparsing._commasepitem
-pyparsing.pyparsing_common._commasepitem" class="py-name" href="#" onclick="return doclink('link-1049', '_commasepitem', 'link-1033');">_commasepitem</a></tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1050" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1050', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"commaSeparatedList"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5554"></a><tt class="py-lineno">5554</tt>  <tt class="py-line"><tt class="py-string">"""(Deprecated) Predefined expression of 1 or more printable words or quoted strings, separated by commas.\r</tt> </tt>
-<a name="L5555"></a><tt class="py-lineno">5555</tt>  <tt class="py-line"><tt class="py-string">   This expression is deprecated in favor of L{pyparsing_common.comma_separated_list}."""</tt> </tt>\r
-<a name="pyparsing_common"></a><div id="pyparsing_common-def"><a name="L5556"></a><tt class="py-lineno">5556</tt>  <tt class="py-line">\r </tt>
-<a name="L5557"></a><tt class="py-lineno">5557</tt>  <tt class="py-line"><tt class="py-comment"># some other useful expressions - using lower-case class name since we are really using this as a namespace</tt>\r </tt>
-<a name="L5558"></a><tt class="py-lineno">5558</tt> <a class="py-toggle" href="#" id="pyparsing_common-toggle" onclick="return toggle('pyparsing_common');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_common-class.html">pyparsing_common</a><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_common-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pyparsing_common-expanded"><a name="L5559"></a><tt class="py-lineno">5559</tt>  <tt class="py-line">    <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5560"></a><tt class="py-lineno">5560</tt>  <tt class="py-line"><tt class="py-docstring">    Here are some common low-level expressions that may be useful in jump-starting parser development:\r</tt> </tt>
-<a name="L5561"></a><tt class="py-lineno">5561</tt>  <tt class="py-line"><tt class="py-docstring">     - numeric forms (L{integers&lt;integer&gt;}, L{reals&lt;real&gt;}, L{scientific notation&lt;sci_real&gt;})\r</tt> </tt>
-<a name="L5562"></a><tt class="py-lineno">5562</tt>  <tt class="py-line"><tt class="py-docstring">     - common L{programming identifiers&lt;identifier&gt;}\r</tt> </tt>
-<a name="L5563"></a><tt class="py-lineno">5563</tt>  <tt class="py-line"><tt class="py-docstring">     - network addresses (L{MAC&lt;mac_address&gt;}, L{IPv4&lt;ipv4_address&gt;}, L{IPv6&lt;ipv6_address&gt;})\r</tt> </tt>
-<a name="L5564"></a><tt class="py-lineno">5564</tt>  <tt class="py-line"><tt class="py-docstring">     - ISO8601 L{dates&lt;iso8601_date&gt;} and L{datetime&lt;iso8601_datetime&gt;}\r</tt> </tt>
-<a name="L5565"></a><tt class="py-lineno">5565</tt>  <tt class="py-line"><tt class="py-docstring">     - L{UUID&lt;uuid&gt;}\r</tt> </tt>
-<a name="L5566"></a><tt class="py-lineno">5566</tt>  <tt class="py-line"><tt class="py-docstring">     - L{comma-separated list&lt;comma_separated_list&gt;}\r</tt> </tt>
-<a name="L5567"></a><tt class="py-lineno">5567</tt>  <tt class="py-line"><tt class="py-docstring">    Parse actions:\r</tt> </tt>
-<a name="L5568"></a><tt class="py-lineno">5568</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{convertToInteger}}\r</tt> </tt>
-<a name="L5569"></a><tt class="py-lineno">5569</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{convertToFloat}}\r</tt> </tt>
-<a name="L5570"></a><tt class="py-lineno">5570</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{convertToDate}}\r</tt> </tt>
-<a name="L5571"></a><tt class="py-lineno">5571</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{convertToDatetime}}\r</tt> </tt>
-<a name="L5572"></a><tt class="py-lineno">5572</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{stripHTMLTags}}\r</tt> </tt>
-<a name="L5573"></a><tt class="py-lineno">5573</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{upcaseTokens}}\r</tt> </tt>
-<a name="L5574"></a><tt class="py-lineno">5574</tt>  <tt class="py-line"><tt class="py-docstring">     - C{L{downcaseTokens}}\r</tt> </tt>
-<a name="L5575"></a><tt class="py-lineno">5575</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5576"></a><tt class="py-lineno">5576</tt>  <tt class="py-line"><tt class="py-docstring">    Example::\r</tt> </tt>
-<a name="L5577"></a><tt class="py-lineno">5577</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.number.runTests('''\r</tt> </tt>
-<a name="L5578"></a><tt class="py-lineno">5578</tt>  <tt class="py-line"><tt class="py-docstring">            # any int or real number, returned as the appropriate type\r</tt> </tt>
-<a name="L5579"></a><tt class="py-lineno">5579</tt>  <tt class="py-line"><tt class="py-docstring">            100\r</tt> </tt>
-<a name="L5580"></a><tt class="py-lineno">5580</tt>  <tt class="py-line"><tt class="py-docstring">            -100\r</tt> </tt>
-<a name="L5581"></a><tt class="py-lineno">5581</tt>  <tt class="py-line"><tt class="py-docstring">            +100\r</tt> </tt>
-<a name="L5582"></a><tt class="py-lineno">5582</tt>  <tt class="py-line"><tt class="py-docstring">            3.14159\r</tt> </tt>
-<a name="L5583"></a><tt class="py-lineno">5583</tt>  <tt class="py-line"><tt class="py-docstring">            6.02e23\r</tt> </tt>
-<a name="L5584"></a><tt class="py-lineno">5584</tt>  <tt class="py-line"><tt class="py-docstring">            1e-12\r</tt> </tt>
-<a name="L5585"></a><tt class="py-lineno">5585</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5586"></a><tt class="py-lineno">5586</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5587"></a><tt class="py-lineno">5587</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.fnumber.runTests('''\r</tt> </tt>
-<a name="L5588"></a><tt class="py-lineno">5588</tt>  <tt class="py-line"><tt class="py-docstring">            # any int or real number, returned as float\r</tt> </tt>
-<a name="L5589"></a><tt class="py-lineno">5589</tt>  <tt class="py-line"><tt class="py-docstring">            100\r</tt> </tt>
-<a name="L5590"></a><tt class="py-lineno">5590</tt>  <tt class="py-line"><tt class="py-docstring">            -100\r</tt> </tt>
-<a name="L5591"></a><tt class="py-lineno">5591</tt>  <tt class="py-line"><tt class="py-docstring">            +100\r</tt> </tt>
-<a name="L5592"></a><tt class="py-lineno">5592</tt>  <tt class="py-line"><tt class="py-docstring">            3.14159\r</tt> </tt>
-<a name="L5593"></a><tt class="py-lineno">5593</tt>  <tt class="py-line"><tt class="py-docstring">            6.02e23\r</tt> </tt>
-<a name="L5594"></a><tt class="py-lineno">5594</tt>  <tt class="py-line"><tt class="py-docstring">            1e-12\r</tt> </tt>
-<a name="L5595"></a><tt class="py-lineno">5595</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5596"></a><tt class="py-lineno">5596</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5597"></a><tt class="py-lineno">5597</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.hex_integer.runTests('''\r</tt> </tt>
-<a name="L5598"></a><tt class="py-lineno">5598</tt>  <tt class="py-line"><tt class="py-docstring">            # hex numbers\r</tt> </tt>
-<a name="L5599"></a><tt class="py-lineno">5599</tt>  <tt class="py-line"><tt class="py-docstring">            100\r</tt> </tt>
-<a name="L5600"></a><tt class="py-lineno">5600</tt>  <tt class="py-line"><tt class="py-docstring">            FF\r</tt> </tt>
-<a name="L5601"></a><tt class="py-lineno">5601</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5602"></a><tt class="py-lineno">5602</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5603"></a><tt class="py-lineno">5603</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.fraction.runTests('''\r</tt> </tt>
-<a name="L5604"></a><tt class="py-lineno">5604</tt>  <tt class="py-line"><tt class="py-docstring">            # fractions\r</tt> </tt>
-<a name="L5605"></a><tt class="py-lineno">5605</tt>  <tt class="py-line"><tt class="py-docstring">            1/2\r</tt> </tt>
-<a name="L5606"></a><tt class="py-lineno">5606</tt>  <tt class="py-line"><tt class="py-docstring">            -3/4\r</tt> </tt>
-<a name="L5607"></a><tt class="py-lineno">5607</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5608"></a><tt class="py-lineno">5608</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5609"></a><tt class="py-lineno">5609</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.mixed_integer.runTests('''\r</tt> </tt>
-<a name="L5610"></a><tt class="py-lineno">5610</tt>  <tt class="py-line"><tt class="py-docstring">            # mixed fractions\r</tt> </tt>
-<a name="L5611"></a><tt class="py-lineno">5611</tt>  <tt class="py-line"><tt class="py-docstring">            1\r</tt> </tt>
-<a name="L5612"></a><tt class="py-lineno">5612</tt>  <tt class="py-line"><tt class="py-docstring">            1/2\r</tt> </tt>
-<a name="L5613"></a><tt class="py-lineno">5613</tt>  <tt class="py-line"><tt class="py-docstring">            -3/4\r</tt> </tt>
-<a name="L5614"></a><tt class="py-lineno">5614</tt>  <tt class="py-line"><tt class="py-docstring">            1-3/4\r</tt> </tt>
-<a name="L5615"></a><tt class="py-lineno">5615</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5616"></a><tt class="py-lineno">5616</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5617"></a><tt class="py-lineno">5617</tt>  <tt class="py-line"><tt class="py-docstring">        import uuid\r</tt> </tt>
-<a name="L5618"></a><tt class="py-lineno">5618</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID))\r</tt> </tt>
-<a name="L5619"></a><tt class="py-lineno">5619</tt>  <tt class="py-line"><tt class="py-docstring">        pyparsing_common.uuid.runTests('''\r</tt> </tt>
-<a name="L5620"></a><tt class="py-lineno">5620</tt>  <tt class="py-line"><tt class="py-docstring">            # uuid\r</tt> </tt>
-<a name="L5621"></a><tt class="py-lineno">5621</tt>  <tt class="py-line"><tt class="py-docstring">            12345678-1234-5678-1234-567812345678\r</tt> </tt>
-<a name="L5622"></a><tt class="py-lineno">5622</tt>  <tt class="py-line"><tt class="py-docstring">            ''')\r</tt> </tt>
-<a name="L5623"></a><tt class="py-lineno">5623</tt>  <tt class="py-line"><tt class="py-docstring">    prints::\r</tt> </tt>
-<a name="L5624"></a><tt class="py-lineno">5624</tt>  <tt class="py-line"><tt class="py-docstring">        # any int or real number, returned as the appropriate type\r</tt> </tt>
-<a name="L5625"></a><tt class="py-lineno">5625</tt>  <tt class="py-line"><tt class="py-docstring">        100\r</tt> </tt>
-<a name="L5626"></a><tt class="py-lineno">5626</tt>  <tt class="py-line"><tt class="py-docstring">        [100]\r</tt> </tt>
-<a name="L5627"></a><tt class="py-lineno">5627</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5628"></a><tt class="py-lineno">5628</tt>  <tt class="py-line"><tt class="py-docstring">        -100\r</tt> </tt>
-<a name="L5629"></a><tt class="py-lineno">5629</tt>  <tt class="py-line"><tt class="py-docstring">        [-100]\r</tt> </tt>
-<a name="L5630"></a><tt class="py-lineno">5630</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5631"></a><tt class="py-lineno">5631</tt>  <tt class="py-line"><tt class="py-docstring">        +100\r</tt> </tt>
-<a name="L5632"></a><tt class="py-lineno">5632</tt>  <tt class="py-line"><tt class="py-docstring">        [100]\r</tt> </tt>
-<a name="L5633"></a><tt class="py-lineno">5633</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5634"></a><tt class="py-lineno">5634</tt>  <tt class="py-line"><tt class="py-docstring">        3.14159\r</tt> </tt>
-<a name="L5635"></a><tt class="py-lineno">5635</tt>  <tt class="py-line"><tt class="py-docstring">        [3.14159]\r</tt> </tt>
-<a name="L5636"></a><tt class="py-lineno">5636</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5637"></a><tt class="py-lineno">5637</tt>  <tt class="py-line"><tt class="py-docstring">        6.02e23\r</tt> </tt>
-<a name="L5638"></a><tt class="py-lineno">5638</tt>  <tt class="py-line"><tt class="py-docstring">        [6.02e+23]\r</tt> </tt>
-<a name="L5639"></a><tt class="py-lineno">5639</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5640"></a><tt class="py-lineno">5640</tt>  <tt class="py-line"><tt class="py-docstring">        1e-12\r</tt> </tt>
-<a name="L5641"></a><tt class="py-lineno">5641</tt>  <tt class="py-line"><tt class="py-docstring">        [1e-12]\r</tt> </tt>
-<a name="L5642"></a><tt class="py-lineno">5642</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5643"></a><tt class="py-lineno">5643</tt>  <tt class="py-line"><tt class="py-docstring">        # any int or real number, returned as float\r</tt> </tt>
-<a name="L5644"></a><tt class="py-lineno">5644</tt>  <tt class="py-line"><tt class="py-docstring">        100\r</tt> </tt>
-<a name="L5645"></a><tt class="py-lineno">5645</tt>  <tt class="py-line"><tt class="py-docstring">        [100.0]\r</tt> </tt>
-<a name="L5646"></a><tt class="py-lineno">5646</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5647"></a><tt class="py-lineno">5647</tt>  <tt class="py-line"><tt class="py-docstring">        -100\r</tt> </tt>
-<a name="L5648"></a><tt class="py-lineno">5648</tt>  <tt class="py-line"><tt class="py-docstring">        [-100.0]\r</tt> </tt>
-<a name="L5649"></a><tt class="py-lineno">5649</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5650"></a><tt class="py-lineno">5650</tt>  <tt class="py-line"><tt class="py-docstring">        +100\r</tt> </tt>
-<a name="L5651"></a><tt class="py-lineno">5651</tt>  <tt class="py-line"><tt class="py-docstring">        [100.0]\r</tt> </tt>
-<a name="L5652"></a><tt class="py-lineno">5652</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5653"></a><tt class="py-lineno">5653</tt>  <tt class="py-line"><tt class="py-docstring">        3.14159\r</tt> </tt>
-<a name="L5654"></a><tt class="py-lineno">5654</tt>  <tt class="py-line"><tt class="py-docstring">        [3.14159]\r</tt> </tt>
-<a name="L5655"></a><tt class="py-lineno">5655</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5656"></a><tt class="py-lineno">5656</tt>  <tt class="py-line"><tt class="py-docstring">        6.02e23\r</tt> </tt>
-<a name="L5657"></a><tt class="py-lineno">5657</tt>  <tt class="py-line"><tt class="py-docstring">        [6.02e+23]\r</tt> </tt>
-<a name="L5658"></a><tt class="py-lineno">5658</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5659"></a><tt class="py-lineno">5659</tt>  <tt class="py-line"><tt class="py-docstring">        1e-12\r</tt> </tt>
-<a name="L5660"></a><tt class="py-lineno">5660</tt>  <tt class="py-line"><tt class="py-docstring">        [1e-12]\r</tt> </tt>
-<a name="L5661"></a><tt class="py-lineno">5661</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5662"></a><tt class="py-lineno">5662</tt>  <tt class="py-line"><tt class="py-docstring">        # hex numbers\r</tt> </tt>
-<a name="L5663"></a><tt class="py-lineno">5663</tt>  <tt class="py-line"><tt class="py-docstring">        100\r</tt> </tt>
-<a name="L5664"></a><tt class="py-lineno">5664</tt>  <tt class="py-line"><tt class="py-docstring">        [256]\r</tt> </tt>
-<a name="L5665"></a><tt class="py-lineno">5665</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5666"></a><tt class="py-lineno">5666</tt>  <tt class="py-line"><tt class="py-docstring">        FF\r</tt> </tt>
-<a name="L5667"></a><tt class="py-lineno">5667</tt>  <tt class="py-line"><tt class="py-docstring">        [255]\r</tt> </tt>
-<a name="L5668"></a><tt class="py-lineno">5668</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5669"></a><tt class="py-lineno">5669</tt>  <tt class="py-line"><tt class="py-docstring">        # fractions\r</tt> </tt>
-<a name="L5670"></a><tt class="py-lineno">5670</tt>  <tt class="py-line"><tt class="py-docstring">        1/2\r</tt> </tt>
-<a name="L5671"></a><tt class="py-lineno">5671</tt>  <tt class="py-line"><tt class="py-docstring">        [0.5]\r</tt> </tt>
-<a name="L5672"></a><tt class="py-lineno">5672</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5673"></a><tt class="py-lineno">5673</tt>  <tt class="py-line"><tt class="py-docstring">        -3/4\r</tt> </tt>
-<a name="L5674"></a><tt class="py-lineno">5674</tt>  <tt class="py-line"><tt class="py-docstring">        [-0.75]\r</tt> </tt>
-<a name="L5675"></a><tt class="py-lineno">5675</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5676"></a><tt class="py-lineno">5676</tt>  <tt class="py-line"><tt class="py-docstring">        # mixed fractions\r</tt> </tt>
-<a name="L5677"></a><tt class="py-lineno">5677</tt>  <tt class="py-line"><tt class="py-docstring">        1\r</tt> </tt>
-<a name="L5678"></a><tt class="py-lineno">5678</tt>  <tt class="py-line"><tt class="py-docstring">        [1]\r</tt> </tt>
-<a name="L5679"></a><tt class="py-lineno">5679</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5680"></a><tt class="py-lineno">5680</tt>  <tt class="py-line"><tt class="py-docstring">        1/2\r</tt> </tt>
-<a name="L5681"></a><tt class="py-lineno">5681</tt>  <tt class="py-line"><tt class="py-docstring">        [0.5]\r</tt> </tt>
-<a name="L5682"></a><tt class="py-lineno">5682</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5683"></a><tt class="py-lineno">5683</tt>  <tt class="py-line"><tt class="py-docstring">        -3/4\r</tt> </tt>
-<a name="L5684"></a><tt class="py-lineno">5684</tt>  <tt class="py-line"><tt class="py-docstring">        [-0.75]\r</tt> </tt>
-<a name="L5685"></a><tt class="py-lineno">5685</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5686"></a><tt class="py-lineno">5686</tt>  <tt class="py-line"><tt class="py-docstring">        1-3/4\r</tt> </tt>
-<a name="L5687"></a><tt class="py-lineno">5687</tt>  <tt class="py-line"><tt class="py-docstring">        [1.75]\r</tt> </tt>
-<a name="L5688"></a><tt class="py-lineno">5688</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5689"></a><tt class="py-lineno">5689</tt>  <tt class="py-line"><tt class="py-docstring">        # uuid\r</tt> </tt>
-<a name="L5690"></a><tt class="py-lineno">5690</tt>  <tt class="py-line"><tt class="py-docstring">        12345678-1234-5678-1234-567812345678\r</tt> </tt>
-<a name="L5691"></a><tt class="py-lineno">5691</tt>  <tt class="py-line"><tt class="py-docstring">        [UUID('12345678-1234-5678-1234-567812345678')]\r</tt> </tt>
-<a name="L5692"></a><tt class="py-lineno">5692</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>\r
-<a name="L5693"></a><tt class="py-lineno">5693</tt>  <tt class="py-line">\r </tt>
-<a name="L5694"></a><tt class="py-lineno">5694</tt>  <tt class="py-line">    <tt id="link-1051" class="py-name" targets="Method pyparsing.pyparsing_common.convertToInteger()=pyparsing.pyparsing_common-class.html#convertToInteger"><a title="pyparsing.pyparsing_common.convertToInteger" class="py-name" href="#" onclick="return doclink('link-1051', 'convertToInteger', 'link-1051');">convertToInteger</a></tt> <tt class="py-op">=</tt> <tt id="link-1052" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1052', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5695"></a><tt class="py-lineno">5695</tt>  <tt class="py-line">    <tt class="py-string">"""\r</tt> </tt>
-<a name="L5696"></a><tt class="py-lineno">5696</tt>  <tt class="py-line"><tt class="py-string">    Parse action for converting parsed integers to Python int\r</tt> </tt>
-<a name="L5697"></a><tt class="py-lineno">5697</tt>  <tt class="py-line"><tt class="py-string">    """</tt> </tt>\r
-<a name="L5698"></a><tt class="py-lineno">5698</tt>  <tt class="py-line">\r </tt>
-<a name="L5699"></a><tt class="py-lineno">5699</tt>  <tt class="py-line">    <tt id="link-1053" class="py-name" targets="Method pyparsing.pyparsing_common.convertToFloat()=pyparsing.pyparsing_common-class.html#convertToFloat"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1053', 'convertToFloat', 'link-1053');">convertToFloat</a></tt> <tt class="py-op">=</tt> <tt id="link-1054" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1054', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5700"></a><tt class="py-lineno">5700</tt>  <tt class="py-line">    <tt class="py-string">"""\r</tt> </tt>
-<a name="L5701"></a><tt class="py-lineno">5701</tt>  <tt class="py-line"><tt class="py-string">    Parse action for converting parsed numbers to Python float\r</tt> </tt>
-<a name="L5702"></a><tt class="py-lineno">5702</tt>  <tt class="py-line"><tt class="py-string">    """</tt> </tt>\r
-<a name="L5703"></a><tt class="py-lineno">5703</tt>  <tt class="py-line">\r </tt>
-<a name="L5704"></a><tt class="py-lineno">5704</tt>  <tt class="py-line">    <tt id="link-1055" class="py-name" targets="Variable pyparsing.pyparsing_common.integer=pyparsing.pyparsing_common-class.html#integer"><a title="pyparsing.pyparsing_common.integer" class="py-name" href="#" onclick="return doclink('link-1055', 'integer', 'link-1055');">integer</a></tt> <tt class="py-op">=</tt> <tt id="link-1056" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1056', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1057" class="py-name"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-1057', 'nums', 'link-22');">nums</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1058" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1058', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"integer"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1059" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1059', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1060" class="py-name"><a title="pyparsing.pyparsing_common.convertToInteger" class="py-name" href="#" onclick="return doclink('link-1060', 'convertToInteger', 'link-1051');">convertToInteger</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5705"></a><tt class="py-lineno">5705</tt>  <tt class="py-line">    <tt class="py-string">"""expression that parses an unsigned integer, returns an int"""</tt> </tt>\r
-<a name="L5706"></a><tt class="py-lineno">5706</tt>  <tt class="py-line">\r </tt>
-<a name="L5707"></a><tt class="py-lineno">5707</tt>  <tt class="py-line">    <tt id="link-1061" class="py-name" targets="Variable pyparsing.pyparsing_common.hex_integer=pyparsing.pyparsing_common-class.html#hex_integer"><a title="pyparsing.pyparsing_common.hex_integer" class="py-name" href="#" onclick="return doclink('link-1061', 'hex_integer', 'link-1061');">hex_integer</a></tt> <tt class="py-op">=</tt> <tt id="link-1062" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1062', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1063" class="py-name"><a title="pyparsing.hexnums" class="py-name" href="#" onclick="return doclink('link-1063', 'hexnums', 'link-23');">hexnums</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1064" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1064', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"hex integer"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1065" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1065', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1066" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1066', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5708"></a><tt class="py-lineno">5708</tt>  <tt class="py-line">    <tt class="py-string">"""expression that parses a hexadecimal integer, returns an int"""</tt> </tt>\r
-<a name="L5709"></a><tt class="py-lineno">5709</tt>  <tt class="py-line">\r </tt>
-<a name="L5710"></a><tt class="py-lineno">5710</tt>  <tt class="py-line">    <tt id="link-1067" class="py-name" targets="Variable pyparsing.pyparsing_common.signed_integer=pyparsing.pyparsing_common-class.html#signed_integer"><a title="pyparsing.pyparsing_common.signed_integer" class="py-name" href="#" onclick="return doclink('link-1067', 'signed_integer', 'link-1067');">signed_integer</a></tt> <tt class="py-op">=</tt> <tt id="link-1068" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1068', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[+-]?\d+'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1069" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1069', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"signed integer"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1070" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1070', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1071" class="py-name"><a title="pyparsing.pyparsing_common.convertToInteger" class="py-name" href="#" onclick="return doclink('link-1071', 'convertToInteger', 'link-1051');">convertToInteger</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5711"></a><tt class="py-lineno">5711</tt>  <tt class="py-line">    <tt class="py-string">"""expression that parses an integer with optional leading sign, returns an int"""</tt> </tt>\r
-<a name="L5712"></a><tt class="py-lineno">5712</tt>  <tt class="py-line">\r </tt>
-<a name="L5713"></a><tt class="py-lineno">5713</tt>  <tt class="py-line">    <tt id="link-1072" class="py-name" targets="Variable pyparsing.pyparsing_common.fraction=pyparsing.pyparsing_common-class.html#fraction"><a title="pyparsing.pyparsing_common.fraction" class="py-name" href="#" onclick="return doclink('link-1072', 'fraction', 'link-1072');">fraction</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-1073" class="py-name"><a title="pyparsing.pyparsing_common.signed_integer" class="py-name" href="#" onclick="return doclink('link-1073', 'signed_integer', 'link-1067');">signed_integer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1074" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1074', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1075" class="py-name"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1075', 'convertToFloat', 'link-1053');">convertToFloat</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt id="link-1076" class="py-name"><a title="pyparsing.pyparsing_common.signed_integer" class="py-name" href="#" onclick="return doclink('link-1076', 'signed_integer', 'link-1067');">signed_integer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1077" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1077', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1078" class="py-name"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1078', 'convertToFloat', 'link-1053');">convertToFloat</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1079" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1079', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"fraction"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5714"></a><tt class="py-lineno">5714</tt>  <tt class="py-line">    <tt class="py-string">"""fractional expression of an integer divided by an integer, returns a float"""</tt> </tt>\r
-<a name="L5715"></a><tt class="py-lineno">5715</tt>  <tt class="py-line">    <tt id="link-1080" class="py-name"><a title="pyparsing.pyparsing_common.fraction" class="py-name" href="#" onclick="return doclink('link-1080', 'fraction', 'link-1072');">fraction</a></tt><tt class="py-op">.</tt><tt id="link-1081" class="py-name"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-1081', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5716"></a><tt class="py-lineno">5716</tt>  <tt class="py-line">\r </tt>
-<a name="L5717"></a><tt class="py-lineno">5717</tt>  <tt class="py-line">    <tt id="link-1082" class="py-name" targets="Variable pyparsing.pyparsing_common.mixed_integer=pyparsing.pyparsing_common-class.html#mixed_integer"><a title="pyparsing.pyparsing_common.mixed_integer" class="py-name" href="#" onclick="return doclink('link-1082', 'mixed_integer', 'link-1082');">mixed_integer</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-1083" class="py-name"><a title="pyparsing.pyparsing_common.fraction" class="py-name" href="#" onclick="return doclink('link-1083', 'fraction', 'link-1072');">fraction</a></tt> <tt class="py-op">|</tt> <tt id="link-1084" class="py-name"><a title="pyparsing.pyparsing_common.signed_integer" class="py-name" href="#" onclick="return doclink('link-1084', 'signed_integer', 'link-1067');">signed_integer</a></tt> <tt class="py-op">+</tt> <tt id="link-1085" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1085', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt id="link-1086" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1086', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1087" class="py-name"><a title="pyparsing.ParserElement.suppress
-pyparsing.Suppress.suppress" class="py-name" href="#" onclick="return doclink('link-1087', 'suppress', 'link-964');">suppress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-1088" class="py-name"><a title="pyparsing.pyparsing_common.fraction" class="py-name" href="#" onclick="return doclink('link-1088', 'fraction', 'link-1072');">fraction</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1089" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1089', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"fraction or mixed integer-fraction"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5718"></a><tt class="py-lineno">5718</tt>  <tt class="py-line">    <tt class="py-string">"""mixed integer of the form 'integer - fraction', with optional leading integer, returns float"""</tt> </tt>\r
-<a name="L5719"></a><tt class="py-lineno">5719</tt>  <tt class="py-line">    <tt id="link-1090" class="py-name"><a title="pyparsing.pyparsing_common.mixed_integer" class="py-name" href="#" onclick="return doclink('link-1090', 'mixed_integer', 'link-1082');">mixed_integer</a></tt><tt class="py-op">.</tt><tt id="link-1091" class="py-name"><a title="pyparsing.ParserElement.addParseAction" class="py-name" href="#" onclick="return doclink('link-1091', 'addParseAction', 'link-432');">addParseAction</a></tt><tt class="py-op">(</tt><tt class="py-name">sum</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5720"></a><tt class="py-lineno">5720</tt>  <tt class="py-line">\r </tt>
-<a name="L5721"></a><tt class="py-lineno">5721</tt>  <tt class="py-line">    <tt id="link-1092" class="py-name" targets="Variable pyparsing.pyparsing_common.real=pyparsing.pyparsing_common-class.html#real"><a title="pyparsing.pyparsing_common.real" class="py-name" href="#" onclick="return doclink('link-1092', 'real', 'link-1092');">real</a></tt> <tt class="py-op">=</tt> <tt id="link-1093" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1093', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[+-]?\d+\.\d*'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1094" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1094', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"real number"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1095" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1095', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1096" class="py-name"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1096', 'convertToFloat', 'link-1053');">convertToFloat</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5722"></a><tt class="py-lineno">5722</tt>  <tt class="py-line">    <tt class="py-string">"""expression that parses a floating point number and returns a float"""</tt> </tt>\r
-<a name="L5723"></a><tt class="py-lineno">5723</tt>  <tt class="py-line">\r </tt>
-<a name="L5724"></a><tt class="py-lineno">5724</tt>  <tt class="py-line">    <tt id="link-1097" class="py-name" targets="Variable pyparsing.pyparsing_common.sci_real=pyparsing.pyparsing_common-class.html#sci_real"><a title="pyparsing.pyparsing_common.sci_real" class="py-name" href="#" onclick="return doclink('link-1097', 'sci_real', 'link-1097');">sci_real</a></tt> <tt class="py-op">=</tt> <tt id="link-1098" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1098', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[+-]?\d+([eE][+-]?\d+|\.\d*([eE][+-]?\d+)?)'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1099" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1099', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"real number with scientific notation"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1100" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1100', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1101" class="py-name"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1101', 'convertToFloat', 'link-1053');">convertToFloat</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5725"></a><tt class="py-lineno">5725</tt>  <tt class="py-line">    <tt class="py-string">"""expression that parses a floating point number with optional scientific notation and returns a float"""</tt> </tt>\r
-<a name="L5726"></a><tt class="py-lineno">5726</tt>  <tt class="py-line">\r </tt>
-<a name="L5727"></a><tt class="py-lineno">5727</tt>  <tt class="py-line">    <tt class="py-comment"># streamlining this expression makes the docs nicer-looking</tt>\r </tt>
-<a name="L5728"></a><tt class="py-lineno">5728</tt>  <tt class="py-line">    <tt id="link-1102" class="py-name" targets="Variable pyparsing.pyparsing_common.number=pyparsing.pyparsing_common-class.html#number"><a title="pyparsing.pyparsing_common.number" class="py-name" href="#" onclick="return doclink('link-1102', 'number', 'link-1102');">number</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-1103" class="py-name"><a title="pyparsing.pyparsing_common.sci_real" class="py-name" href="#" onclick="return doclink('link-1103', 'sci_real', 'link-1097');">sci_real</a></tt> <tt class="py-op">|</tt> <tt id="link-1104" class="py-name"><a title="pyparsing.pyparsing_common.real" class="py-name" href="#" onclick="return doclink('link-1104', 'real', 'link-1092');">real</a></tt> <tt class="py-op">|</tt> <tt id="link-1105" class="py-name"><a title="pyparsing.pyparsing_common.signed_integer" class="py-name" href="#" onclick="return doclink('link-1105', 'signed_integer', 'link-1067');">signed_integer</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1106" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-1106', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5729"></a><tt class="py-lineno">5729</tt>  <tt class="py-line">    <tt class="py-string">"""any numeric expression, returns the corresponding Python type"""</tt> </tt>\r
-<a name="L5730"></a><tt class="py-lineno">5730</tt>  <tt class="py-line">\r </tt>
-<a name="L5731"></a><tt class="py-lineno">5731</tt>  <tt class="py-line">    <tt id="link-1107" class="py-name" targets="Variable pyparsing.pyparsing_common.fnumber=pyparsing.pyparsing_common-class.html#fnumber"><a title="pyparsing.pyparsing_common.fnumber" class="py-name" href="#" onclick="return doclink('link-1107', 'fnumber', 'link-1107');">fnumber</a></tt> <tt class="py-op">=</tt> <tt id="link-1108" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1108', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[+-]?\d+\.?\d*([eE][+-]?\d+)?'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1109" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1109', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"fnumber"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1110" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1110', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1111" class="py-name"><a title="pyparsing.pyparsing_common.convertToFloat" class="py-name" href="#" onclick="return doclink('link-1111', 'convertToFloat', 'link-1053');">convertToFloat</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5732"></a><tt class="py-lineno">5732</tt>  <tt class="py-line">    <tt class="py-string">"""any int or real number, returned as float"""</tt> </tt>\r
-<a name="L5733"></a><tt class="py-lineno">5733</tt>  <tt class="py-line">\r </tt>
-<a name="L5734"></a><tt class="py-lineno">5734</tt>  <tt class="py-line">    <tt id="link-1112" class="py-name" targets="Variable pyparsing.pyparsing_common.identifier=pyparsing.pyparsing_common-class.html#identifier"><a title="pyparsing.pyparsing_common.identifier" class="py-name" href="#" onclick="return doclink('link-1112', 'identifier', 'link-1112');">identifier</a></tt> <tt class="py-op">=</tt> <tt id="link-1113" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1113', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1114" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-1114', 'alphas', 'link-21');">alphas</a></tt><tt class="py-op">+</tt><tt class="py-string">'_'</tt><tt class="py-op">,</tt> <tt id="link-1115" class="py-name"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-1115', 'alphanums', 'link-25');">alphanums</a></tt><tt class="py-op">+</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1116" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1116', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"identifier"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5735"></a><tt class="py-lineno">5735</tt>  <tt class="py-line">    <tt class="py-string">"""typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')"""</tt> </tt>\r
-<a name="L5736"></a><tt class="py-lineno">5736</tt>  <tt class="py-line">\r </tt>
-<a name="L5737"></a><tt class="py-lineno">5737</tt>  <tt class="py-line">    <tt id="link-1117" class="py-name" targets="Variable pyparsing.pyparsing_common.ipv4_address=pyparsing.pyparsing_common-class.html#ipv4_address"><a title="pyparsing.pyparsing_common.ipv4_address" class="py-name" href="#" onclick="return doclink('link-1117', 'ipv4_address', 'link-1117');">ipv4_address</a></tt> <tt class="py-op">=</tt> <tt id="link-1118" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1118', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'(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}'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1119" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1119', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"IPv4 address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5738"></a><tt class="py-lineno">5738</tt>  <tt class="py-line">    <tt class="py-string">"IPv4 address (C{0.0.0.0 - 255.255.255.255})"</tt> </tt>\r
-<a name="L5739"></a><tt class="py-lineno">5739</tt>  <tt class="py-line">\r </tt>
-<a name="L5740"></a><tt class="py-lineno">5740</tt>  <tt class="py-line">    <tt id="link-1120" class="py-name" targets="Variable pyparsing.pyparsing_common._ipv6_part=pyparsing.pyparsing_common-class.html#_ipv6_part"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1120', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt> <tt class="py-op">=</tt> <tt id="link-1121" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1121', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[0-9a-fA-F]{1,4}'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1122" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1122', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"hex_integer"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5741"></a><tt class="py-lineno">5741</tt>  <tt class="py-line">    <tt id="link-1123" class="py-name" targets="Variable pyparsing.pyparsing_common._full_ipv6_address=pyparsing.pyparsing_common-class.html#_full_ipv6_address"><a title="pyparsing.pyparsing_common._full_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1123', '_full_ipv6_address', 'link-1123');">_full_ipv6_address</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-1124" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1124', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt id="link-1125" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1125', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1126" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1126', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"full IPv6 address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5742"></a><tt class="py-lineno">5742</tt>  <tt class="py-line">    <tt id="link-1127" class="py-name" targets="Variable pyparsing.pyparsing_common._short_ipv6_address=pyparsing.pyparsing_common-class.html#_short_ipv6_address"><a title="pyparsing.pyparsing_common._short_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1127', '_short_ipv6_address', 'link-1127');">_short_ipv6_address</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-1128" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1128', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt id="link-1129" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1129', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt id="link-1130" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1130', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">6</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"::"</tt> <tt class="py-op">+</tt> <tt id="link-1131" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1131', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt><tt id="link-1132" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1132', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt id="link-1133" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1133', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">6</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1134" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1134', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"short IPv6 address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5743"></a><tt class="py-lineno">5743</tt>  <tt class="py-line">    <tt id="link-1135" class="py-name"><a title="pyparsing.pyparsing_common._short_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1135', '_short_ipv6_address', 'link-1127');">_short_ipv6_address</a></tt><tt class="py-op">.</tt><tt id="link-1136" class="py-name" targets="Method pyparsing.ParserElement.addCondition()=pyparsing.ParserElement-class.html#addCondition"><a title="pyparsing.ParserElement.addCondition" class="py-name" href="#" onclick="return doclink('link-1136', 'addCondition', 'link-1136');">addCondition</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-number">1</tt> <tt class="py-keyword">for</tt> <tt class="py-name">tt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">t</tt> <tt class="py-keyword">if</tt> <tt id="link-1137" class="py-name" targets="Class pyparsing.pyparsing_common=pyparsing.pyparsing_common-class.html"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1137', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1138" class="py-name"><a title="pyparsing.pyparsing_common._ipv6_part" class="py-name" href="#" onclick="return doclink('link-1138', '_ipv6_part', 'link-1120');">_ipv6_part</a></tt><tt class="py-op">.</tt><tt id="link-1139" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-1139', 'matches', 'link-248');">matches</a></tt><tt class="py-op">(</tt><tt class="py-name">tt</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5744"></a><tt class="py-lineno">5744</tt>  <tt class="py-line">    <tt id="link-1140" class="py-name" targets="Variable pyparsing.pyparsing_common._mixed_ipv6_address=pyparsing.pyparsing_common-class.html#_mixed_ipv6_address"><a title="pyparsing.pyparsing_common._mixed_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1140', '_mixed_ipv6_address', 'link-1140');">_mixed_ipv6_address</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"::ffff:"</tt> <tt class="py-op">+</tt> <tt id="link-1141" class="py-name"><a title="pyparsing.pyparsing_common.ipv4_address" class="py-name" href="#" onclick="return doclink('link-1141', 'ipv4_address', 'link-1117');">ipv4_address</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1142" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1142', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"mixed IPv6 address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5745"></a><tt class="py-lineno">5745</tt>  <tt class="py-line">    <tt id="link-1143" class="py-name" targets="Variable pyparsing.pyparsing_common.ipv6_address=pyparsing.pyparsing_common-class.html#ipv6_address"><a title="pyparsing.pyparsing_common.ipv6_address" class="py-name" href="#" onclick="return doclink('link-1143', 'ipv6_address', 'link-1143');">ipv6_address</a></tt> <tt class="py-op">=</tt> <tt id="link-1144" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-1144', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-1145" class="py-name"><a title="pyparsing.pyparsing_common._full_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1145', '_full_ipv6_address', 'link-1123');">_full_ipv6_address</a></tt> <tt class="py-op">|</tt> <tt id="link-1146" class="py-name"><a title="pyparsing.pyparsing_common._mixed_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1146', '_mixed_ipv6_address', 'link-1140');">_mixed_ipv6_address</a></tt> <tt class="py-op">|</tt> <tt id="link-1147" class="py-name"><a title="pyparsing.pyparsing_common._short_ipv6_address" class="py-name" href="#" onclick="return doclink('link-1147', '_short_ipv6_address', 'link-1127');">_short_ipv6_address</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1148" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1148', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"IPv6 address"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1149" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1149', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"IPv6 address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5746"></a><tt class="py-lineno">5746</tt>  <tt class="py-line">    <tt class="py-string">"IPv6 address (long, short, or mixed form)"</tt> </tt>\r
-<a name="L5747"></a><tt class="py-lineno">5747</tt>  <tt class="py-line">\r </tt>
-<a name="L5748"></a><tt class="py-lineno">5748</tt>  <tt class="py-line">    <tt id="link-1150" class="py-name" targets="Variable pyparsing.pyparsing_common.mac_address=pyparsing.pyparsing_common-class.html#mac_address"><a title="pyparsing.pyparsing_common.mac_address" class="py-name" href="#" onclick="return doclink('link-1150', 'mac_address', 'link-1150');">mac_address</a></tt> <tt class="py-op">=</tt> <tt id="link-1151" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1151', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1152" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1152', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"MAC address"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5749"></a><tt class="py-lineno">5749</tt>  <tt class="py-line">    <tt class="py-string">"MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)"</tt> </tt>\r
-<a name="L5750"></a><tt class="py-lineno">5750</tt>  <tt class="py-line">\r </tt>
-<a name="L5751"></a><tt class="py-lineno">5751</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="pyparsing_common.convertToDate"></a><div id="pyparsing_common.convertToDate-def"><a name="L5752"></a><tt class="py-lineno">5752</tt> <a class="py-toggle" href="#" id="pyparsing_common.convertToDate-toggle" onclick="return toggle('pyparsing_common.convertToDate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.pyparsing_common-class.html#convertToDate">convertToDate</a><tt class="py-op">(</tt><tt class="py-param">fmt</tt><tt class="py-op">=</tt><tt class="py-string">"%Y-%m-%d"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_common.convertToDate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_common.convertToDate-expanded"><a name="L5753"></a><tt class="py-lineno">5753</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5754"></a><tt class="py-lineno">5754</tt>  <tt class="py-line"><tt class="py-docstring">        Helper to create a parse action for converting parsed date string to Python datetime.date\r</tt> </tt>
-<a name="L5755"></a><tt class="py-lineno">5755</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5756"></a><tt class="py-lineno">5756</tt>  <tt class="py-line"><tt class="py-docstring">        Params -\r</tt> </tt>
-<a name="L5757"></a><tt class="py-lineno">5757</tt>  <tt class="py-line"><tt class="py-docstring">         - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%d"})\r</tt> </tt>
-<a name="L5758"></a><tt class="py-lineno">5758</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5759"></a><tt class="py-lineno">5759</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L5760"></a><tt class="py-lineno">5760</tt>  <tt class="py-line"><tt class="py-docstring">            date_expr = pyparsing_common.iso8601_date.copy()\r</tt> </tt>
-<a name="L5761"></a><tt class="py-lineno">5761</tt>  <tt class="py-line"><tt class="py-docstring">            date_expr.setParseAction(pyparsing_common.convertToDate())\r</tt> </tt>
-<a name="L5762"></a><tt class="py-lineno">5762</tt>  <tt class="py-line"><tt class="py-docstring">            print(date_expr.parseString("1999-12-31"))\r</tt> </tt>
-<a name="L5763"></a><tt class="py-lineno">5763</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L5764"></a><tt class="py-lineno">5764</tt>  <tt class="py-line"><tt class="py-docstring">            [datetime.date(1999, 12, 31)]\r</tt> </tt>
-<a name="L5765"></a><tt class="py-lineno">5765</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L5766"></a><tt class="py-lineno">5766</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">cvt_fn</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5767"></a><tt class="py-lineno">5767</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5768"></a><tt class="py-lineno">5768</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">strptime</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">fmt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">date</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5769"></a><tt class="py-lineno">5769</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ve</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5770"></a><tt class="py-lineno">5770</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-1153" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-1153', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">l</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">ve</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5771"></a><tt class="py-lineno">5771</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cvt_fn</tt> </tt>\r
-</div><a name="L5772"></a><tt class="py-lineno">5772</tt>  <tt class="py-line">\r </tt>
-<a name="L5773"></a><tt class="py-lineno">5773</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="pyparsing_common.convertToDatetime"></a><div id="pyparsing_common.convertToDatetime-def"><a name="L5774"></a><tt class="py-lineno">5774</tt> <a class="py-toggle" href="#" id="pyparsing_common.convertToDatetime-toggle" onclick="return toggle('pyparsing_common.convertToDatetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.pyparsing_common-class.html#convertToDatetime">convertToDatetime</a><tt class="py-op">(</tt><tt class="py-param">fmt</tt><tt class="py-op">=</tt><tt class="py-string">"%Y-%m-%dT%H:%M:%S.%f"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_common.convertToDatetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_common.convertToDatetime-expanded"><a name="L5775"></a><tt class="py-lineno">5775</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5776"></a><tt class="py-lineno">5776</tt>  <tt class="py-line"><tt class="py-docstring">        Helper to create a parse action for converting parsed datetime string to Python datetime.datetime\r</tt> </tt>
-<a name="L5777"></a><tt class="py-lineno">5777</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5778"></a><tt class="py-lineno">5778</tt>  <tt class="py-line"><tt class="py-docstring">        Params -\r</tt> </tt>
-<a name="L5779"></a><tt class="py-lineno">5779</tt>  <tt class="py-line"><tt class="py-docstring">         - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%dT%H:%M:%S.%f"})\r</tt> </tt>
-<a name="L5780"></a><tt class="py-lineno">5780</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5781"></a><tt class="py-lineno">5781</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L5782"></a><tt class="py-lineno">5782</tt>  <tt class="py-line"><tt class="py-docstring">            dt_expr = pyparsing_common.iso8601_datetime.copy()\r</tt> </tt>
-<a name="L5783"></a><tt class="py-lineno">5783</tt>  <tt class="py-line"><tt class="py-docstring">            dt_expr.setParseAction(pyparsing_common.convertToDatetime())\r</tt> </tt>
-<a name="L5784"></a><tt class="py-lineno">5784</tt>  <tt class="py-line"><tt class="py-docstring">            print(dt_expr.parseString("1999-12-31T23:59:59.999"))\r</tt> </tt>
-<a name="L5785"></a><tt class="py-lineno">5785</tt>  <tt class="py-line"><tt class="py-docstring">        prints::\r</tt> </tt>
-<a name="L5786"></a><tt class="py-lineno">5786</tt>  <tt class="py-line"><tt class="py-docstring">            [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)]\r</tt> </tt>
-<a name="L5787"></a><tt class="py-lineno">5787</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L5788"></a><tt class="py-lineno">5788</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">cvt_fn</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt><tt class="py-param">l</tt><tt class="py-op">,</tt><tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5789"></a><tt class="py-lineno">5789</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5790"></a><tt class="py-lineno">5790</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">strptime</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">fmt</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5791"></a><tt class="py-lineno">5791</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ve</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5792"></a><tt class="py-lineno">5792</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-1154" class="py-name"><a title="pyparsing.ParseException" class="py-name" href="#" onclick="return doclink('link-1154', 'ParseException', 'link-145');">ParseException</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">l</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">ve</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5793"></a><tt class="py-lineno">5793</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cvt_fn</tt> </tt>\r
-</div><a name="L5794"></a><tt class="py-lineno">5794</tt>  <tt class="py-line">\r </tt>
-<a name="L5795"></a><tt class="py-lineno">5795</tt>  <tt class="py-line">    <tt id="link-1155" class="py-name" targets="Variable pyparsing.pyparsing_common.iso8601_date=pyparsing.pyparsing_common-class.html#iso8601_date"><a title="pyparsing.pyparsing_common.iso8601_date" class="py-name" href="#" onclick="return doclink('link-1155', 'iso8601_date', 'link-1155');">iso8601_date</a></tt> <tt class="py-op">=</tt> <tt id="link-1156" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1156', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'(?P&lt;year&gt;\d{4})(?:-(?P&lt;month&gt;\d\d)(?:-(?P&lt;day&gt;\d\d))?)?'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1157" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1157', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"ISO8601 date"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5796"></a><tt class="py-lineno">5796</tt>  <tt class="py-line">    <tt class="py-string">"ISO8601 date (C{yyyy-mm-dd})"</tt> </tt>\r
-<a name="L5797"></a><tt class="py-lineno">5797</tt>  <tt class="py-line">\r </tt>
-<a name="L5798"></a><tt class="py-lineno">5798</tt>  <tt class="py-line">    <tt id="link-1158" class="py-name" targets="Variable pyparsing.pyparsing_common.iso8601_datetime=pyparsing.pyparsing_common-class.html#iso8601_datetime"><a title="pyparsing.pyparsing_common.iso8601_datetime" class="py-name" href="#" onclick="return doclink('link-1158', 'iso8601_datetime', 'link-1158');">iso8601_datetime</a></tt> <tt class="py-op">=</tt> <tt id="link-1159" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1159', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'(?P&lt;year&gt;\d{4})-(?P&lt;month&gt;\d\d)-(?P&lt;day&gt;\d\d)[T ](?P&lt;hour&gt;\d\d):(?P&lt;minute&gt;\d\d)(:(?P&lt;second&gt;\d\d(\.\d*)?)?)?(?P&lt;tz&gt;Z|[+-]\d\d:?\d\d)?'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1160" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1160', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"ISO8601 datetime"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5799"></a><tt class="py-lineno">5799</tt>  <tt class="py-line">    <tt class="py-string">"ISO8601 datetime (C{yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)}) - trailing seconds, milliseconds, and timezone optional; accepts separating C{'T'} or C{' '}"</tt> </tt>\r
-<a name="L5800"></a><tt class="py-lineno">5800</tt>  <tt class="py-line">\r </tt>
-<a name="L5801"></a><tt class="py-lineno">5801</tt>  <tt class="py-line">    <tt id="link-1161" class="py-name" targets="Variable pyparsing.pyparsing_common.uuid=pyparsing.pyparsing_common-class.html#uuid"><a title="pyparsing.pyparsing_common.uuid" class="py-name" href="#" onclick="return doclink('link-1161', 'uuid', 'link-1161');">uuid</a></tt> <tt class="py-op">=</tt> <tt id="link-1162" class="py-name"><a title="pyparsing.Regex" class="py-name" href="#" onclick="return doclink('link-1162', 'Regex', 'link-11');">Regex</a></tt><tt class="py-op">(</tt><tt class="py-string">r'[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1163" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1163', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"UUID"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5802"></a><tt class="py-lineno">5802</tt>  <tt class="py-line">    <tt class="py-string">"UUID (C{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})"</tt> </tt>\r
-<a name="L5803"></a><tt class="py-lineno">5803</tt>  <tt class="py-line">\r </tt>
-<a name="L5804"></a><tt class="py-lineno">5804</tt>  <tt class="py-line">    <tt id="link-1164" class="py-name" targets="Variable pyparsing.pyparsing_common._html_stripper=pyparsing.pyparsing_common-class.html#_html_stripper"><a title="pyparsing.pyparsing_common._html_stripper" class="py-name" href="#" onclick="return doclink('link-1164', '_html_stripper', 'link-1164');">_html_stripper</a></tt> <tt class="py-op">=</tt> <tt id="link-1165" class="py-name"><a title="pyparsing.anyOpenTag" class="py-name" href="#" onclick="return doclink('link-1165', 'anyOpenTag', 'link-993');">anyOpenTag</a></tt><tt class="py-op">.</tt><tt id="link-1166" class="py-name"><a title="pyparsing.ParserElement.suppress
-pyparsing.Suppress.suppress" class="py-name" href="#" onclick="return doclink('link-1166', 'suppress', 'link-964');">suppress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">|</tt> <tt id="link-1167" class="py-name"><a title="pyparsing.anyCloseTag" class="py-name" href="#" onclick="return doclink('link-1167', 'anyCloseTag', 'link-994');">anyCloseTag</a></tt><tt class="py-op">.</tt><tt id="link-1168" class="py-name"><a title="pyparsing.ParserElement.suppress
-pyparsing.Suppress.suppress" class="py-name" href="#" onclick="return doclink('link-1168', 'suppress', 'link-964');">suppress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5805"></a><tt class="py-lineno">5805</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>\r
-<a name="pyparsing_common.stripHTMLTags"></a><div id="pyparsing_common.stripHTMLTags-def"><a name="L5806"></a><tt class="py-lineno">5806</tt> <a class="py-toggle" href="#" id="pyparsing_common.stripHTMLTags-toggle" onclick="return toggle('pyparsing_common.stripHTMLTags');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.pyparsing_common-class.html#stripHTMLTags">stripHTMLTags</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">l</tt><tt class="py-op">,</tt> <tt class="py-param">tokens</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_common.stripHTMLTags-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_common.stripHTMLTags-expanded"><a name="L5807"></a><tt class="py-lineno">5807</tt>  <tt class="py-line">        <tt class="py-docstring">"""\r</tt> </tt>
-<a name="L5808"></a><tt class="py-lineno">5808</tt>  <tt class="py-line"><tt class="py-docstring">        Parse action to remove HTML tags from web page HTML source\r</tt> </tt>
-<a name="L5809"></a><tt class="py-lineno">5809</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5810"></a><tt class="py-lineno">5810</tt>  <tt class="py-line"><tt class="py-docstring">        Example::\r</tt> </tt>
-<a name="L5811"></a><tt class="py-lineno">5811</tt>  <tt class="py-line"><tt class="py-docstring">            # strip HTML links from normal text\r</tt> </tt>
-<a name="L5812"></a><tt class="py-lineno">5812</tt>  <tt class="py-line"><tt class="py-docstring">            text = '&lt;td&gt;More info at the &lt;a href="http://pyparsing.wikispaces.com"&gt;pyparsing&lt;/a&gt; wiki page&lt;/td&gt;'\r</tt> </tt>
-<a name="L5813"></a><tt class="py-lineno">5813</tt>  <tt class="py-line"><tt class="py-docstring">            td,td_end = makeHTMLTags("TD")\r</tt> </tt>
-<a name="L5814"></a><tt class="py-lineno">5814</tt>  <tt class="py-line"><tt class="py-docstring">            table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end\r</tt> </tt>
-<a name="L5815"></a><tt class="py-lineno">5815</tt>  <tt class="py-line"><tt class="py-docstring">\r</tt> </tt>
-<a name="L5816"></a><tt class="py-lineno">5816</tt>  <tt class="py-line"><tt class="py-docstring">            print(table_text.parseString(text).body) # -&gt; 'More info at the pyparsing wiki page'\r</tt> </tt>
-<a name="L5817"></a><tt class="py-lineno">5817</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>\r
-<a name="L5818"></a><tt class="py-lineno">5818</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-1169" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1169', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1170" class="py-name"><a title="pyparsing.pyparsing_common._html_stripper" class="py-name" href="#" onclick="return doclink('link-1170', '_html_stripper', 'link-1164');">_html_stripper</a></tt><tt class="py-op">.</tt><tt id="link-1171" class="py-name"><a title="pyparsing.ParserElement.transformString" class="py-name" href="#" onclick="return doclink('link-1171', 'transformString', 'link-13');">transformString</a></tt><tt class="py-op">(</tt><tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5819"></a><tt class="py-lineno">5819</tt>  <tt class="py-line">\r </tt>
-<a name="L5820"></a><tt class="py-lineno">5820</tt>  <tt class="py-line">    <tt id="link-1172" class="py-name"><a title="pyparsing._commasepitem
-pyparsing.pyparsing_common._commasepitem" class="py-name" href="#" onclick="return doclink('link-1172', '_commasepitem', 'link-1033');">_commasepitem</a></tt> <tt class="py-op">=</tt> <tt id="link-1173" class="py-name"><a title="pyparsing.Combine" class="py-name" href="#" onclick="return doclink('link-1173', 'Combine', 'link-680');">Combine</a></tt><tt class="py-op">(</tt><tt id="link-1174" class="py-name"><a title="pyparsing.OneOrMore" class="py-name" href="#" onclick="return doclink('link-1174', 'OneOrMore', 'link-283');">OneOrMore</a></tt><tt class="py-op">(</tt><tt class="py-op">~</tt><tt id="link-1175" class="py-name"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-1175', 'Literal', 'link-326');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-op">~</tt><tt id="link-1176" class="py-name"><a title="pyparsing.LineEnd" class="py-name" href="#" onclick="return doclink('link-1176', 'LineEnd', 'link-485');">LineEnd</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-1177" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1177', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1178" class="py-name"><a title="pyparsing.printables
-pyparsing.unicode_set.printables" class="py-name" href="#" onclick="return doclink('link-1178', 'printables', 'link-29');">printables</a></tt><tt class="py-op">,</tt> <tt class="py-name">excludeChars</tt><tt class="py-op">=</tt><tt class="py-string">','</tt><tt class="py-op">)</tt>\r </tt>
-<a name="L5821"></a><tt class="py-lineno">5821</tt>  <tt class="py-line">                                        <tt class="py-op">+</tt> <tt id="link-1179" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1179', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt> <tt id="link-1180" class="py-name"><a title="pyparsing.White" class="py-name" href="#" onclick="return doclink('link-1180', 'White', 'link-461');">White</a></tt><tt class="py-op">(</tt><tt class="py-string">" \t"</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1181" class="py-name"><a title="pyparsing.Forward.streamline
-pyparsing.ParseElementEnhance.streamline
-pyparsing.ParseExpression.streamline
-pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doclink('link-1181', 'streamline', 'link-234');">streamline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1182" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1182', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"commaItem"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5822"></a><tt class="py-lineno">5822</tt>  <tt class="py-line">    <tt id="link-1183" class="py-name" targets="Variable pyparsing.pyparsing_common.comma_separated_list=pyparsing.pyparsing_common-class.html#comma_separated_list"><a title="pyparsing.pyparsing_common.comma_separated_list" class="py-name" href="#" onclick="return doclink('link-1183', 'comma_separated_list', 'link-1183');">comma_separated_list</a></tt> <tt class="py-op">=</tt> <tt id="link-1184" class="py-name"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1184', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt> <tt id="link-1185" class="py-name"><a title="pyparsing.Optional" class="py-name" href="#" onclick="return doclink('link-1185', 'Optional', 'link-285');">Optional</a></tt><tt class="py-op">(</tt> <tt id="link-1186" class="py-name"><a title="pyparsing.quotedString" class="py-name" href="#" onclick="return doclink('link-1186', 'quotedString', 'link-834');">quotedString</a></tt><tt class="py-op">.</tt><tt id="link-1187" class="py-name"><a title="pyparsing.Forward.copy
-pyparsing.Keyword.copy
-pyparsing.ParseExpression.copy
-pyparsing.ParseResults.copy
-pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('link-1187', 'copy', 'link-2');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">|</tt> <tt id="link-1188" class="py-name"><a title="pyparsing._commasepitem
-pyparsing.pyparsing_common._commasepitem" class="py-name" href="#" onclick="return doclink('link-1188', '_commasepitem', 'link-1033');">_commasepitem</a></tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1189" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1189', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"comma separated list"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5823"></a><tt class="py-lineno">5823</tt>  <tt class="py-line">    <tt class="py-string">"""Predefined expression of 1 or more printable words or quoted strings, separated by commas."""</tt> </tt>\r
-<a name="L5824"></a><tt class="py-lineno">5824</tt>  <tt class="py-line">\r </tt>
-<a name="L5825"></a><tt class="py-lineno">5825</tt>  <tt class="py-line">    <tt id="link-1190" class="py-name"><a title="pyparsing.pyparsing_common.upcaseTokens
-pyparsing.upcaseTokens" class="py-name" href="#" onclick="return doclink('link-1190', 'upcaseTokens', 'link-812');">upcaseTokens</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-1191" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1191', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5826"></a><tt class="py-lineno">5826</tt>  <tt class="py-line">    <tt class="py-string">"""Parse action to convert tokens to upper case."""</tt> </tt>\r
-<a name="L5827"></a><tt class="py-lineno">5827</tt>  <tt class="py-line">\r </tt>
-<a name="L5828"></a><tt class="py-lineno">5828</tt>  <tt class="py-line">    <tt id="link-1192" class="py-name"><a title="pyparsing.downcaseTokens
-pyparsing.pyparsing_common.downcaseTokens" class="py-name" href="#" onclick="return doclink('link-1192', 'downcaseTokens', 'link-814');">downcaseTokens</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-1193" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1193', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> <tt class="py-name">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5829"></a><tt class="py-lineno">5829</tt>  <tt class="py-line">    <tt class="py-string">"""Parse action to convert tokens to lower case."""</tt> </tt>\r
-</div><a name="L5830"></a><tt class="py-lineno">5830</tt>  <tt class="py-line">\r </tt>
-<a name="_lazyclassproperty"></a><div id="_lazyclassproperty-def"><a name="L5831"></a><tt class="py-lineno">5831</tt>  <tt class="py-line">\r </tt>
-<a name="L5832"></a><tt class="py-lineno">5832</tt> <a class="py-toggle" href="#" id="_lazyclassproperty-toggle" onclick="return toggle('_lazyclassproperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing._lazyclassproperty-class.html">_lazyclassproperty</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_lazyclassproperty-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_lazyclassproperty-expanded"><a name="_lazyclassproperty.__init__"></a><div id="_lazyclassproperty.__init__-def"><a name="L5833"></a><tt class="py-lineno">5833</tt> <a class="py-toggle" href="#" id="_lazyclassproperty.__init__-toggle" onclick="return toggle('_lazyclassproperty.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._lazyclassproperty-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_lazyclassproperty.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_lazyclassproperty.__init__-expanded"><a name="L5834"></a><tt class="py-lineno">5834</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fn</tt> <tt class="py-op">=</tt> <tt class="py-name">fn</tt> </tt>\r
-</div><a name="L5835"></a><tt class="py-lineno">5835</tt>  <tt class="py-line">\r </tt>
-<a name="_lazyclassproperty.__get__"></a><div id="_lazyclassproperty.__get__-def"><a name="L5836"></a><tt class="py-lineno">5836</tt> <a class="py-toggle" href="#" id="_lazyclassproperty.__get__-toggle" onclick="return toggle('_lazyclassproperty.__get__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing._lazyclassproperty-class.html#__get__">__get__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="_lazyclassproperty.__get__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_lazyclassproperty.__get__-expanded"><a name="L5837"></a><tt class="py-lineno">5837</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5838"></a><tt class="py-lineno">5838</tt>  <tt class="py-line">            <tt class="py-name">cls</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5839"></a><tt class="py-lineno">5839</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fn</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5840"></a><tt class="py-lineno">5840</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fn</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">ret</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5841"></a><tt class="py-lineno">5841</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>\r
-</div></div><a name="L5842"></a><tt class="py-lineno">5842</tt>  <tt class="py-line">\r </tt>
-<a name="unicode_set"></a><div id="unicode_set-def"><a name="L5843"></a><tt class="py-lineno">5843</tt>  <tt class="py-line">\r </tt>
-<a name="L5844"></a><tt class="py-lineno">5844</tt> <a class="py-toggle" href="#" id="unicode_set-toggle" onclick="return toggle('unicode_set');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.unicode_set-class.html">unicode_set</a><tt class="py-op">:</tt> </tt>\r
-</div><div id="unicode_set-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="unicode_set-expanded"><a name="L5845"></a><tt class="py-lineno">5845</tt>  <tt class="py-line">    <tt id="link-1194" class="py-name" targets="Variable pyparsing.pyparsing_unicode.Arabic._ranges=pyparsing.pyparsing_unicode.Arabic-class.html#_ranges,Variable pyparsing.pyparsing_unicode.CJK._ranges=pyparsing.pyparsing_unicode.CJK-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Chinese._ranges=pyparsing.pyparsing_unicode.Chinese-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Cyrillic._ranges=pyparsing.pyparsing_unicode.Cyrillic-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Devanagari._ranges=pyparsing.pyparsing_unicode.Devanagari-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Greek._ranges=pyparsing.pyparsing_unicode.Greek-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Hebrew._ranges=pyparsing.pyparsing_unicode.Hebrew-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges=pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Japanese.Kanji._ranges=pyparsing.pyparsing_unicode.Japanese.Kanji-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Japanese.Katakana._ranges=pyparsing.pyparsing_unicode.Japanese.Katakana-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Japanese._ranges=pyparsing.pyparsing_unicode.Japanese-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Korean._ranges=pyparsing.pyparsing_unicode.Korean-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Latin1._ranges=pyparsing.pyparsing_unicode.Latin1-class.html#_ranges,Variable pyparsing.pyparsing_unicode.Thai._ranges=pyparsing.pyparsing_unicode.Thai-class.html#_ranges,Variable pyparsing.pyparsing_unicode._ranges=pyparsing.pyparsing_unicode-class.html#_ranges,Variable pyparsing.unicode_set._ranges=pyparsing.unicode_set-class.html#_ranges"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1194', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L5846"></a><tt class="py-lineno">5846</tt>  <tt class="py-line">\r </tt>
-<a name="L5847"></a><tt class="py-lineno">5847</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">_lazyclassproperty</tt> </tt>\r
-<a name="unicode_set.printables"></a><div id="unicode_set.printables-def"><a name="L5848"></a><tt class="py-lineno">5848</tt> <a class="py-toggle" href="#" id="unicode_set.printables-toggle" onclick="return toggle('unicode_set.printables');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.unicode_set-class.html#printables">printables</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="unicode_set.printables-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="unicode_set.printables-expanded"><a name="L5849"></a><tt class="py-lineno">5849</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">filterfalse</tt><tt class="py-op">(</tt><tt class="py-name">unicode</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">r</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1195" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1195', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5850"></a><tt class="py-lineno">5850</tt>  <tt class="py-line">\r </tt>
-<a name="L5851"></a><tt class="py-lineno">5851</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">_lazyclassproperty</tt> </tt>\r
-<a name="unicode_set.alphas"></a><div id="unicode_set.alphas-def"><a name="L5852"></a><tt class="py-lineno">5852</tt> <a class="py-toggle" href="#" id="unicode_set.alphas-toggle" onclick="return toggle('unicode_set.alphas');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.unicode_set-class.html#alphas">alphas</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="unicode_set.alphas-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="unicode_set.alphas-expanded"><a name="L5853"></a><tt class="py-lineno">5853</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">filter</tt><tt class="py-op">(</tt><tt class="py-name">unicode</tt><tt class="py-op">.</tt><tt class="py-name">isalpha</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">r</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1196" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1196', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5854"></a><tt class="py-lineno">5854</tt>  <tt class="py-line">\r </tt>
-<a name="L5855"></a><tt class="py-lineno">5855</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">_lazyclassproperty</tt> </tt>\r
-<a name="unicode_set.nums"></a><div id="unicode_set.nums-def"><a name="L5856"></a><tt class="py-lineno">5856</tt> <a class="py-toggle" href="#" id="unicode_set.nums-toggle" onclick="return toggle('unicode_set.nums');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.unicode_set-class.html#nums">nums</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="unicode_set.nums-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="unicode_set.nums-expanded"><a name="L5857"></a><tt class="py-lineno">5857</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">filter</tt><tt class="py-op">(</tt><tt class="py-name">unicode</tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">r</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1197" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1197', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-</div><a name="L5858"></a><tt class="py-lineno">5858</tt>  <tt class="py-line">\r </tt>
-<a name="L5859"></a><tt class="py-lineno">5859</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">_lazyclassproperty</tt> </tt>\r
-<a name="unicode_set.alphanums"></a><div id="unicode_set.alphanums-def"><a name="L5860"></a><tt class="py-lineno">5860</tt> <a class="py-toggle" href="#" id="unicode_set.alphanums-toggle" onclick="return toggle('unicode_set.alphanums');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyparsing.unicode_set-class.html#alphanums">alphanums</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="unicode_set.alphanums-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="unicode_set.alphanums-expanded"><a name="L5861"></a><tt class="py-lineno">5861</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1198" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-1198', 'alphas', 'link-21');">alphas</a></tt> <tt class="py-op">+</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1199" class="py-name"><a title="pyparsing.nums
-pyparsing.unicode_set.nums" class="py-name" href="#" onclick="return doclink('link-1199', 'nums', 'link-22');">nums</a></tt> </tt>\r
-</div></div><a name="L5862"></a><tt class="py-lineno">5862</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode"></a><div id="pyparsing_unicode-def"><a name="L5863"></a><tt class="py-lineno">5863</tt>  <tt class="py-line">\r </tt>
-<a name="L5864"></a><tt class="py-lineno">5864</tt> <a class="py-toggle" href="#" id="pyparsing_unicode-toggle" onclick="return toggle('pyparsing_unicode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pyparsing_unicode-expanded"><a name="L5865"></a><tt class="py-lineno">5865</tt>  <tt class="py-line">    <tt id="link-1200" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1200', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">32</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxunicode</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-<a name="L5866"></a><tt class="py-lineno">5866</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Latin1"></a><div id="pyparsing_unicode.Latin1-def"><a name="L5867"></a><tt class="py-lineno">5867</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Latin1-toggle" onclick="return toggle('pyparsing_unicode.Latin1');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Latin1-class.html">Latin1</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Latin1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Latin1-expanded"><a name="L5868"></a><tt class="py-lineno">5868</tt>  <tt class="py-line">        <tt id="link-1201" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1201', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt>\r </tt>
-<a name="L5869"></a><tt class="py-lineno">5869</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-number">0x0020</tt><tt class="py-op">,</tt> <tt class="py-number">0x007e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x00a0</tt><tt class="py-op">,</tt> <tt class="py-number">0x00ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L5870"></a><tt class="py-lineno">5870</tt>  <tt class="py-line">        <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5871"></a><tt class="py-lineno">5871</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Greek"></a><div id="pyparsing_unicode.Greek-def"><a name="L5872"></a><tt class="py-lineno">5872</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Greek-toggle" onclick="return toggle('pyparsing_unicode.Greek');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Greek-class.html">Greek</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Greek-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Greek-expanded"><a name="L5873"></a><tt class="py-lineno">5873</tt>  <tt class="py-line">        <tt id="link-1202" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1202', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt>\r </tt>
-<a name="L5874"></a><tt class="py-lineno">5874</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-number">0x0370</tt><tt class="py-op">,</tt> <tt class="py-number">0x03ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f00</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f15</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f18</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f1d</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f20</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f45</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f48</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f4d</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L5875"></a><tt class="py-lineno">5875</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-number">0x1f50</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f57</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f59</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f5b</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f5d</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f5f</tt><tt class="py-op">,</tt> <tt class="py-number">0x1f7d</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1f80</tt><tt class="py-op">,</tt> <tt class="py-number">0x1fb4</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1fb6</tt><tt class="py-op">,</tt> <tt class="py-number">0x1fc4</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L5876"></a><tt class="py-lineno">5876</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-number">0x1fc6</tt><tt class="py-op">,</tt> <tt class="py-number">0x1fd3</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1fd6</tt><tt class="py-op">,</tt> <tt class="py-number">0x1fdb</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1fdd</tt><tt class="py-op">,</tt> <tt class="py-number">0x1fef</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1ff2</tt><tt class="py-op">,</tt> <tt class="py-number">0x1ff4</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1ff6</tt><tt class="py-op">,</tt> <tt class="py-number">0x1ffe</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\r </tt>
-<a name="L5877"></a><tt class="py-lineno">5877</tt>  <tt class="py-line">        <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5878"></a><tt class="py-lineno">5878</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Cyrillic"></a><div id="pyparsing_unicode.Cyrillic-def"><a name="L5879"></a><tt class="py-lineno">5879</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Cyrillic-toggle" onclick="return toggle('pyparsing_unicode.Cyrillic');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Cyrillic-class.html">Cyrillic</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Cyrillic-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Cyrillic-expanded"><a name="L5880"></a><tt class="py-lineno">5880</tt>  <tt class="py-line">        <tt id="link-1203" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1203', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x0400</tt><tt class="py-op">,</tt> <tt class="py-number">0x04ff</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L5881"></a><tt class="py-lineno">5881</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Chinese"></a><div id="pyparsing_unicode.Chinese-def"><a name="L5882"></a><tt class="py-lineno">5882</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Chinese-toggle" onclick="return toggle('pyparsing_unicode.Chinese');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Chinese-class.html">Chinese</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Chinese-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Chinese-expanded"><a name="L5883"></a><tt class="py-lineno">5883</tt>  <tt class="py-line">        <tt id="link-1204" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1204', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x4e00</tt><tt class="py-op">,</tt> <tt class="py-number">0x9fff</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-</div><a name="L5884"></a><tt class="py-lineno">5884</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Japanese"></a><div id="pyparsing_unicode.Japanese-def"><a name="L5885"></a><tt class="py-lineno">5885</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Japanese-toggle" onclick="return toggle('pyparsing_unicode.Japanese');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Japanese-class.html">Japanese</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Japanese-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Japanese-expanded"><a name="L5886"></a><tt class="py-lineno">5886</tt>  <tt class="py-line">        <tt id="link-1205" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1205', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-op">]</tt> <tt class="py-comment"># sum of Kanji, Hiragana, and Katakana ranges</tt> </tt>\r
-<a name="L5887"></a><tt class="py-lineno">5887</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Japanese.Kanji"></a><div id="pyparsing_unicode.Japanese.Kanji-def"><a name="L5888"></a><tt class="py-lineno">5888</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Japanese.Kanji-toggle" onclick="return toggle('pyparsing_unicode.Japanese.Kanji');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html">Kanji</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Japanese.Kanji-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="pyparsing_unicode.Japanese.Kanji-expanded"><a name="L5889"></a><tt class="py-lineno">5889</tt>  <tt class="py-line">            <tt id="link-1206" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1206', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x4E00</tt><tt class="py-op">,</tt> <tt class="py-number">0x9Fbf</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5890"></a><tt class="py-lineno">5890</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Japanese.Hiragana"></a><div id="pyparsing_unicode.Japanese.Hiragana-def"><a name="L5891"></a><tt class="py-lineno">5891</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Japanese.Hiragana-toggle" onclick="return toggle('pyparsing_unicode.Japanese.Hiragana');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html">Hiragana</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Japanese.Hiragana-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="pyparsing_unicode.Japanese.Hiragana-expanded"><a name="L5892"></a><tt class="py-lineno">5892</tt>  <tt class="py-line">            <tt id="link-1207" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1207', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x3040</tt><tt class="py-op">,</tt> <tt class="py-number">0x309f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5893"></a><tt class="py-lineno">5893</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Japanese.Katakana"></a><div id="pyparsing_unicode.Japanese.Katakana-def"><a name="L5894"></a><tt class="py-lineno">5894</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Japanese.Katakana-toggle" onclick="return toggle('pyparsing_unicode.Japanese.Katakana');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html">Katakana</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Japanese.Katakana-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="pyparsing_unicode.Japanese.Katakana-expanded"><a name="L5895"></a><tt class="py-lineno">5895</tt>  <tt class="py-line">            <tt id="link-1208" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1208', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x30a0</tt><tt class="py-op">,</tt> <tt class="py-number">0x30ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L5896"></a><tt class="py-lineno">5896</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Korean"></a><div id="pyparsing_unicode.Korean-def"><a name="L5897"></a><tt class="py-lineno">5897</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Korean-toggle" onclick="return toggle('pyparsing_unicode.Korean');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Korean-class.html">Korean</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Korean-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Korean-expanded"><a name="L5898"></a><tt class="py-lineno">5898</tt>  <tt class="py-line">        <tt id="link-1209" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1209', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0xac00</tt><tt class="py-op">,</tt> <tt class="py-number">0xd7af</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x1100</tt><tt class="py-op">,</tt> <tt class="py-number">0x11ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x3130</tt><tt class="py-op">,</tt> <tt class="py-number">0x318f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0xa960</tt><tt class="py-op">,</tt> <tt class="py-number">0xa97f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0xd7b0</tt><tt class="py-op">,</tt> <tt class="py-number">0xd7ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5899"></a><tt class="py-lineno">5899</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.CJK"></a><div id="pyparsing_unicode.CJK-def"><a name="L5900"></a><tt class="py-lineno">5900</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.CJK-toggle" onclick="return toggle('pyparsing_unicode.CJK');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.CJK-class.html">CJK</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.CJK-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.CJK-expanded"><a name="L5901"></a><tt class="py-lineno">5901</tt>  <tt class="py-line">        <tt id="link-1210" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1210', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt>  <tt class="py-comment"># sum of Chinese, Japanese, and Korean ranges</tt>\r </tt>
-<a name="L5902"></a><tt class="py-lineno">5902</tt>  <tt class="py-line">        <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5903"></a><tt class="py-lineno">5903</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Thai"></a><div id="pyparsing_unicode.Thai-def"><a name="L5904"></a><tt class="py-lineno">5904</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Thai-toggle" onclick="return toggle('pyparsing_unicode.Thai');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Thai-class.html">Thai</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Thai-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Thai-expanded"><a name="L5905"></a><tt class="py-lineno">5905</tt>  <tt class="py-line">        <tt id="link-1211" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1211', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x0e01</tt><tt class="py-op">,</tt> <tt class="py-number">0x0e3a</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x0e3f</tt><tt class="py-op">,</tt> <tt class="py-number">0x0e5b</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5906"></a><tt class="py-lineno">5906</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Arabic"></a><div id="pyparsing_unicode.Arabic-def"><a name="L5907"></a><tt class="py-lineno">5907</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Arabic-toggle" onclick="return toggle('pyparsing_unicode.Arabic');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Arabic-class.html">Arabic</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Arabic-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Arabic-expanded"><a name="L5908"></a><tt class="py-lineno">5908</tt>  <tt class="py-line">        <tt id="link-1212" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1212', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x0600</tt><tt class="py-op">,</tt> <tt class="py-number">0x061b</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x061e</tt><tt class="py-op">,</tt> <tt class="py-number">0x06ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0x0700</tt><tt class="py-op">,</tt> <tt class="py-number">0x077f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5909"></a><tt class="py-lineno">5909</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Hebrew"></a><div id="pyparsing_unicode.Hebrew-def"><a name="L5910"></a><tt class="py-lineno">5910</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Hebrew-toggle" onclick="return toggle('pyparsing_unicode.Hebrew');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Hebrew-class.html">Hebrew</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Hebrew-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Hebrew-expanded"><a name="L5911"></a><tt class="py-lineno">5911</tt>  <tt class="py-line">        <tt id="link-1213" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1213', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x0590</tt><tt class="py-op">,</tt> <tt class="py-number">0x05ff</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>\r
-</div><a name="L5912"></a><tt class="py-lineno">5912</tt>  <tt class="py-line">\r </tt>
-<a name="pyparsing_unicode.Devanagari"></a><div id="pyparsing_unicode.Devanagari-def"><a name="L5913"></a><tt class="py-lineno">5913</tt> <a class="py-toggle" href="#" id="pyparsing_unicode.Devanagari-toggle" onclick="return toggle('pyparsing_unicode.Devanagari');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="pyparsing.pyparsing_unicode.Devanagari-class.html">Devanagari</a><tt class="py-op">(</tt><tt class="py-base-class">unicode_set</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>\r
-</div><div id="pyparsing_unicode.Devanagari-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="pyparsing_unicode.Devanagari-expanded"><a name="L5914"></a><tt class="py-lineno">5914</tt>  <tt class="py-line">        <tt id="link-1214" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1214', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-number">0x0900</tt><tt class="py-op">,</tt> <tt class="py-number">0x097f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0xa8e0</tt><tt class="py-op">,</tt> <tt class="py-number">0xa8ff</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>\r
-</div></div><a name="L5915"></a><tt class="py-lineno">5915</tt>  <tt class="py-line">\r </tt>
-<a name="L5916"></a><tt class="py-lineno">5916</tt>  <tt class="py-line"><tt id="link-1215" class="py-name" targets="Class pyparsing.pyparsing_unicode=pyparsing.pyparsing_unicode-class.html"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1215', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1216" class="py-name" targets="Class pyparsing.pyparsing_unicode.Japanese=pyparsing.pyparsing_unicode.Japanese-class.html"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1216', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1217" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1217', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt id="link-1218" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1218', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1219" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1219', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1220" class="py-name" targets="Class pyparsing.pyparsing_unicode.Japanese.Kanji=pyparsing.pyparsing_unicode.Japanese.Kanji-class.html"><a title="pyparsing.pyparsing_unicode.Japanese.Kanji" class="py-name" href="#" onclick="return doclink('link-1220', 'Kanji', 'link-1220');">Kanji</a></tt><tt class="py-op">.</tt><tt id="link-1221" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1221', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">+</tt> <tt id="link-1222" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1222', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1223" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1223', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1224" class="py-name" targets="Class pyparsing.pyparsing_unicode.Japanese.Hiragana=pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html"><a title="pyparsing.pyparsing_unicode.Japanese.Hiragana" class="py-name" href="#" onclick="return doclink('link-1224', 'Hiragana', 'link-1224');">Hiragana</a></tt><tt class="py-op">.</tt><tt id="link-1225" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1225', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">+</tt> <tt id="link-1226" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1226', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1227" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1227', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1228" class="py-name" targets="Class pyparsing.pyparsing_unicode.Japanese.Katakana=pyparsing.pyparsing_unicode.Japanese.Katakana-class.html"><a title="pyparsing.pyparsing_unicode.Japanese.Katakana" class="py-name" href="#" onclick="return doclink('link-1228', 'Katakana', 'link-1228');">Katakana</a></tt><tt class="py-op">.</tt><tt id="link-1229" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1229', '_ranges', 'link-1194');">_ranges</a></tt> </tt>\r
-<a name="L5917"></a><tt class="py-lineno">5917</tt>  <tt class="py-line"><tt id="link-1230" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1230', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1231" class="py-name" targets="Class pyparsing.pyparsing_unicode.CJK=pyparsing.pyparsing_unicode.CJK-class.html"><a title="pyparsing.pyparsing_unicode.CJK" class="py-name" href="#" onclick="return doclink('link-1231', 'CJK', 'link-1231');">CJK</a></tt><tt class="py-op">.</tt><tt id="link-1232" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1232', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">=</tt> <tt id="link-1233" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1233', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1234" class="py-name" targets="Class pyparsing.pyparsing_unicode.Chinese=pyparsing.pyparsing_unicode.Chinese-class.html"><a title="pyparsing.pyparsing_unicode.Chinese" class="py-name" href="#" onclick="return doclink('link-1234', 'Chinese', 'link-1234');">Chinese</a></tt><tt class="py-op">.</tt><tt id="link-1235" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1235', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">+</tt> <tt id="link-1236" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1236', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1237" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1237', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1238" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1238', '_ranges', 'link-1194');">_ranges</a></tt> <tt class="py-op">+</tt> <tt id="link-1239" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1239', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1240" class="py-name" targets="Class pyparsing.pyparsing_unicode.Korean=pyparsing.pyparsing_unicode.Korean-class.html"><a title="pyparsing.pyparsing_unicode.Korean" class="py-name" href="#" onclick="return doclink('link-1240', 'Korean', 'link-1240');">Korean</a></tt><tt class="py-op">.</tt><tt id="link-1241" class="py-name"><a title="pyparsing.pyparsing_unicode.Arabic._ranges
-pyparsing.pyparsing_unicode.CJK._ranges
-pyparsing.pyparsing_unicode.Chinese._ranges
-pyparsing.pyparsing_unicode.Cyrillic._ranges
-pyparsing.pyparsing_unicode.Devanagari._ranges
-pyparsing.pyparsing_unicode.Greek._ranges
-pyparsing.pyparsing_unicode.Hebrew._ranges
-pyparsing.pyparsing_unicode.Japanese.Hiragana._ranges
-pyparsing.pyparsing_unicode.Japanese.Kanji._ranges
-pyparsing.pyparsing_unicode.Japanese.Katakana._ranges
-pyparsing.pyparsing_unicode.Japanese._ranges
-pyparsing.pyparsing_unicode.Korean._ranges
-pyparsing.pyparsing_unicode.Latin1._ranges
-pyparsing.pyparsing_unicode.Thai._ranges
-pyparsing.pyparsing_unicode._ranges
-pyparsing.unicode_set._ranges" class="py-name" href="#" onclick="return doclink('link-1241', '_ranges', 'link-1194');">_ranges</a></tt> </tt>\r
-<a name="L5918"></a><tt class="py-lineno">5918</tt>  <tt class="py-line">\r </tt>
-<a name="L5919"></a><tt class="py-lineno">5919</tt>  <tt class="py-line"><tt class="py-comment"># define ranges in language character sets</tt>\r </tt>
-<a name="L5920"></a><tt class="py-lineno">5920</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-1242" class="py-name"><a title="pyparsing.PY_3" class="py-name" href="#" onclick="return doclink('link-1242', 'PY_3', 'link-5');">PY_3</a></tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5921"></a><tt class="py-lineno">5921</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1243" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1243', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;"</tt><tt class="py-op">,</tt> <tt id="link-1244" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1244', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1245" class="py-name" targets="Class pyparsing.pyparsing_unicode.Arabic=pyparsing.pyparsing_unicode.Arabic-class.html"><a title="pyparsing.pyparsing_unicode.Arabic" class="py-name" href="#" onclick="return doclink('link-1245', 'Arabic', 'link-1245');">Arabic</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5922"></a><tt class="py-lineno">5922</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1246" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1246', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#20013;&#25991;"</tt><tt class="py-op">,</tt> <tt id="link-1247" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1247', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1248" class="py-name"><a title="pyparsing.pyparsing_unicode.Chinese" class="py-name" href="#" onclick="return doclink('link-1248', 'Chinese', 'link-1234');">Chinese</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5923"></a><tt class="py-lineno">5923</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1249" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1249', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#1082;&#1080;&#1088;&#1080;&#1083;&#1083;&#1080;&#1094;&#1072;"</tt><tt class="py-op">,</tt> <tt id="link-1250" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1250', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1251" class="py-name" targets="Class pyparsing.pyparsing_unicode.Cyrillic=pyparsing.pyparsing_unicode.Cyrillic-class.html"><a title="pyparsing.pyparsing_unicode.Cyrillic" class="py-name" href="#" onclick="return doclink('link-1251', 'Cyrillic', 'link-1251');">Cyrillic</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5924"></a><tt class="py-lineno">5924</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1252" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1252', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;"</tt><tt class="py-op">,</tt> <tt id="link-1253" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1253', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1254" class="py-name" targets="Class pyparsing.pyparsing_unicode.Greek=pyparsing.pyparsing_unicode.Greek-class.html"><a title="pyparsing.pyparsing_unicode.Greek" class="py-name" href="#" onclick="return doclink('link-1254', 'Greek', 'link-1254');">Greek</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5925"></a><tt class="py-lineno">5925</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1255" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1255', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#1506;&#1460;&#1489;&#1512;&#1460;&#1497;&#1514;"</tt><tt class="py-op">,</tt> <tt id="link-1256" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1256', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1257" class="py-name" targets="Class pyparsing.pyparsing_unicode.Hebrew=pyparsing.pyparsing_unicode.Hebrew-class.html"><a title="pyparsing.pyparsing_unicode.Hebrew" class="py-name" href="#" onclick="return doclink('link-1257', 'Hebrew', 'link-1257');">Hebrew</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5926"></a><tt class="py-lineno">5926</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1258" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1258', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#26085;&#26412;&#35486;"</tt><tt class="py-op">,</tt> <tt id="link-1259" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1259', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1260" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1260', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5927"></a><tt class="py-lineno">5927</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1261" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1261', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1262" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1262', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#28450;&#23383;"</tt><tt class="py-op">,</tt> <tt id="link-1263" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1263', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1264" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1264', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1265" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese.Kanji" class="py-name" href="#" onclick="return doclink('link-1265', 'Kanji', 'link-1220');">Kanji</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5928"></a><tt class="py-lineno">5928</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1266" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1266', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1267" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1267', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#12459;&#12479;&#12459;&#12490;"</tt><tt class="py-op">,</tt> <tt id="link-1268" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1268', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1269" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1269', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1270" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese.Katakana" class="py-name" href="#" onclick="return doclink('link-1270', 'Katakana', 'link-1228');">Katakana</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5929"></a><tt class="py-lineno">5929</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1271" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1271', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1272" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1272', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#12402;&#12425;&#12364;&#12394;"</tt><tt class="py-op">,</tt> <tt id="link-1273" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1273', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1274" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese" class="py-name" href="#" onclick="return doclink('link-1274', 'Japanese', 'link-1216');">Japanese</a></tt><tt class="py-op">.</tt><tt id="link-1275" class="py-name"><a title="pyparsing.pyparsing_unicode.Japanese.Hiragana" class="py-name" href="#" onclick="return doclink('link-1275', 'Hiragana', 'link-1224');">Hiragana</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5930"></a><tt class="py-lineno">5930</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1276" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1276', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#54620;&#44397;&#50612;"</tt><tt class="py-op">,</tt> <tt id="link-1277" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1277', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1278" class="py-name"><a title="pyparsing.pyparsing_unicode.Korean" class="py-name" href="#" onclick="return doclink('link-1278', 'Korean', 'link-1240');">Korean</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5931"></a><tt class="py-lineno">5931</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1279" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1279', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#3652;&#3607;&#3618;"</tt><tt class="py-op">,</tt> <tt id="link-1280" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1280', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1281" class="py-name" targets="Class pyparsing.pyparsing_unicode.Thai=pyparsing.pyparsing_unicode.Thai-class.html"><a title="pyparsing.pyparsing_unicode.Thai" class="py-name" href="#" onclick="return doclink('link-1281', 'Thai', 'link-1281');">Thai</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5932"></a><tt class="py-lineno">5932</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-1282" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1282', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&#2342;&#2375;&#2357;&#2344;&#2366;&#2327;&#2352;&#2368;"</tt><tt class="py-op">,</tt> <tt id="link-1283" class="py-name"><a title="pyparsing.pyparsing_unicode" class="py-name" href="#" onclick="return doclink('link-1283', 'pyparsing_unicode', 'link-1215');">pyparsing_unicode</a></tt><tt class="py-op">.</tt><tt id="link-1284" class="py-name" targets="Class pyparsing.pyparsing_unicode.Devanagari=pyparsing.pyparsing_unicode.Devanagari-class.html"><a title="pyparsing.pyparsing_unicode.Devanagari" class="py-name" href="#" onclick="return doclink('link-1284', 'Devanagari', 'link-1284');">Devanagari</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5933"></a><tt class="py-lineno">5933</tt>  <tt class="py-line">\r </tt>
-<a name="L5934"></a><tt class="py-lineno">5934</tt>  <tt class="py-line">\r </tt>
-<a name="L5935"></a><tt class="py-lineno">5935</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">"__main__"</tt><tt class="py-op">:</tt> </tt>\r
-<a name="L5936"></a><tt class="py-lineno">5936</tt>  <tt class="py-line">\r </tt>
-<a name="L5937"></a><tt class="py-lineno">5937</tt>  <tt class="py-line">    <tt class="py-name">selectToken</tt>    <tt class="py-op">=</tt> <tt id="link-1285" class="py-name"><a title="pyparsing.CaselessLiteral" class="py-name" href="#" onclick="return doclink('link-1285', 'CaselessLiteral', 'link-379');">CaselessLiteral</a></tt><tt class="py-op">(</tt><tt class="py-string">"select"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5938"></a><tt class="py-lineno">5938</tt>  <tt class="py-line">    <tt class="py-name">fromToken</tt>      <tt class="py-op">=</tt> <tt id="link-1286" class="py-name"><a title="pyparsing.CaselessLiteral" class="py-name" href="#" onclick="return doclink('link-1286', 'CaselessLiteral', 'link-379');">CaselessLiteral</a></tt><tt class="py-op">(</tt><tt class="py-string">"from"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5939"></a><tt class="py-lineno">5939</tt>  <tt class="py-line">\r </tt>
-<a name="L5940"></a><tt class="py-lineno">5940</tt>  <tt class="py-line">    <tt class="py-name">ident</tt>          <tt class="py-op">=</tt> <tt id="link-1287" class="py-name"><a title="pyparsing.Word" class="py-name" href="#" onclick="return doclink('link-1287', 'Word', 'link-392');">Word</a></tt><tt class="py-op">(</tt><tt id="link-1288" class="py-name"><a title="pyparsing.alphas
-pyparsing.unicode_set.alphas" class="py-name" href="#" onclick="return doclink('link-1288', 'alphas', 'link-21');">alphas</a></tt><tt class="py-op">,</tt> <tt id="link-1289" class="py-name"><a title="pyparsing.alphanums
-pyparsing.unicode_set.alphanums" class="py-name" href="#" onclick="return doclink('link-1289', 'alphanums', 'link-25');">alphanums</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"_$"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5941"></a><tt class="py-lineno">5941</tt>  <tt class="py-line">\r </tt>
-<a name="L5942"></a><tt class="py-lineno">5942</tt>  <tt class="py-line">    <tt class="py-name">columnName</tt>     <tt class="py-op">=</tt> <tt id="link-1290" class="py-name"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1290', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">,</tt> <tt class="py-string">"."</tt><tt class="py-op">,</tt> <tt class="py-name">combine</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1291" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1291', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1292" class="py-name"><a title="pyparsing.pyparsing_common.upcaseTokens
-pyparsing.upcaseTokens" class="py-name" href="#" onclick="return doclink('link-1292', 'upcaseTokens', 'link-812');">upcaseTokens</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5943"></a><tt class="py-lineno">5943</tt>  <tt class="py-line">    <tt class="py-name">columnNameList</tt> <tt class="py-op">=</tt> <tt id="link-1293" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-1293', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt id="link-1294" class="py-name"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1294', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt><tt class="py-name">columnName</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1295" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1295', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"columns"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5944"></a><tt class="py-lineno">5944</tt>  <tt class="py-line">    <tt class="py-name">columnSpec</tt>     <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'*'</tt> <tt class="py-op">|</tt> <tt class="py-name">columnNameList</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5945"></a><tt class="py-lineno">5945</tt>  <tt class="py-line">\r </tt>
-<a name="L5946"></a><tt class="py-lineno">5946</tt>  <tt class="py-line">    <tt class="py-name">tableName</tt>      <tt class="py-op">=</tt> <tt id="link-1296" class="py-name"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1296', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">,</tt> <tt class="py-string">"."</tt><tt class="py-op">,</tt> <tt class="py-name">combine</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1297" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1297', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1298" class="py-name"><a title="pyparsing.pyparsing_common.upcaseTokens
-pyparsing.upcaseTokens" class="py-name" href="#" onclick="return doclink('link-1298', 'upcaseTokens', 'link-812');">upcaseTokens</a></tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5947"></a><tt class="py-lineno">5947</tt>  <tt class="py-line">    <tt class="py-name">tableNameList</tt>  <tt class="py-op">=</tt> <tt id="link-1299" class="py-name"><a title="pyparsing.Group" class="py-name" href="#" onclick="return doclink('link-1299', 'Group', 'link-690');">Group</a></tt><tt class="py-op">(</tt><tt id="link-1300" class="py-name"><a title="pyparsing.delimitedList" class="py-name" href="#" onclick="return doclink('link-1300', 'delimitedList', 'link-1045');">delimitedList</a></tt><tt class="py-op">(</tt><tt class="py-name">tableName</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1301" class="py-name"><a title="pyparsing.ParserElement.setName" class="py-name" href="#" onclick="return doclink('link-1301', 'setName', 'link-702');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">"tables"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5948"></a><tt class="py-lineno">5948</tt>  <tt class="py-line">\r </tt>
-<a name="L5949"></a><tt class="py-lineno">5949</tt>  <tt class="py-line">    <tt class="py-name">simpleSQL</tt>      <tt class="py-op">=</tt> <tt class="py-name">selectToken</tt><tt class="py-op">(</tt><tt class="py-string">"command"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">columnSpec</tt><tt class="py-op">(</tt><tt class="py-string">"columns"</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">fromToken</tt> <tt class="py-op">+</tt> <tt class="py-name">tableNameList</tt><tt class="py-op">(</tt><tt class="py-string">"tables"</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5950"></a><tt class="py-lineno">5950</tt>  <tt class="py-line">\r </tt>
-<a name="L5951"></a><tt class="py-lineno">5951</tt>  <tt class="py-line">    <tt class="py-comment"># demo runTests method, including embedded comments in test string</tt>\r </tt>
-<a name="L5952"></a><tt class="py-lineno">5952</tt>  <tt class="py-line">    <tt class="py-name">simpleSQL</tt><tt class="py-op">.</tt><tt id="link-1302" class="py-name" targets="Method pyparsing.ParserElement.runTests()=pyparsing.ParserElement-class.html#runTests"><a title="pyparsing.ParserElement.runTests" class="py-name" href="#" onclick="return doclink('link-1302', 'runTests', 'link-1302');">runTests</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\r</tt> </tt>
-<a name="L5953"></a><tt class="py-lineno">5953</tt>  <tt class="py-line"><tt class="py-string">        # '*' as column list and dotted table name\r</tt> </tt>
-<a name="L5954"></a><tt class="py-lineno">5954</tt>  <tt class="py-line"><tt class="py-string">        select * from SYS.XYZZY\r</tt> </tt>
-<a name="L5955"></a><tt class="py-lineno">5955</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5956"></a><tt class="py-lineno">5956</tt>  <tt class="py-line"><tt class="py-string">        # caseless match on "SELECT", and casts back to "select"\r</tt> </tt>
-<a name="L5957"></a><tt class="py-lineno">5957</tt>  <tt class="py-line"><tt class="py-string">        SELECT * from XYZZY, ABC\r</tt> </tt>
-<a name="L5958"></a><tt class="py-lineno">5958</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5959"></a><tt class="py-lineno">5959</tt>  <tt class="py-line"><tt class="py-string">        # list of column names, and mixed case SELECT keyword\r</tt> </tt>
-<a name="L5960"></a><tt class="py-lineno">5960</tt>  <tt class="py-line"><tt class="py-string">        Select AA,BB,CC from Sys.dual\r</tt> </tt>
-<a name="L5961"></a><tt class="py-lineno">5961</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5962"></a><tt class="py-lineno">5962</tt>  <tt class="py-line"><tt class="py-string">        # multiple tables\r</tt> </tt>
-<a name="L5963"></a><tt class="py-lineno">5963</tt>  <tt class="py-line"><tt class="py-string">        Select A, B, C from Sys.dual, Table2\r</tt> </tt>
-<a name="L5964"></a><tt class="py-lineno">5964</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5965"></a><tt class="py-lineno">5965</tt>  <tt class="py-line"><tt class="py-string">        # invalid SELECT keyword - should fail\r</tt> </tt>
-<a name="L5966"></a><tt class="py-lineno">5966</tt>  <tt class="py-line"><tt class="py-string">        Xelect A, B, C from Sys.dual\r</tt> </tt>
-<a name="L5967"></a><tt class="py-lineno">5967</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5968"></a><tt class="py-lineno">5968</tt>  <tt class="py-line"><tt class="py-string">        # incomplete command - should fail\r</tt> </tt>
-<a name="L5969"></a><tt class="py-lineno">5969</tt>  <tt class="py-line"><tt class="py-string">        Select\r</tt> </tt>
-<a name="L5970"></a><tt class="py-lineno">5970</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5971"></a><tt class="py-lineno">5971</tt>  <tt class="py-line"><tt class="py-string">        # invalid column name - should fail\r</tt> </tt>
-<a name="L5972"></a><tt class="py-lineno">5972</tt>  <tt class="py-line"><tt class="py-string">        Select ^^^ frox Sys.dual\r</tt> </tt>
-<a name="L5973"></a><tt class="py-lineno">5973</tt>  <tt class="py-line"><tt class="py-string">\r</tt> </tt>
-<a name="L5974"></a><tt class="py-lineno">5974</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5975"></a><tt class="py-lineno">5975</tt>  <tt class="py-line">\r </tt>
-<a name="L5976"></a><tt class="py-lineno">5976</tt>  <tt class="py-line">    <tt id="link-1303" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1303', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1304" class="py-name"><a title="pyparsing.pyparsing_common.number" class="py-name" href="#" onclick="return doclink('link-1304', 'number', 'link-1102');">number</a></tt><tt class="py-op">.</tt><tt id="link-1305" class="py-name"><a title="pyparsing.ParserElement.runTests" class="py-name" href="#" onclick="return doclink('link-1305', 'runTests', 'link-1302');">runTests</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\r</tt> </tt>
-<a name="L5977"></a><tt class="py-lineno">5977</tt>  <tt class="py-line"><tt class="py-string">        100\r</tt> </tt>
-<a name="L5978"></a><tt class="py-lineno">5978</tt>  <tt class="py-line"><tt class="py-string">        -100\r</tt> </tt>
-<a name="L5979"></a><tt class="py-lineno">5979</tt>  <tt class="py-line"><tt class="py-string">        +100\r</tt> </tt>
-<a name="L5980"></a><tt class="py-lineno">5980</tt>  <tt class="py-line"><tt class="py-string">        3.14159\r</tt> </tt>
-<a name="L5981"></a><tt class="py-lineno">5981</tt>  <tt class="py-line"><tt class="py-string">        6.02e23\r</tt> </tt>
-<a name="L5982"></a><tt class="py-lineno">5982</tt>  <tt class="py-line"><tt class="py-string">        1e-12\r</tt> </tt>
-<a name="L5983"></a><tt class="py-lineno">5983</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5984"></a><tt class="py-lineno">5984</tt>  <tt class="py-line">\r </tt>
-<a name="L5985"></a><tt class="py-lineno">5985</tt>  <tt class="py-line">    <tt class="py-comment"># any int or real number, returned as float</tt>\r </tt>
-<a name="L5986"></a><tt class="py-lineno">5986</tt>  <tt class="py-line">    <tt id="link-1306" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1306', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1307" class="py-name"><a title="pyparsing.pyparsing_common.fnumber" class="py-name" href="#" onclick="return doclink('link-1307', 'fnumber', 'link-1107');">fnumber</a></tt><tt class="py-op">.</tt><tt id="link-1308" class="py-name"><a title="pyparsing.ParserElement.runTests" class="py-name" href="#" onclick="return doclink('link-1308', 'runTests', 'link-1302');">runTests</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\r</tt> </tt>
-<a name="L5987"></a><tt class="py-lineno">5987</tt>  <tt class="py-line"><tt class="py-string">        100\r</tt> </tt>
-<a name="L5988"></a><tt class="py-lineno">5988</tt>  <tt class="py-line"><tt class="py-string">        -100\r</tt> </tt>
-<a name="L5989"></a><tt class="py-lineno">5989</tt>  <tt class="py-line"><tt class="py-string">        +100\r</tt> </tt>
-<a name="L5990"></a><tt class="py-lineno">5990</tt>  <tt class="py-line"><tt class="py-string">        3.14159\r</tt> </tt>
-<a name="L5991"></a><tt class="py-lineno">5991</tt>  <tt class="py-line"><tt class="py-string">        6.02e23\r</tt> </tt>
-<a name="L5992"></a><tt class="py-lineno">5992</tt>  <tt class="py-line"><tt class="py-string">        1e-12\r</tt> </tt>
-<a name="L5993"></a><tt class="py-lineno">5993</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5994"></a><tt class="py-lineno">5994</tt>  <tt class="py-line">\r </tt>
-<a name="L5995"></a><tt class="py-lineno">5995</tt>  <tt class="py-line">    <tt id="link-1309" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1309', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1310" class="py-name"><a title="pyparsing.pyparsing_common.hex_integer" class="py-name" href="#" onclick="return doclink('link-1310', 'hex_integer', 'link-1061');">hex_integer</a></tt><tt class="py-op">.</tt><tt id="link-1311" class="py-name"><a title="pyparsing.ParserElement.runTests" class="py-name" href="#" onclick="return doclink('link-1311', 'runTests', 'link-1302');">runTests</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\r</tt> </tt>
-<a name="L5996"></a><tt class="py-lineno">5996</tt>  <tt class="py-line"><tt class="py-string">        100\r</tt> </tt>
-<a name="L5997"></a><tt class="py-lineno">5997</tt>  <tt class="py-line"><tt class="py-string">        FF\r</tt> </tt>
-<a name="L5998"></a><tt class="py-lineno">5998</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L5999"></a><tt class="py-lineno">5999</tt>  <tt class="py-line">\r </tt>
-<a name="L6000"></a><tt class="py-lineno">6000</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-1312" class="py-name"><a title="pyparsing.pyparsing_common.uuid" class="py-name" href="#" onclick="return doclink('link-1312', 'uuid', 'link-1161');">uuid</a></tt> </tt>\r
-<a name="L6001"></a><tt class="py-lineno">6001</tt>  <tt class="py-line">    <tt id="link-1313" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1313', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1314" class="py-name"><a title="pyparsing.pyparsing_common.uuid" class="py-name" href="#" onclick="return doclink('link-1314', 'uuid', 'link-1161');">uuid</a></tt><tt class="py-op">.</tt><tt id="link-1315" class="py-name"><a title="pyparsing.ParserElement.setParseAction" class="py-name" href="#" onclick="return doclink('link-1315', 'setParseAction', 'link-12');">setParseAction</a></tt><tt class="py-op">(</tt><tt id="link-1316" class="py-name"><a title="pyparsing.tokenMap" class="py-name" href="#" onclick="return doclink('link-1316', 'tokenMap', 'link-813');">tokenMap</a></tt><tt class="py-op">(</tt><tt id="link-1317" class="py-name"><a title="pyparsing.pyparsing_common.uuid" class="py-name" href="#" onclick="return doclink('link-1317', 'uuid', 'link-1161');">uuid</a></tt><tt class="py-op">.</tt><tt class="py-name">UUID</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>\r
-<a name="L6002"></a><tt class="py-lineno">6002</tt>  <tt class="py-line">    <tt id="link-1318" class="py-name"><a title="pyparsing.pyparsing_common" class="py-name" href="#" onclick="return doclink('link-1318', 'pyparsing_common', 'link-1137');">pyparsing_common</a></tt><tt class="py-op">.</tt><tt id="link-1319" class="py-name"><a title="pyparsing.pyparsing_common.uuid" class="py-name" href="#" onclick="return doclink('link-1319', 'uuid', 'link-1161');">uuid</a></tt><tt class="py-op">.</tt><tt id="link-1320" class="py-name"><a title="pyparsing.ParserElement.runTests" class="py-name" href="#" onclick="return doclink('link-1320', 'runTests', 'link-1302');">runTests</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\r</tt> </tt>
-<a name="L6003"></a><tt class="py-lineno">6003</tt>  <tt class="py-line"><tt class="py-string">        12345678-1234-5678-1234-567812345678\r</tt> </tt>
-<a name="L6004"></a><tt class="py-lineno">6004</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>
-<a name="L6005"></a><tt class="py-lineno">6005</tt>  <tt class="py-line"> </tt><script type="text/javascript">
-<!--
-expandto(location.href);
-// -->
-</script>
-</pre>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:30 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.And-class.html b/htmldoc/pyparsing.And-class.html
deleted file mode 100644 (file)
index b290707..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.And</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;And
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class And</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#And">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-  <a href="pyparsing.ParseExpression-class.html">ParseExpression</a> --+
-                    |
-                   <strong class="uidshort">And</strong>
-</pre>
-
-<hr />
-<p>Requires all given <code>ParseExpression</code>s to be found in the 
-  given order. Expressions may be separated by whitespace. May be 
-  constructed using the <code>'+'</code> operator. May also be constructed 
-  using the <code>'-'</code> operator, which will suppress 
-  backtracking.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   name_expr = OneOrMore(Word(alphas))
-
-   expr = And([integer(&quot;id&quot;),name_expr(&quot;name&quot;),integer(&quot;age&quot;)])
-   # more easily written as:
-   expr = integer(&quot;id&quot;) + name_expr(&quot;name&quot;) + integer(&quot;age&quot;)
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.And-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">exprs</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">True</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#And.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.And-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#And.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__iadd__"></a><span class="summary-sig-name">__iadd__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#And.__iadd__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.And-class.html#checkRecursion" class="summary-sig-name">checkRecursion</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#And.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.And-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#And.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseExpression-class.html">ParseExpression</a></code></b>:
-      <code><a href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#append">append</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">exprs</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">True</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#And.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#And.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="checkRecursion"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">checkRecursion</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#And.checkRecursion">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#checkRecursion">ParserElement.checkRecursion</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#And.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.CaselessKeyword-class.html b/htmldoc/pyparsing.CaselessKeyword-class.html
deleted file mode 100644 (file)
index b7e7ce1..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.CaselessKeyword</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;CaselessKeyword
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CaselessKeyword</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#CaselessKeyword">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-              <a href="pyparsing.Keyword-class.html">Keyword</a> --+
-                        |
-                       <strong class="uidshort">CaselessKeyword</strong>
-</pre>
-
-<hr />
-<p>Caseless version of <a href="pyparsing.Keyword-class.html" 
-  class="link">Keyword</a>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   OneOrMore(CaselessKeyword(&quot;CMD&quot;)).parseString(&quot;cmd CMD Cmd10&quot;) # -&gt; ['CMD', 'CMD']
-</pre>
-  <p>(Contrast with example for <a 
-  href="pyparsing.CaselessLiteral-class.html" 
-  class="link">CaselessLiteral</a>.)</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CaselessKeyword-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">matchString</span>,
-        <span class="summary-sig-arg">identChars</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CaselessKeyword.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CaselessKeyword-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CaselessKeyword.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Keyword-class.html">Keyword</a></code></b>:
-      <code><a href="pyparsing.Keyword-class.html#copy">copy</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Keyword-class.html">Keyword</a></code></b>:
-      <code><a href="pyparsing.Keyword-class.html#setDefaultKeywordChars">setDefaultKeywordChars</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Keyword-class.html">Keyword</a></code></b>:
-      <code><a href="pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS">DEFAULT_KEYWORD_CHARS</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">matchString</span>,
-        <span class="sig-arg">identChars</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CaselessKeyword.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CaselessKeyword.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.CaselessLiteral-class.html b/htmldoc/pyparsing.CaselessLiteral-class.html
deleted file mode 100644 (file)
index 7d11cc0..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.CaselessLiteral</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;CaselessLiteral
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CaselessLiteral</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#CaselessLiteral">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-              <a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a> --+
-                        |
-                       <strong class="uidshort">CaselessLiteral</strong>
-</pre>
-
-<hr />
-<p>Token to match a specified string, ignoring case of letters. Note: the
-  matched results will always be in the case of the given match string, NOT
-  the case of the input text.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   OneOrMore(CaselessLiteral(&quot;CMD&quot;)).parseString(&quot;cmd CMD Cmd10&quot;) # -&gt; ['CMD', 'CMD', 'CMD']
-</pre>
-  <p>(Contrast with example for <a 
-  href="pyparsing.CaselessKeyword-class.html" 
-  class="link">CaselessKeyword</a>.)</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CaselessLiteral-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">matchString</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CaselessLiteral.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CaselessLiteral-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CaselessLiteral.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a></code></b>:
-      <code><a href="pyparsing.Literal-class.html#__slotnames__">__slotnames__</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">matchString</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CaselessLiteral.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CaselessLiteral.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Char-class.html b/htmldoc/pyparsing.Char-class.html
deleted file mode 100644 (file)
index cc91320..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Char</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Char
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Char</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Char">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-                 <a href="pyparsing.Word-class.html">Word</a> --+
-                        |
-                       <strong class="uidshort">Char</strong>
-</pre>
-
-<hr />
-<p>A short-cut class for defining <code>Word(characters, exact=1)</code>,
-  when defining a match of any single character in a string of 
-  characters.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Char-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">charset</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Char.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Word-class.html">Word</a></code></b>:
-      <code><a href="pyparsing.Word-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.Word-class.html#parseImpl">parseImpl</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.Word-class.html">Word</a></code></b>:
-      <code><a href="pyparsing.Word-class.html#__slotnames__">__slotnames__</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">charset</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Char.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.CharsNotIn-class.html b/htmldoc/pyparsing.CharsNotIn-class.html
deleted file mode 100644 (file)
index e1690ea..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.CharsNotIn</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;CharsNotIn
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CharsNotIn</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">CharsNotIn</strong>
-</pre>
-
-<hr />
-<p>Token for matching words composed of characters <i>not</i> in a given 
-  set (will include whitespace in matched characters if not listed in the 
-  provided exclusion set - see example). Defined with string containing all
-  disallowed characters, and an optional minimum, maximum, and/or exact 
-  length.  The default value for <code>min</code> is 1 (a minimum value 
-  &lt; 1 is not valid); the default values for <code>max</code> and 
-  <code>exact</code> are 0, meaning no maximum or exact length 
-  restriction.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # define a comma-separated-value as anything that is not a ','
-   csv_value = CharsNotIn(',')
-   print(delimitedList(csv_value).parseString(&quot;dkls,lsdkjf,s12 34,@!#,213&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['dkls', 'lsdkjf', 's12 34', '@!#', '213']
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CharsNotIn-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">notChars</span>,
-        <span class="summary-sig-arg">min</span>=<span class="summary-sig-default">1</span>,
-        <span class="summary-sig-arg">max</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">exact</span>=<span class="summary-sig-default">0</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CharsNotIn-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CharsNotIn-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">notChars</span>,
-        <span class="sig-arg">min</span>=<span class="sig-default">1</span>,
-        <span class="sig-arg">max</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">exact</span>=<span class="sig-default">0</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CharsNotIn.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.CloseMatch-class.html b/htmldoc/pyparsing.CloseMatch-class.html
deleted file mode 100644 (file)
index a3bd33d..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.CloseMatch</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;CloseMatch
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CloseMatch</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#CloseMatch">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">CloseMatch</strong>
-</pre>
-
-<hr />
-<p>A variation on <a href="pyparsing.Literal-class.html" class="link" 
-  onclick="show_private();">Literal</a> which matches &quot;close&quot; 
-  matches, that is, strings with at most 'n' mismatching characters. 
-  <code>CloseMatch</code> takes parameters:</p>
-  <ul>
-    <li>
-      <code>match_string</code> - string to be matched
-    </li>
-    <li>
-      <code>maxMismatches</code> - (<code>default=1</code>) maximum number 
-      of mismatches allowed to count as a match
-    </li>
-  </ul>
-  <p>The results from a successful parse will contain the matched text from
-  the input string and the following named results:</p>
-  <ul>
-    <li>
-      <code>mismatches</code> - a list of the positions within the 
-      match_string where mismatches were found
-    </li>
-    <li>
-      <code>original</code> - the original match_string used to compare 
-      against the input string
-    </li>
-  </ul>
-  <p>If <code>mismatches</code> is an empty list, then the match was an 
-  exact match.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = CloseMatch(&quot;ATCATCGAATGGA&quot;)
-   patt.parseString(&quot;ATCATCGAAXGGA&quot;) # -&gt; (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']})
-   patt.parseString(&quot;ATCAXCGAAXGGA&quot;) # -&gt; Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1)
-
-   # exact match
-   patt.parseString(&quot;ATCATCGAATGGA&quot;) # -&gt; (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']})
-
-   # close match allowing up to 2 mismatches
-   patt = CloseMatch(&quot;ATCATCGAATGGA&quot;, maxMismatches=2)
-   patt.parseString(&quot;ATCAXCGAAXGGA&quot;) # -&gt; (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']})
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CloseMatch-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">match_string</span>,
-        <span class="summary-sig-arg">maxMismatches</span>=<span class="summary-sig-default">1</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CloseMatch.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.CloseMatch-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#CloseMatch.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">match_string</span>,
-        <span class="sig-arg">maxMismatches</span>=<span class="sig-default">1</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CloseMatch.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#CloseMatch.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Combine-class.html b/htmldoc/pyparsing.Combine-class.html
deleted file mode 100644 (file)
index 4dbc954..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Combine</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Combine
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Combine</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Combine">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         <a href="pyparsing.TokenConverter-class.html">TokenConverter</a> --+
-                          |
-                         <strong class="uidshort">Combine</strong>
-</pre>
-
-<hr />
-<p>Converter to concatenate all matching tokens to a single string. By 
-  default, the matching patterns must also be contiguous in the input 
-  string; this can be disabled by specifying <code>'adjacent=False'</code> 
-  in the constructor.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   real = Word(nums) + '.' + Word(nums)
-   print(real.parseString('3.1416')) # -&gt; ['3', '.', '1416']
-   # will also erroneously match the following
-   print(real.parseString('3. 1416')) # -&gt; ['3', '.', '1416']
-
-   real = Combine(Word(nums) + '.' + Word(nums))
-   print(real.parseString('3.1416')) # -&gt; ['3.1416']
-   # no match when there are internal spaces
-   print(real.parseString('3. 1416')) # -&gt; Exception: Expected W:(0123...)
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Combine-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">joinString</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">adjacent</span>=<span class="summary-sig-default">True</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Combine.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Combine-class.html#ignore" class="summary-sig-name">ignore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Define expression to be ignored (e.g., comments) while doing pattern 
-      matching; may be called repeatedly, to define multiple comment or 
-      other ignorable patterns.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Combine.ignore">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Combine-class.html#postParse" class="summary-sig-name">postParse</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">tokenlist</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Combine.postParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">joinString</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">adjacent</span>=<span class="sig-default">True</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Combine.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="ignore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">ignore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Combine.ignore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define expression to be ignored (e.g., comments) while doing pattern 
-  matching; may be called repeatedly, to define multiple comment or other 
-  ignorable patterns.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj']
-
-   patt.ignore(cStyleComment)
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj', 'lskjd']
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#ignore">ParserElement.ignore</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="postParse"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">postParse</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">tokenlist</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Combine.postParse">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#postParse">ParserElement.postParse</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Dict-class.html b/htmldoc/pyparsing.Dict-class.html
deleted file mode 100644 (file)
index 71952ec..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Dict</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Dict
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Dict</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Dict">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         <a href="pyparsing.TokenConverter-class.html">TokenConverter</a> --+
-                          |
-                         <strong class="uidshort">Dict</strong>
-</pre>
-
-<hr />
-<p>Converter to return a repetitive expression as a list, but also as a 
-  dictionary. Each element can also be referenced using the first token in 
-  the expression as its key. Useful for tabular report scraping when the 
-  first column can be used as a item key.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   data_word = Word(alphas)
-   label = data_word + FollowedBy(':')
-   attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))
-
-   text = &quot;shape: SQUARE posn: upper left color: light blue texture: burlap&quot;
-   attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
-
-   # print attributes as plain groups
-   print(OneOrMore(attr_expr).parseString(text).dump())
-
-   # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names
-   result = Dict(OneOrMore(Group(attr_expr))).parseString(text)
-   print(result.dump())
-
-   # access named fields as dict entries, or output as dict
-   print(result['shape'])
-   print(result.asDict())
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap']
-
-   [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
-   - color: light blue
-   - posn: upper left
-   - shape: SQUARE
-   - texture: burlap
-   SQUARE
-   {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'}
-</pre>
-  <p>See more examples at <a href="pyparsing.ParseResults-class.html" 
-  class="link">ParseResults</a> of accessing fields by results name.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Dict-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Dict.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Dict-class.html#postParse" class="summary-sig-name">postParse</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">tokenlist</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Dict.postParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Dict.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="postParse"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">postParse</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">tokenlist</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Dict.postParse">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#postParse">ParserElement.postParse</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Each-class.html b/htmldoc/pyparsing.Each-class.html
deleted file mode 100644 (file)
index 8eab005..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Each</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Each
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Each</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Each">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-  <a href="pyparsing.ParseExpression-class.html">ParseExpression</a> --+
-                    |
-                   <strong class="uidshort">Each</strong>
-</pre>
-
-<hr />
-<p>Requires all given <code>ParseExpression</code>s to be found, but in 
-  any order. Expressions may be separated by whitespace. May be constructed
-  using the <code>'&amp;'</code> operator.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   color = oneOf(&quot;RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN&quot;)
-   shape_type = oneOf(&quot;SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON&quot;)
-   integer = Word(nums)
-   shape_attr = &quot;shape:&quot; + shape_type(&quot;shape&quot;)
-   posn_attr = &quot;posn:&quot; + Group(integer(&quot;x&quot;) + ',' + integer(&quot;y&quot;))(&quot;posn&quot;)
-   color_attr = &quot;color:&quot; + color(&quot;color&quot;)
-   size_attr = &quot;size:&quot; + integer(&quot;size&quot;)
-
-   # use Each (using operator '&amp;') to accept attributes in any order
-   # (shape and posn are required, color and size are optional)
-   shape_spec = shape_attr &amp; posn_attr &amp; Optional(color_attr) &amp; Optional(size_attr)
-
-   shape_spec.runTests('''
-       shape: SQUARE color: BLACK posn: 100, 120
-       shape: CIRCLE size: 50 color: BLUE posn: 50,80
-       color:GREEN size:20 shape:TRIANGLE posn:20,40
-       '''
-       )
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   shape: SQUARE color: BLACK posn: 100, 120
-   ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']]
-   - color: BLACK
-   - posn: ['100', ',', '120']
-     - x: 100
-     - y: 120
-   - shape: SQUARE
-
-
-   shape: CIRCLE size: 50 color: BLUE posn: 50,80
-   ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']]
-   - color: BLUE
-   - posn: ['50', ',', '80']
-     - x: 50
-     - y: 80
-   - shape: CIRCLE
-   - size: 50
-
-
-   color: GREEN size: 20 shape: TRIANGLE posn: 20,40
-   ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']]
-   - color: GREEN
-   - posn: ['20', ',', '40']
-     - x: 20
-     - y: 40
-   - shape: TRIANGLE
-   - size: 20
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Each-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">exprs</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">True</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Each.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Each-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Each.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Each-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Each.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Each-class.html#checkRecursion" class="summary-sig-name">checkRecursion</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Each.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseExpression-class.html">ParseExpression</a></code></b>:
-      <code><a href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#append">append</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">exprs</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">True</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Each.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Each.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Each.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="checkRecursion"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">checkRecursion</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Each.checkRecursion">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#checkRecursion">ParserElement.checkRecursion</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Empty-class.html b/htmldoc/pyparsing.Empty-class.html
deleted file mode 100644 (file)
index 7b6fca2..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Empty</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Empty
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Empty</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Empty">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">Empty</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li class="private">And._ErrorStop</li>  </ul>
-</dd></dl>
-
-<hr />
-<p>An empty token, will always match.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Empty-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Empty.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Empty.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.FollowedBy-class.html b/htmldoc/pyparsing.FollowedBy-class.html
deleted file mode 100644 (file)
index 3e170e8..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.FollowedBy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;FollowedBy
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class FollowedBy</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#FollowedBy">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">FollowedBy</strong>
-</pre>
-
-<hr />
-<p>Lookahead matching of the given parse expression.  
-  <code>FollowedBy</code> does <i>not</i> advance the parsing position 
-  within the input string, it only verifies that the specified parse 
-  expression matches at the current position.  <code>FollowedBy</code> 
-  always returns a null token list. If any results names are defined in the
-  lookahead expression, those *will* be returned for access by name.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # use FollowedBy to match a label only if it is followed by a ':'
-   data_word = Word(alphas)
-   label = data_word + FollowedBy(':')
-   attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
-
-   OneOrMore(attr_expr).parseString(&quot;shape: SQUARE color: BLACK posn: upper left&quot;).pprint()
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.FollowedBy-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#FollowedBy.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.FollowedBy-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#FollowedBy.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#FollowedBy.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#FollowedBy.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Forward-class.html b/htmldoc/pyparsing.Forward-class.html
deleted file mode 100644 (file)
index ee1dc70..0000000
+++ /dev/null
@@ -1,594 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Forward</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Forward
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Forward</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Forward">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">Forward</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li class="private">_ForwardNoRecurse</li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Forward declaration of an expression to be defined later - used for 
-  recursive grammars, such as algebraic infix notation. When the expression
-  is known, it is assigned to the <code>Forward</code> variable using the 
-  '&lt;&lt;' operator.</p>
-  <p>Note: take care when assigning to <code>Forward</code> not to overlook
-  precedence of operators. Specifically, '|' has a lower precedence than 
-  '&lt;&lt;', so that:</p>
-<pre class="literalblock">
-   fwdExpr &lt;&lt; a | b | c
-</pre>
-  <p>will actually be evaluated as:</p>
-<pre class="literalblock">
-   (fwdExpr &lt;&lt; a) | b | c
-</pre>
-  <p>thereby leaving b and c out as parseable alternatives.  It is 
-  recommended that you explicitly group the values inserted into the 
-  <code>Forward</code>:</p>
-<pre class="literalblock">
-   fwdExpr &lt;&lt; (a | b | c)
-</pre>
-  <p>Converting to use the '&lt;&lt;=' operator instead will avoid this 
-  problem.</p>
-  <p>See <a href="pyparsing.ParseResults-class.html#pprint" 
-  class="link">ParseResults.pprint</a> for an example of a recursive parser
-  created using <code>Forward</code>.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__lshift__"></a><span class="summary-sig-name">__lshift__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.__lshift__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__ilshift__"></a><span class="summary-sig-name">__ilshift__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.__ilshift__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#leaveWhitespace" class="summary-sig-name">leaveWhitespace</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Disables the skipping of whitespace before matching the characters in
-      the <code>ParserElement</code>'s defined pattern.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.leaveWhitespace">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#streamline" class="summary-sig-name">streamline</a>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.streamline">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">validateTrace</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
-      Check defined expressions for valid structure, check for infinite 
-      recursive definitions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.validate">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Forward-class.html#copy" class="summary-sig-name">copy</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Make a copy of this <code>ParserElement</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Forward.copy">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="leaveWhitespace"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">leaveWhitespace</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.leaveWhitespace">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Disables the skipping of whitespace before matching the characters in 
-  the <code>ParserElement</code>'s defined pattern.  This is normally only 
-  used internally by the pyparsing module, but may be needed in some 
-  whitespace-sensitive grammars.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#leaveWhitespace">ParserElement.leaveWhitespace</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="streamline"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">streamline</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.streamline">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#streamline">ParserElement.streamline</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="validate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">validateTrace</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.validate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Check defined expressions for valid structure, check for infinite 
-  recursive definitions.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#validate">ParserElement.validate</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="copy"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">copy</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Forward.copy">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Make a copy of this <code>ParserElement</code>.  Useful for defining 
-  different parse actions for the same parsing pattern, using copies of the
-  original parse element.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress(&quot;K&quot;)
-   integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-
-   print(OneOrMore(integerK | integerM | integer).parseString(&quot;5K 100 640K 256M&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [5120, 100, 655360, 268435456]
-</pre>
-  <p>Equivalent form of <code>expr.copy()</code> is just 
-  <code>expr()</code>:</p>
-<pre class="literalblock">
-   integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#copy">ParserElement.copy</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.GoToColumn-class.html b/htmldoc/pyparsing.GoToColumn-class.html
deleted file mode 100644 (file)
index cd690d9..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.GoToColumn</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;GoToColumn
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class GoToColumn</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">GoToColumn</strong>
-</pre>
-
-<hr />
-<p>Token to advance to a specific column of input text; useful for 
-  tabular report scraping.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.GoToColumn-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">colno</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.GoToColumn-class.html#preParse" class="summary-sig-name">preParse</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.preParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.GoToColumn-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">colno</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="preParse"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">preParse</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.preParse">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#preParse">ParserElement.preParse</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#GoToColumn.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Group-class.html b/htmldoc/pyparsing.Group-class.html
deleted file mode 100644 (file)
index d54eb7f..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Group</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Group
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Group</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Group">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         <a href="pyparsing.TokenConverter-class.html">TokenConverter</a> --+
-                          |
-                         <strong class="uidshort">Group</strong>
-</pre>
-
-<hr />
-<p>Converter to return the matched tokens as a list - useful for 
-  returning tokens of <code><a href="pyparsing.ZeroOrMore-class.html" 
-  class="link">ZeroOrMore</a></code> and <code><a 
-  href="pyparsing.OneOrMore-class.html" class="link">OneOrMore</a></code> 
-  expressions.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   ident = Word(alphas)
-   num = Word(nums)
-   term = ident | num
-   func = ident + Optional(delimitedList(term))
-   print(func.parseString(&quot;fn a,b,100&quot;))  # -&gt; ['fn', 'a', 'b', '100']
-
-   func = ident + Group(Optional(delimitedList(term)))
-   print(func.parseString(&quot;fn a,b,100&quot;))  # -&gt; ['fn', ['a', 'b', '100']]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Group-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Group.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Group-class.html#postParse" class="summary-sig-name">postParse</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">tokenlist</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Group.postParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Group.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="postParse"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">postParse</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">tokenlist</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Group.postParse">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#postParse">ParserElement.postParse</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Keyword-class.html b/htmldoc/pyparsing.Keyword-class.html
deleted file mode 100644 (file)
index e52cfef..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Keyword</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Keyword
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Keyword</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Keyword">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">Keyword</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.CaselessKeyword-class.html">CaselessKeyword</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Token to exactly match a specified string as a keyword, that is, it 
-  must be immediately followed by a non-keyword character.  Compare with 
-  <code><a href="pyparsing.Literal-class.html" class="link" 
-  onclick="show_private();">Literal</a></code>:</p>
-  <ul>
-    <li>
-      <code>Literal(&quot;if&quot;)</code> will match the leading 
-      <code>'if'</code> in <code>'ifAndOnlyIf'</code>.
-    </li>
-    <li>
-      <code>Keyword(&quot;if&quot;)</code> will not; it will only match the
-      leading <code>'if'</code> in <code>'if x=1'</code>, or 
-      <code>'if(y==2)'</code>
-    </li>
-  </ul>
-  <p>Accepts two optional constructor arguments in addition to the keyword 
-  string:</p>
-  <ul>
-    <li>
-      <code>identChars</code> is a string of characters that would be valid
-      identifier characters, defaulting to all alphanumerics + 
-      &quot;_&quot; and &quot;$&quot;
-    </li>
-    <li>
-      <code>caseless</code> allows case-insensitive matching, default is 
-      <code>False</code>.
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   Keyword(&quot;start&quot;).parseString(&quot;start&quot;)  # -&gt; ['start']
-   Keyword(&quot;start&quot;).parseString(&quot;starting&quot;)  # -&gt; Exception
-</pre>
-  <p>For case-insensitive matching, use <a 
-  href="pyparsing.CaselessKeyword-class.html" 
-  class="link">CaselessKeyword</a>.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Keyword-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">matchString</span>,
-        <span class="summary-sig-arg">identChars</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">caseless</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Keyword.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Keyword-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Keyword.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Keyword-class.html#copy" class="summary-sig-name">copy</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Make a copy of this <code>ParserElement</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Keyword.copy">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="setDefaultKeywordChars"></a><span class="summary-sig-name">setDefaultKeywordChars</span>(<span class="summary-sig-arg">chars</span>)</span><br />
-      Overrides the default Keyword chars</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Keyword.setDefaultKeywordChars">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Keyword-class.html#DEFAULT_KEYWORD_CHARS" class="summary-name">DEFAULT_KEYWORD_CHARS</a> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">matchString</span>,
-        <span class="sig-arg">identChars</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">caseless</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Keyword.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Keyword.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="copy"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">copy</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Keyword.copy">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Make a copy of this <code>ParserElement</code>.  Useful for defining 
-  different parse actions for the same parsing pattern, using copies of the
-  original parse element.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress(&quot;K&quot;)
-   integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-
-   print(OneOrMore(integerK | integerM | integer).parseString(&quot;5K 100 640K 256M&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [5120, 100, 655360, 268435456]
-</pre>
-  <p>Equivalent form of <code>expr.copy()</code> is just 
-  <code>expr()</code>:</p>
-<pre class="literalblock">
-   integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#copy">ParserElement.copy</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
-<a name="section-ClassVariableDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variable Details</span></td>
-</tr>
-</table>
-<a name="DEFAULT_KEYWORD_CHARS"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">DEFAULT_KEYWORD_CHARS</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$</code><code class="variable-quote">'</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.LineEnd-class.html b/htmldoc/pyparsing.LineEnd-class.html
deleted file mode 100644 (file)
index 7bc945a..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.LineEnd</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;LineEnd
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class LineEnd</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#LineEnd">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">LineEnd</strong>
-</pre>
-
-<hr />
-<p>Matches if current position is at the end of a line within the parse 
-  string</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.LineEnd-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#LineEnd.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.LineEnd-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#LineEnd.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#LineEnd.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#LineEnd.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.LineStart-class.html b/htmldoc/pyparsing.LineStart-class.html
deleted file mode 100644 (file)
index f66ab2f..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.LineStart</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;LineStart
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class LineStart</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#LineStart">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">LineStart</strong>
-</pre>
-
-<hr />
-<p>Matches if current position is at the beginning of a line within the 
-  parse string</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   test = '''        AAA this line
-   AAA and this line
-     AAA but not this one
-   B AAA and definitely not this one
-   '''
-
-   for t in (LineStart() + 'AAA' + restOfLine).searchString(test):
-       print(t)
-</pre>
-  <p>Prints:</p>
-<pre class="literalblock">
-   ['AAA', ' this line']
-   ['AAA', ' and this line']
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.LineStart-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#LineStart.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.LineStart-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#LineStart.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#LineStart.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#LineStart.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Literal-class.html b/htmldoc/pyparsing.Literal-class.html
deleted file mode 100644 (file)
index e79a3fc..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Literal</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Literal
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Literal</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Literal">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">Literal</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.CaselessLiteral-class.html">CaselessLiteral</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Token to exactly match a specified string.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   Literal('blah').parseString('blah')  # -&gt; ['blah']
-   Literal('blah').parseString('blahfooblah')  # -&gt; ['blah']
-   Literal('blah').parseString('bla')  # -&gt; Exception: Expected &quot;blah&quot;
-</pre>
-  <p>For case-insensitive matching, use <a 
-  href="pyparsing.CaselessLiteral-class.html" 
-  class="link">CaselessLiteral</a>.</p>
-  <p>For keyword matching (force word break before and after the matched 
-  string), use <a href="pyparsing.Keyword-class.html" 
-  class="link">Keyword</a> or <a 
-  href="pyparsing.CaselessKeyword-class.html" 
-  class="link">CaselessKeyword</a>.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Literal-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">matchString</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Literal.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Literal-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Literal.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">matchString</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Literal.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Literal.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.MatchFirst-class.html b/htmldoc/pyparsing.MatchFirst-class.html
deleted file mode 100644 (file)
index 6ea6e58..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.MatchFirst</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;MatchFirst
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MatchFirst</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-  <a href="pyparsing.ParseExpression-class.html">ParseExpression</a> --+
-                    |
-                   <strong class="uidshort">MatchFirst</strong>
-</pre>
-
-<hr />
-<p>Requires that at least one <code>ParseExpression</code> is found. If 
-  two expressions match, the first one listed is the one that will match. 
-  May be constructed using the <code>'|'</code> operator.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # construct MatchFirst using '|' operator
-
-   # watch the order of expressions to match
-   number = Word(nums) | Combine(Word(nums) + '.' + Word(nums))
-   print(number.searchString(&quot;123 3.1416 789&quot;)) #  Fail! -&gt; [['123'], ['3'], ['1416'], ['789']]
-
-   # put more selective expression first
-   number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums)
-   print(number.searchString(&quot;123 3.1416 789&quot;)) #  Better -&gt; [['123'], ['3.1416'], ['789']]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.MatchFirst-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">exprs</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.MatchFirst-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__ior__"></a><span class="summary-sig-name">__ior__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.__ior__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.MatchFirst-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.MatchFirst-class.html#checkRecursion" class="summary-sig-name">checkRecursion</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseExpression-class.html">ParseExpression</a></code></b>:
-      <code><a href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#append">append</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">exprs</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="checkRecursion"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">checkRecursion</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#MatchFirst.checkRecursion">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#checkRecursion">ParserElement.checkRecursion</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.NoMatch-class.html b/htmldoc/pyparsing.NoMatch-class.html
deleted file mode 100644 (file)
index c4f8d95..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.NoMatch</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;NoMatch
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class NoMatch</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#NoMatch">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">NoMatch</strong>
-</pre>
-
-<hr />
-<p>A token that will never match.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.NoMatch-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#NoMatch.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.NoMatch-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#NoMatch.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#NoMatch.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#NoMatch.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.NotAny-class.html b/htmldoc/pyparsing.NotAny-class.html
deleted file mode 100644 (file)
index 5c62017..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.NotAny</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;NotAny
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class NotAny</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#NotAny">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">NotAny</strong>
-</pre>
-
-<hr />
-<p>Lookahead to disallow matching with the given parse expression.  
-  <code>NotAny</code> does <i>not</i> advance the parsing position within 
-  the input string, it only verifies that the specified parse expression 
-  does <i>not</i> match at the current position.  Also, <code>NotAny</code>
-  does <i>not</i> skip over leading whitespace. <code>NotAny</code> always 
-  returns a null token list.  May be constructed using the '~' 
-  operator.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   AND, OR, NOT = map(CaselessKeyword, &quot;AND OR NOT&quot;.split())
-
-   # take care not to mistake keywords for identifiers
-   ident = ~(AND | OR | NOT) + Word(alphas)
-   boolean_term = Optional(NOT) + ident
-
-   # very crude boolean expression - to support parenthesis groups and
-   # operation hierarchy, use infixNotation
-   boolean_expr = boolean_term + ZeroOrMore((AND | OR) + boolean_term)
-
-   # integers that are followed by &quot;.&quot; are actually floats
-   integer = Word(nums) + ~Char(&quot;.&quot;)
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.NotAny-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#NotAny.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.NotAny-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#NotAny.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.NotAny-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#NotAny.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#NotAny.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#NotAny.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#NotAny.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.OneOrMore-class.html b/htmldoc/pyparsing.OneOrMore-class.html
deleted file mode 100644 (file)
index 9473fad..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.OneOrMore</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;OneOrMore
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class OneOrMore</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#OneOrMore">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         _MultipleMatch --+
-                          |
-                         <strong class="uidshort">OneOrMore</strong>
-</pre>
-
-<hr />
-<p>Repetition of one or more of the given expression.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      expr - expression that must match one or more times
-    </li>
-    <li>
-      stopOn - (default=<code>None</code>) - expression for a terminating 
-      sentinel (only required if the sentinel would ordinarily match the 
-      repetition expression)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   data_word = Word(alphas)
-   label = data_word + FollowedBy(':')
-   attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))
-
-   text = &quot;shape: SQUARE posn: upper left color: BLACK&quot;
-   OneOrMore(attr_expr).parseString(text).pprint()  # Fail! read 'color' as data instead of next label -&gt; [['shape', 'SQUARE color']]
-
-   # use stopOn attribute for OneOrMore to avoid reading label string as part of the data
-   attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
-   OneOrMore(attr_expr).parseString(text).pprint() # Better -&gt; [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']]
-
-   # could also be written as
-   (attr_expr * (1,)).parseString(text).pprint()
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.OneOrMore-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#OneOrMore.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>_MultipleMatch</code></b>:
-      <code>__init__</code>,
-      <code>parseImpl</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#OneOrMore.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.OnlyOnce-class.html b/htmldoc/pyparsing.OnlyOnce-class.html
deleted file mode 100644 (file)
index cbe8c58..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.OnlyOnce</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;OnlyOnce
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class OnlyOnce</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#OnlyOnce">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">OnlyOnce</strong>
-</pre>
-
-<hr />
-<p>Wrapper for parse actions, to ensure they are only called once.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.OnlyOnce-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">methodCall</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#OnlyOnce.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__call__"></a><span class="summary-sig-name">__call__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#OnlyOnce.__call__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="reset"></a><span class="summary-sig-name">reset</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#OnlyOnce.reset">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">methodCall</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#OnlyOnce.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Optional-class.html b/htmldoc/pyparsing.Optional-class.html
deleted file mode 100644 (file)
index ff54c3a..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Optional</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Optional
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Optional</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Optional">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">Optional</strong>
-</pre>
-
-<hr />
-<p>Optional matching of the given expression.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      expr - expression that must match zero or more times
-    </li>
-    <li>
-      default (optional) - value to be returned if the optional expression 
-      is not found.
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   # US postal code can be a 5-digit zip, plus optional 4-digit qualifier
-   zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4)))
-   zip.runTests('''
-       # traditional ZIP code
-       12345
-
-       # ZIP+4 form
-       12101-0001
-
-       # invalid ZIP
-       98765-
-       ''')
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   # traditional ZIP code
-   12345
-   ['12345']
-
-   # ZIP+4 form
-   12101-0001
-   ['12101-0001']
-
-   # invalid ZIP
-   98765-
-        ^
-   FAIL: Expected end of text (at char 5), (line:1, col:6)
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Optional-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">default</span>=<span class="summary-sig-default">_NullToken()</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Optional.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Optional-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Optional.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Optional-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Optional.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">default</span>=<span class="sig-default">_NullToken()</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Optional.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Optional.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Optional.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Or-class.html b/htmldoc/pyparsing.Or-class.html
deleted file mode 100644 (file)
index 7e02142..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Or</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Or
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Or</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Or">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-  <a href="pyparsing.ParseExpression-class.html">ParseExpression</a> --+
-                    |
-                   <strong class="uidshort">Or</strong>
-</pre>
-
-<hr />
-<p>Requires that at least one <code>ParseExpression</code> is found. If 
-  two expressions match, the expression that matches the longest string 
-  will be used. May be constructed using the <code>'^'</code> operator.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # construct Or using '^' operator
-
-   number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums))
-   print(number.searchString(&quot;123 3.1416 789&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['123'], ['3.1416'], ['789']]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Or-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">exprs</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Or.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Or-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Or.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__ixor__"></a><span class="summary-sig-name">__ixor__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Or.__ixor__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Or-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Or.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Or-class.html#checkRecursion" class="summary-sig-name">checkRecursion</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Or.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseExpression-class.html">ParseExpression</a></code></b>:
-      <code><a href="pyparsing.ParseExpression-class.html#__getitem__">__getitem__</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#append">append</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseExpression-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">exprs</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Or.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Or.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Or.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="checkRecursion"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">checkRecursion</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Or.checkRecursion">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#checkRecursion">ParserElement.checkRecursion</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseBaseException-class.html b/htmldoc/pyparsing.ParseBaseException-class.html
deleted file mode 100644 (file)
index f77cf41..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseBaseException</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseBaseException
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseBaseException</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-              object --+        
-                       |        
-exceptions.BaseException --+    
-                           |    
-        exceptions.Exception --+
-                               |
-                              <strong class="uidshort">ParseBaseException</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.ParseException-class.html">ParseException</a></li><li>, <a href="pyparsing.ParseFatalException-class.html">ParseFatalException</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>base exception class for all parsing runtime exceptions</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseBaseException-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">pstr</span>,
-        <span class="summary-sig-arg">loc</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">msg</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">elem</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseBaseException-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">aname</span>)</span><br />
-      supported attributes by name are:</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__getattr__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseBaseException-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseBaseException-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__repr__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="markInputline"></a><span class="summary-sig-name">markInputline</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">markerString</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">&gt;!&lt;</code><code class="variable-quote">'</code></span>)</span><br />
-      Extracts the exception line from the input string, and marks the 
-      location of the exception with a special symbol.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.markInputline">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__dir__"></a><span class="summary-sig-name">__dir__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__dir__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
-      <code>__new__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">pstr</span>,
-        <span class="sig-arg">loc</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">msg</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">elem</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__getattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">aname</span>)</span>
-    <br /><em class="fname">(Qualification operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__getattr__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>supported attributes by name are:</p>
-  <ul>
-    <li>
-      lineno - returns the line number of the exception text
-    </li>
-    <li>
-      col - returns the column number of the exception text
-    </li>
-    <li>
-      line - returns the line containing the exception text
-    </li>
-  </ul>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseBaseException.__repr__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseElementEnhance-class.html b/htmldoc/pyparsing.ParseElementEnhance-class.html
deleted file mode 100644 (file)
index 4aa2f88..0000000
+++ /dev/null
@@ -1,612 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseElementEnhance</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseElementEnhance
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseElementEnhance</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+    
-            |    
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+
-                |
-               <strong class="uidshort">ParseElementEnhance</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.TokenConverter-class.html">TokenConverter</a></li><li>, <a href="pyparsing.FollowedBy-class.html">FollowedBy</a></li><li>, <a href="pyparsing.Forward-class.html">Forward</a></li><li>, <a href="pyparsing.NotAny-class.html">NotAny</a></li><li class="private">, _MultipleMatch</li><li>, <a href="pyparsing.Optional-class.html">Optional</a></li><li>, <a href="pyparsing.PrecededBy-class.html">PrecededBy</a></li><li>, <a href="pyparsing.SkipTo-class.html">SkipTo</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Abstract subclass of <code>ParserElement</code>, for combining and 
-  post-processing parsed tokens.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace" class="summary-sig-name">leaveWhitespace</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Disables the skipping of whitespace before matching the characters in
-      the <code>ParserElement</code>'s defined pattern.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.leaveWhitespace">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#ignore" class="summary-sig-name">ignore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Define expression to be ignored (e.g., comments) while doing pattern 
-      matching; may be called repeatedly, to define multiple comment or 
-      other ignorable patterns.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.ignore">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#streamline" class="summary-sig-name">streamline</a>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.streamline">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion" class="summary-sig-name">checkRecursion</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">validateTrace</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
-      Check defined expressions for valid structure, check for infinite 
-      recursive definitions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.validate">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseElementEnhance-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="leaveWhitespace"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">leaveWhitespace</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.leaveWhitespace">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Disables the skipping of whitespace before matching the characters in 
-  the <code>ParserElement</code>'s defined pattern.  This is normally only 
-  used internally by the pyparsing module, but may be needed in some 
-  whitespace-sensitive grammars.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#leaveWhitespace">ParserElement.leaveWhitespace</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="ignore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">ignore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.ignore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define expression to be ignored (e.g., comments) while doing pattern 
-  matching; may be called repeatedly, to define multiple comment or other 
-  ignorable patterns.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj']
-
-   patt.ignore(cStyleComment)
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj', 'lskjd']
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#ignore">ParserElement.ignore</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="streamline"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">streamline</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.streamline">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#streamline">ParserElement.streamline</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="checkRecursion"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">checkRecursion</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.checkRecursion">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#checkRecursion">ParserElement.checkRecursion</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="validate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">validateTrace</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.validate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Check defined expressions for valid structure, check for infinite 
-  recursive definitions.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#validate">ParserElement.validate</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseElementEnhance.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseException-class.html b/htmldoc/pyparsing.ParseException-class.html
deleted file mode 100644 (file)
index e7ccea0..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseException</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseException
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseException</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseException">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-              <a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a> --+
-                                   |
-                                  <strong class="uidshort">ParseException</strong>
-</pre>
-
-<hr />
-<p>Exception thrown when parse expressions don't match class; supported 
-  attributes by name are:</p>
-  <ul>
-    <li>
-      lineno - returns the line number of the exception text
-    </li>
-    <li>
-      col - returns the column number of the exception text
-    </li>
-    <li>
-      line - returns the line containing the exception text
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   try:
-       Word(nums).setName(&quot;integer&quot;).parseString(&quot;ABC&quot;)
-   except ParseException as pe:
-       print(pe)
-       print(&quot;column: {}&quot;.format(pe.col))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-  Expected integer (at char 0), (line:1, col:1)
-   column: 1
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a></code></b>:
-      <code><a href="pyparsing.ParseBaseException-class.html#__dir__">__dir__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__getattr__">__getattr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__init__">__init__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#markInputline">markInputline</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
-      <code>__new__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseExpression-class.html b/htmldoc/pyparsing.ParseExpression-class.html
deleted file mode 100644 (file)
index ed3ec17..0000000
+++ /dev/null
@@ -1,681 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseExpression</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseExpression
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseExpression</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+    
-            |    
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+
-                |
-               <strong class="uidshort">ParseExpression</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.And-class.html">And</a></li><li>, <a href="pyparsing.Each-class.html">Each</a></li><li>, <a href="pyparsing.MatchFirst-class.html">MatchFirst</a></li><li>, <a href="pyparsing.Or-class.html">Or</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Abstract subclass of ParserElement, for combining and post-processing 
-  parsed tokens.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">exprs</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">i</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.__getitem__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="append"></a><span class="summary-sig-name">append</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.append">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#leaveWhitespace" class="summary-sig-name">leaveWhitespace</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Extends <code>leaveWhitespace</code> defined in base class, and also 
-      invokes <code>leaveWhitespace</code> on all contained expressions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.leaveWhitespace">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#ignore" class="summary-sig-name">ignore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Define expression to be ignored (e.g., comments) while doing pattern 
-      matching; may be called repeatedly, to define multiple comment or 
-      other ignorable patterns.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.ignore">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#streamline" class="summary-sig-name">streamline</a>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.streamline">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#setResultsName" class="summary-sig-name">setResultsName</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">listAllMatches</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Define name for referencing matching tokens as a nested attribute of 
-      the returned parse results.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.setResultsName">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">validateTrace</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
-      Check defined expressions for valid structure, check for infinite 
-      recursive definitions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.validate">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseExpression-class.html#copy" class="summary-sig-name">copy</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Make a copy of this <code>ParserElement</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.copy">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">exprs</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="leaveWhitespace"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">leaveWhitespace</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.leaveWhitespace">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Extends <code>leaveWhitespace</code> defined in base class, and also 
-  invokes <code>leaveWhitespace</code> on all contained expressions.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#leaveWhitespace">ParserElement.leaveWhitespace</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="ignore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">ignore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.ignore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define expression to be ignored (e.g., comments) while doing pattern 
-  matching; may be called repeatedly, to define multiple comment or other 
-  ignorable patterns.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj']
-
-   patt.ignore(cStyleComment)
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj', 'lskjd']
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#ignore">ParserElement.ignore</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="streamline"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">streamline</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.streamline">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#streamline">ParserElement.streamline</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="setResultsName"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setResultsName</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">listAllMatches</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.setResultsName">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define name for referencing matching tokens as a nested attribute of 
-  the returned parse results. NOTE: this returns a *copy* of the original 
-  <code>ParserElement</code> object; this is so that the client can define 
-  a basic element, such as an integer, and reference it in multiple places 
-  with different names.</p>
-  <p>You can also set results names using the abbreviated syntax, 
-  <code>expr(&quot;name&quot;)</code> in place of 
-  <code>expr.setResultsName(&quot;name&quot;)</code> - see <a 
-  href="pyparsing.ParserElement-class.html#__call__" 
-  class="link"><i>__call__</i></a>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   date_str = (integer.setResultsName(&quot;year&quot;) + '/'
-               + integer.setResultsName(&quot;month&quot;) + '/'
-               + integer.setResultsName(&quot;day&quot;))
-
-   # equivalent form:
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#setResultsName">ParserElement.setResultsName</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="validate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">validateTrace</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.validate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Check defined expressions for valid structure, check for infinite 
-  recursive definitions.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#validate">ParserElement.validate</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="copy"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">copy</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseExpression.copy">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Make a copy of this <code>ParserElement</code>.  Useful for defining 
-  different parse actions for the same parsing pattern, using copies of the
-  original parse element.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress(&quot;K&quot;)
-   integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-
-   print(OneOrMore(integerK | integerM | integer).parseString(&quot;5K 100 640K 256M&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [5120, 100, 655360, 268435456]
-</pre>
-  <p>Equivalent form of <code>expr.copy()</code> is just 
-  <code>expr()</code>:</p>
-<pre class="literalblock">
-   integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#copy">ParserElement.copy</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseFatalException-class.html b/htmldoc/pyparsing.ParseFatalException-class.html
deleted file mode 100644 (file)
index dd00877..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseFatalException</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseFatalException
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseFatalException</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseFatalException">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-              <a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a> --+
-                                   |
-                                  <strong class="uidshort">ParseFatalException</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.ParseSyntaxException-class.html">ParseSyntaxException</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>user-throwable exception thrown when inconsistent parse content is 
-  found; stops all parsing immediately</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a></code></b>:
-      <code><a href="pyparsing.ParseBaseException-class.html#__dir__">__dir__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__getattr__">__getattr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__init__">__init__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#markInputline">markInputline</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
-      <code>__new__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseResults-class.html b/htmldoc/pyparsing.ParseResults-class.html
deleted file mode 100644 (file)
index a66aa29..0000000
+++ /dev/null
@@ -1,1451 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseResults</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseResults
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseResults</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">ParseResults</strong>
-</pre>
-
-<hr />
-<p>Structured parse results, to provide multiple means of access to the 
-  parsed data:</p>
-  <ul>
-    <li>
-      as a list (<code>len(results)</code>)
-    </li>
-    <li>
-      by list index (<code>results[0], results[1]</code>, etc.)
-    </li>
-    <li>
-      by attribute (<code>results.&lt;resultsName&gt;</code> - see <a 
-      href="pyparsing.ParserElement-class.html#setResultsName" 
-      class="link">ParserElement.setResultsName</a>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   date_str = (integer.setResultsName(&quot;year&quot;) + '/'
-                   + integer.setResultsName(&quot;month&quot;) + '/'
-                   + integer.setResultsName(&quot;day&quot;))
-   # equivalent form:
-   # date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   # parseString returns a ParseResults object
-   result = date_str.parseString(&quot;1999/12/31&quot;)
-
-   def test(s, fn=repr):
-       print(&quot;%s -&gt; %s&quot; % (s, fn(eval(s))))
-   test(&quot;list(result)&quot;)
-   test(&quot;result[0]&quot;)
-   test(&quot;result['month']&quot;)
-   test(&quot;result.day&quot;)
-   test(&quot;'month' in result&quot;)
-   test(&quot;'minutes' in result&quot;)
-   test(&quot;result.dump()&quot;, str)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   list(result) -&gt; ['1999', '/', '12', '/', '31']
-   result[0] -&gt; '1999'
-   result['month'] -&gt; '12'
-   result.day -&gt; '31'
-   'month' in result -&gt; True
-   'minutes' in result -&gt; False
-   result.dump() -&gt; ['1999', '/', '12', '/', '31']
-   - day: 31
-   - month: 12
-   - year: 1999
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">toklist</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">asList</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">modal</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">isinstance</span>=<span class="summary-sig-default">&lt;built-in function isinstance&gt;</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">i</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__getitem__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__setitem__"></a><span class="summary-sig-name">__setitem__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">k</span>,
-        <span class="summary-sig-arg">v</span>,
-        <span class="summary-sig-arg">isinstance</span>=<span class="summary-sig-default">&lt;built-in function isinstance&gt;</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__setitem__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__delitem__"></a><span class="summary-sig-name">__delitem__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">i</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__delitem__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__contains__"></a><span class="summary-sig-name">__contains__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">k</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__contains__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__len__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__bool__"></a><span class="summary-sig-name">__bool__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__bool__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__bool__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__iter__"></a><span class="summary-sig-name">__iter__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__iter__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__reversed__"></a><span class="summary-sig-name">__reversed__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__reversed__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="iterkeys"></a><span class="summary-sig-name">iterkeys</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns an iterator of all named result keys (Python 2.x only).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults._iterkeys">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="itervalues"></a><span class="summary-sig-name">itervalues</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns an iterator of all named result values (Python 2.x only).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults._itervalues">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="iteritems"></a><span class="summary-sig-name">iteritems</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns an iterator of all named result key-value tuples (Python 2.x 
-      only).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults._iteritems">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="keys"></a><span class="summary-sig-name">keys</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns all named result keys (as a list in Python 2.x, as an 
-      iterator in Python 3.x).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.keys">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="values"></a><span class="summary-sig-name">values</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns all named result values (as a list in Python 2.x, as an 
-      iterator in Python 3.x).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.values">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="items"></a><span class="summary-sig-name">items</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns all named result key-values (as a list of tuples in Python 
-      2.x, as an iterator in Python 3.x).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.items">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="haskeys"></a><span class="summary-sig-name">haskeys</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Since keys() returns an iterator, this method is helpful in bypassing
-      code that looks for the existence of any defined results names.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.haskeys">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#pop" class="summary-sig-name">pop</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">*args</span>,
-        <span class="summary-sig-arg">**kwargs</span>)</span><br />
-      Removes and returns item at specified index 
-      (default=<code>last</code>).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.pop">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#get" class="summary-sig-name">get</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">key</span>,
-        <span class="summary-sig-arg">defaultValue</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Returns named result matching the given key, or if there is no such 
-      name, then returns the given <code>defaultValue</code> or 
-      <code>None</code> if no <code>defaultValue</code> is specified.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.get">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#insert" class="summary-sig-name">insert</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">index</span>,
-        <span class="summary-sig-arg">insStr</span>)</span><br />
-      Inserts new element at location index in the list of parsed tokens.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.insert">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#append" class="summary-sig-name">append</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">item</span>)</span><br />
-      Add single element to end of ParseResults list of elements.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.append">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#extend" class="summary-sig-name">extend</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">itemseq</span>)</span><br />
-      Add sequence of elements to end of ParseResults list of elements.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.extend">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="clear"></a><span class="summary-sig-name">clear</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Clear all elements and results names.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.clear">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__getattr__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__add__"></a><span class="summary-sig-name">__add__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__add__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__iadd__"></a><span class="summary-sig-name">__iadd__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__iadd__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__radd__"></a><span class="summary-sig-name">__radd__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__radd__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__repr__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#asList" class="summary-sig-name">asList</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns the parse results as a nested list of matching tokens, all 
-      converted to strings.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asList">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#asDict" class="summary-sig-name">asDict</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns the named parse results as a nested dictionary.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asDict">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="copy"></a><span class="summary-sig-name">copy</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns a new copy of a <code>ParseResults</code> object.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.copy">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#asXML" class="summary-sig-name">asXML</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">doctag</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">namedItemsOnly</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">formatted</span>=<span class="summary-sig-default">True</span>)</span><br />
-      (Deprecated) Returns the parse results as XML.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asXML">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#getName" class="summary-sig-name">getName</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Returns the results name for this token expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.getName">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#dump" class="summary-sig-name">dump</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">full</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Diagnostic method for listing out the contents of a 
-      <code>ParseResults</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.dump">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#pprint" class="summary-sig-name">pprint</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">*args</span>,
-        <span class="summary-sig-arg">**kwargs</span>)</span><br />
-      Pretty-printer for parsed results as a list, using the 
-      <code>pprint</code> module.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.pprint">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getstate__"></a><span class="summary-sig-name">__getstate__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__getstate__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__setstate__"></a><span class="summary-sig-name">__setstate__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">state</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__setstate__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getnewargs__"></a><span class="summary-sig-name">__getnewargs__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__getnewargs__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__dir__"></a><span class="summary-sig-name">__dir__</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__dir__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParseResults-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">cls</span>,
-        <span class="summary-sig-arg">toklist</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">asList</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">modal</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__new__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">cls</span>,
-        <span class="sig-arg">toklist</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">asList</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">modal</span>=<span class="sig-default">True</span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__new__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">toklist</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">asList</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">modal</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">isinstance</span>=<span class="sig-default">&lt;built-in function isinstance&gt;</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="pop"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">pop</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">*args</span>,
-        <span class="sig-arg">**kwargs</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.pop">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Removes and returns item at specified index 
-  (default=<code>last</code>). Supports both <code>list</code> and 
-  <code>dict</code> semantics for <code>pop()</code>. If passed no argument
-  or an integer argument, it will use <code>list</code> semantics and pop 
-  tokens from the list of parsed tokens. If passed a non-integer argument 
-  (most likely a string), it will use <code>dict</code> semantics and pop 
-  the corresponding value from any defined results names. A second default 
-  return value argument is supported, just as in 
-  <code>dict.pop()</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   def remove_first(tokens):
-       tokens.pop(0)
-   print(OneOrMore(Word(nums)).parseString(&quot;0 123 321&quot;)) # -&gt; ['0', '123', '321']
-   print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString(&quot;0 123 321&quot;)) # -&gt; ['123', '321']
-
-   label = Word(alphas)
-   patt = label(&quot;LABEL&quot;) + OneOrMore(Word(nums))
-   print(patt.parseString(&quot;AAB 123 321&quot;).dump())
-
-   # Use pop() in a parse action to remove named result (note that corresponding value is not
-   # removed from list form of results)
-   def remove_LABEL(tokens):
-       tokens.pop(&quot;LABEL&quot;)
-       return tokens
-   patt.addParseAction(remove_LABEL)
-   print(patt.parseString(&quot;AAB 123 321&quot;).dump())
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['AAB', '123', '321']
-   - LABEL: AAB
-
-   ['AAB', '123', '321']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="get"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">get</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">key</span>,
-        <span class="sig-arg">defaultValue</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.get">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns named result matching the given key, or if there is no such 
-  name, then returns the given <code>defaultValue</code> or 
-  <code>None</code> if no <code>defaultValue</code> is specified.</p>
-  <p>Similar to <code>dict.get()</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   result = date_str.parseString(&quot;1999/12/31&quot;)
-   print(result.get(&quot;year&quot;)) # -&gt; '1999'
-   print(result.get(&quot;hour&quot;, &quot;not specified&quot;)) # -&gt; 'not specified'
-   print(result.get(&quot;hour&quot;)) # -&gt; None
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="insert"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">insert</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">index</span>,
-        <span class="sig-arg">insStr</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.insert">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Inserts new element at location index in the list of parsed 
-  tokens.</p>
-  <p>Similar to <code>list.insert()</code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   print(OneOrMore(Word(nums)).parseString(&quot;0 123 321&quot;)) # -&gt; ['0', '123', '321']
-
-   # use a parse action to insert the parse location in the front of the parsed results
-   def insert_locn(locn, tokens):
-       tokens.insert(0, locn)
-   print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString(&quot;0 123 321&quot;)) # -&gt; [0, '0', '123', '321']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="append"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">append</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">item</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.append">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Add single element to end of ParseResults list of elements.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   print(OneOrMore(Word(nums)).parseString(&quot;0 123 321&quot;)) # -&gt; ['0', '123', '321']
-
-   # use a parse action to compute the sum of the parsed integers, and add it to the end
-   def append_sum(tokens):
-       tokens.append(sum(map(int, tokens)))
-   print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString(&quot;0 123 321&quot;)) # -&gt; ['0', '123', '321', 444]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="extend"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">extend</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">itemseq</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.extend">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Add sequence of elements to end of ParseResults list of elements.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-
-   # use a parse action to append the reverse of the matched strings, to make a palindrome
-   def make_palindrome(tokens):
-       tokens.extend(reversed([t[::-1] for t in tokens]))
-       return ''.join(tokens)
-   print(patt.addParseAction(make_palindrome).parseString(&quot;lskdj sdlkjf lksd&quot;)) # -&gt; 'lskdjsdlkjflksddsklfjkldsjdksl'
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__repr__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="asList"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">asList</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asList">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns the parse results as a nested list of matching tokens, all 
-  converted to strings.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-   result = patt.parseString(&quot;sldkj lsdkj sldkj&quot;)
-   # even though the result prints in string-like form, it is actually a pyparsing ParseResults
-   print(type(result), result) # -&gt; &lt;class 'pyparsing.ParseResults'&gt; ['sldkj', 'lsdkj', 'sldkj']
-
-   # Use asList() to create an actual list
-   result_list = result.asList()
-   print(type(result_list), result_list) # -&gt; &lt;class 'list'&gt; ['sldkj', 'lsdkj', 'sldkj']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="asDict"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">asDict</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asDict">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns the named parse results as a nested dictionary.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   result = date_str.parseString('12/31/1999')
-   print(type(result), repr(result)) # -&gt; &lt;class 'pyparsing.ParseResults'&gt; (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]})
-
-   result_dict = result.asDict()
-   print(type(result_dict), repr(result_dict)) # -&gt; &lt;class 'dict'&gt; {'day': '1999', 'year': '12', 'month': '31'}
-
-   # even though a ParseResults supports dict-like access, sometime you just need to have a dict
-   import json
-   print(json.dumps(result)) # -&gt; Exception: TypeError: ... is not JSON serializable
-   print(json.dumps(result.asDict())) # -&gt; {&quot;month&quot;: &quot;31&quot;, &quot;day&quot;: &quot;1999&quot;, &quot;year&quot;: &quot;12&quot;}
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="asXML"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">asXML</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">doctag</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">namedItemsOnly</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">indent</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">formatted</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.asXML">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>(Deprecated) Returns the parse results as XML. Tags are created for 
-  tokens and lists that have defined results names.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="getName"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">getName</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.getName">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Returns the results name for this token expression. Useful when 
-  several different expressions might match at a particular location.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   ssn_expr = Regex(r&quot;\d\d\d-\d\d-\d\d\d\d&quot;)
-   house_number_expr = Suppress('#') + Word(nums, alphanums)
-   user_data = (Group(house_number_expr)(&quot;house_number&quot;)
-               | Group(ssn_expr)(&quot;ssn&quot;)
-               | Group(integer)(&quot;age&quot;))
-   user_info = OneOrMore(user_data)
-
-   result = user_info.parseString(&quot;22 111-22-3333 #221B&quot;)
-   for item in result:
-       print(item.getName(), ':', item[0])
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   age : 22
-   ssn : 111-22-3333
-   house_number : 221B
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="dump"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">dump</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">indent</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">depth</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">full</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.dump">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Diagnostic method for listing out the contents of a 
-  <code>ParseResults</code>. Accepts an optional <code>indent</code> 
-  argument so that this string can be embedded in a nested display of other
-  data.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   result = date_str.parseString('12/31/1999')
-   print(result.dump())
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['12', '/', '31', '/', '1999']
-   - day: 1999
-   - month: 31
-   - year: 12
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="pprint"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">pprint</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">*args</span>,
-        <span class="sig-arg">**kwargs</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParseResults.pprint">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Pretty-printer for parsed results as a list, using the 
-  <code>pprint</code> module. Accepts additional positional or keyword args
-  as defined for the <code>pprint.pprint</code> method. (<a 
-  href="http://docs.python.org/3/library/pprint.html#pprint.pprint" 
-  target="_top">http://docs.python.org/3/library/pprint.html#pprint.pprint</a>)</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   ident = Word(alphas, alphanums)
-   num = Word(nums)
-   func = Forward()
-   term = ident | num | Group('(' + func + ')')
-   func &lt;&lt;= ident + Group(Optional(delimitedList(term)))
-   result = func.parseString(&quot;fna a,b,(fnb c,d,200),100&quot;)
-   result.pprint(width=40)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['fna',
-    ['a',
-     'b',
-     ['(', 'fnb', ['c', 'd', '200'], ')'],
-     '100']]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParseSyntaxException-class.html b/htmldoc/pyparsing.ParseSyntaxException-class.html
deleted file mode 100644 (file)
index f8dd061..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParseSyntaxException</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParseSyntaxException
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParseSyntaxException</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParseSyntaxException">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-              object --+                
-                       |                
-exceptions.BaseException --+            
-                           |            
-        exceptions.Exception --+        
-                               |        
-              <a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a> --+    
-                                   |    
-                 <a href="pyparsing.ParseFatalException-class.html">ParseFatalException</a> --+
-                                       |
-                                      <strong class="uidshort">ParseSyntaxException</strong>
-</pre>
-
-<hr />
-<p>just like <a href="pyparsing.ParseFatalException-class.html" 
-  class="link">ParseFatalException</a>, but thrown internally when an 
-  ErrorStop ('-' operator) indicates that parsing is to stop immediately 
-  because an unbacktrackable syntax error has been found</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseBaseException-class.html">ParseBaseException</a></code></b>:
-      <code><a href="pyparsing.ParseBaseException-class.html#__dir__">__dir__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__getattr__">__getattr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__init__">__init__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseBaseException-class.html#markInputline">markInputline</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
-      <code>__new__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ParserElement-class.html b/htmldoc/pyparsing.ParserElement-class.html
deleted file mode 100644 (file)
index 74c5e76..0000000
+++ /dev/null
@@ -1,2478 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ParserElement</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ParserElement
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ParserElement</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">ParserElement</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.Token-class.html">Token</a></li><li>, <a href="pyparsing.ParseExpression-class.html">ParseExpression</a></li><li>, <a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Abstract base level parser element class.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#copy" class="summary-sig-name">copy</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Make a copy of this <code>ParserElement</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.copy">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setName" class="summary-sig-name">setName</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>)</span><br />
-      Define name for this expression, makes debugging and exception 
-      messages clearer.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setName">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setResultsName" class="summary-sig-name">setResultsName</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">listAllMatches</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Define name for referencing matching tokens as a nested attribute of 
-      the returned parse results.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setResultsName">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setBreak" class="summary-sig-name">setBreak</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">breakFlag</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Method to invoke the Python pdb debugger when this element is about 
-      to be parsed.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setBreak">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setParseAction" class="summary-sig-name">setParseAction</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">*fns</span>,
-        <span class="summary-sig-arg">**kwargs</span>)</span><br />
-      Define one or more actions to perform when successfully matching 
-      parse element definition.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setParseAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#addParseAction" class="summary-sig-name">addParseAction</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">*fns</span>,
-        <span class="summary-sig-arg">**kwargs</span>)</span><br />
-      Add one or more parse actions to expression's list of parse actions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.addParseAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#addCondition" class="summary-sig-name">addCondition</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">*fns</span>,
-        <span class="summary-sig-arg">**kwargs</span>)</span><br />
-      Add a boolean predicate function to expression's list of parse 
-      actions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.addCondition">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setFailAction" class="summary-sig-name">setFailAction</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">fn</span>)</span><br />
-      Define action to perform if parsing fails at this expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setFailAction">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="preParse"></a><span class="summary-sig-name">preParse</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.preParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="parseImpl"></a><span class="summary-sig-name">parseImpl</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="postParse"></a><span class="summary-sig-name">postParse</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">tokenlist</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.postParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="tryParse"></a><span class="summary-sig-name">tryParse</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.tryParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="canParseNext"></a><span class="summary-sig-name">canParseNext</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.canParseNext">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#parseString" class="summary-sig-name">parseString</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">parseAll</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Execute the parse expression with the given string.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseString">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#scanString" class="summary-sig-name">scanString</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">maxMatches</span>=<span class="summary-sig-default">9223372036854775807</span>,
-        <span class="summary-sig-arg">overlap</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Scan the input string for expression matches.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.scanString">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#transformString" class="summary-sig-name">transformString</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>)</span><br />
-      Extension to <code><a 
-      href="pyparsing.ParserElement-class.html#scanString" 
-      class="link">scanString</a></code>, to modify matching text with 
-      modified tokens that may be returned from a parse action.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.transformString">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#searchString" class="summary-sig-name">searchString</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">maxMatches</span>=<span class="summary-sig-default">9223372036854775807</span>)</span><br />
-      Another extension to <code><a 
-      href="pyparsing.ParserElement-class.html#scanString" 
-      class="link">scanString</a></code>, simplifying the access to the 
-      tokens found to match the given parse expression.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.searchString">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#split" class="summary-sig-name">split</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">maxsplit</span>=<span class="summary-sig-default">9223372036854775807</span>,
-        <span class="summary-sig-arg">includeSeparators</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Generator method to split a string using the given expression as a 
-      separator.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.split">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__add__" class="summary-sig-name">__add__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of + operator - returns <code><a 
-      href="pyparsing.And-class.html" class="link">And</a></code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__add__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__radd__"></a><span class="summary-sig-name">__radd__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of + operator when left operand is not a <code><a 
-      href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__radd__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__sub__"></a><span class="summary-sig-name">__sub__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of - operator, returns <code><a 
-      href="pyparsing.And-class.html" class="link">And</a></code> with 
-      error stop</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__sub__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__rsub__"></a><span class="summary-sig-name">__rsub__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of - operator when left operand is not a <code><a 
-      href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__rsub__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__mul__" class="summary-sig-name">__mul__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of * operator, allows use of <code>expr * 3</code> in 
-      place of <code>expr + expr + expr</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__mul__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__rmul__"></a><span class="summary-sig-name">__rmul__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__rmul__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__or__"></a><span class="summary-sig-name">__or__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of | operator - returns <code><a 
-      href="pyparsing.MatchFirst-class.html" 
-      class="link">MatchFirst</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__or__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__ror__"></a><span class="summary-sig-name">__ror__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of | operator when left operand is not a <code><a 
-      href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__ror__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__xor__"></a><span class="summary-sig-name">__xor__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of ^ operator - returns <code><a 
-      href="pyparsing.Or-class.html" class="link">Or</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__xor__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__rxor__"></a><span class="summary-sig-name">__rxor__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of ^ operator when left operand is not a <code><a 
-      href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__rxor__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__and__"></a><span class="summary-sig-name">__and__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of &amp; operator - returns <code><a 
-      href="pyparsing.Each-class.html" class="link">Each</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__and__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__rand__"></a><span class="summary-sig-name">__rand__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Implementation of &amp; operator when left operand is not a <code><a 
-      href="pyparsing.ParserElement-class.html" 
-      class="link">ParserElement</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__rand__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__invert__"></a><span class="summary-sig-name">__invert__</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Implementation of ~ operator - returns <code><a 
-      href="pyparsing.NotAny-class.html" class="link">NotAny</a></code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__invert__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__call__" class="summary-sig-name">__call__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Shortcut for <code><a 
-      href="pyparsing.ParserElement-class.html#setResultsName" 
-      class="link">setResultsName</a></code>, with 
-      <code>listAllMatches=False</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__call__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="suppress"></a><span class="summary-sig-name">suppress</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Suppresses the output of this <code>ParserElement</code>; useful to 
-      keep punctuation from cluttering up returned output.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.suppress">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#leaveWhitespace" class="summary-sig-name">leaveWhitespace</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Disables the skipping of whitespace before matching the characters in
-      the <code>ParserElement</code>'s defined pattern.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.leaveWhitespace">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="setWhitespaceChars"></a><span class="summary-sig-name">setWhitespaceChars</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">chars</span>)</span><br />
-      Overrides the default whitespace chars</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setWhitespaceChars">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#parseWithTabs" class="summary-sig-name">parseWithTabs</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Overrides default behavior to expand <code>&lt;TAB&gt;</code>s to 
-      spaces before parsing the input string.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseWithTabs">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#ignore" class="summary-sig-name">ignore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span><br />
-      Define expression to be ignored (e.g., comments) while doing pattern 
-      matching; may be called repeatedly, to define multiple comment or 
-      other ignorable patterns.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.ignore">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="setDebugActions"></a><span class="summary-sig-name">setDebugActions</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">startAction</span>,
-        <span class="summary-sig-arg">successAction</span>,
-        <span class="summary-sig-arg">exceptionAction</span>)</span><br />
-      Enable display of debugging messages while doing pattern matching.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setDebugActions">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setDebug" class="summary-sig-name">setDebug</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">flag</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Enable display of debugging messages while doing pattern matching.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setDebug">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__repr__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="streamline"></a><span class="summary-sig-name">streamline</span>(<span class="summary-sig-arg">self</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.streamline">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="checkRecursion"></a><span class="summary-sig-name">checkRecursion</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.checkRecursion">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="validate"></a><span class="summary-sig-name">validate</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">validateTrace</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
-      Check defined expressions for valid structure, check for infinite 
-      recursive definitions.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.validate">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#parseFile" class="summary-sig-name">parseFile</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">file_or_filename</span>,
-        <span class="summary-sig-arg">parseAll</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Execute the parse expression on the given file or filename.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseFile">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__eq__"></a><span class="summary-sig-name">__eq__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__eq__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__ne__"></a><span class="summary-sig-name">__ne__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__ne__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      hash(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__hash__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__req__"></a><span class="summary-sig-name">__req__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__req__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__rne__"></a><span class="summary-sig-name">__rne__</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__rne__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#matches" class="summary-sig-name">matches</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">testString</span>,
-        <span class="summary-sig-arg">parseAll</span>=<span class="summary-sig-default">True</span>)</span><br />
-      Method for quick testing of a parser against a test string.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.matches">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#runTests" class="summary-sig-name">runTests</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">tests</span>,
-        <span class="summary-sig-arg">parseAll</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">comment</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">#</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">fullDump</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">printResults</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">failureTests</span>=<span class="summary-sig-default">False</span>)</span><br />
-      Execute the parse expression on a series of test strings, showing 
-      each test, the parsed results or where the parse failed.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.runTests">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars" class="summary-sig-name">setDefaultWhitespaceChars</a>(<span class="summary-sig-arg">chars</span>)</span><br />
-      Overrides the default whitespace chars</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setDefaultWhitespaceChars">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing" class="summary-sig-name">inlineLiteralsUsing</a>(<span class="summary-sig-arg">cls</span>)</span><br />
-      Set class to be used for inclusion of string literals into a parser.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.inlineLiteralsUsing">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="resetCache"></a><span class="summary-sig-name">resetCache</span>()</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.resetCache">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ParserElement-class.html#enablePackrat" class="summary-sig-name">enablePackrat</a>(<span class="summary-sig-arg">cache_size_limit</span>=<span class="summary-sig-default">128</span>)</span><br />
-      Enables &quot;packrat&quot; parsing, which adds memoizing to the 
-      parsing logic.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.enablePackrat">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="DEFAULT_WHITE_CHARS"></a><span class="summary-name">DEFAULT_WHITE_CHARS</span> = <code title="''' 
-\t\r'''"><code class="variable-quote">'</code><code class="variable-string"> \n\t\r</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="verbose_stacktrace"></a><span class="summary-name">verbose_stacktrace</span> = <code title="False">False</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="packrat_cache"></a><span class="summary-name">packrat_cache</span> = <code title="{}"><code class="variable-group">{</code><code class="variable-group">}</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="packrat_cache_lock"></a><span class="summary-name">packrat_cache_lock</span> = <code title="&lt;_RLock owner=None count=0&gt;">&lt;_RLock owner=None count=0&gt;</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="packrat_cache_stats"></a><span class="summary-name">packrat_cache_stats</span> = <code title="[0, 0]"><code class="variable-group">[</code>0<code class="variable-op">, </code>0<code class="variable-group">]</code></code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="setDefaultWhitespaceChars"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setDefaultWhitespaceChars</span>(<span class="sig-arg">chars</span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setDefaultWhitespaceChars">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Overrides the default whitespace chars</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # default whitespace chars are space, &lt;TAB&gt; and newline
-   OneOrMore(Word(alphas)).parseString(&quot;abc def\nghi jkl&quot;)  # -&gt; ['abc', 'def', 'ghi', 'jkl']
-
-   # change to just treat newline as significant
-   ParserElement.setDefaultWhitespaceChars(&quot; \t&quot;)
-   OneOrMore(Word(alphas)).parseString(&quot;abc def\nghi jkl&quot;)  # -&gt; ['abc', 'def']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="inlineLiteralsUsing"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">inlineLiteralsUsing</span>(<span class="sig-arg">cls</span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.inlineLiteralsUsing">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Set class to be used for inclusion of string literals into a 
-  parser.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # default literal class used is Literal
-   integer = Word(nums)
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   date_str.parseString(&quot;1999/12/31&quot;)  # -&gt; ['1999', '/', '12', '/', '31']
-
-
-   # change to Suppress
-   ParserElement.inlineLiteralsUsing(Suppress)
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-
-   date_str.parseString(&quot;1999/12/31&quot;)  # -&gt; ['1999', '12', '31']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="copy"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">copy</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.copy">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Make a copy of this <code>ParserElement</code>.  Useful for defining 
-  different parse actions for the same parsing pattern, using copies of the
-  original parse element.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress(&quot;K&quot;)
-   integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-
-   print(OneOrMore(integerK | integerM | integer).parseString(&quot;5K 100 640K 256M&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [5120, 100, 655360, 268435456]
-</pre>
-  <p>Equivalent form of <code>expr.copy()</code> is just 
-  <code>expr()</code>:</p>
-<pre class="literalblock">
-   integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress(&quot;M&quot;)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setName"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setName</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setName">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define name for this expression, makes debugging and exception 
-  messages clearer.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   Word(nums).parseString(&quot;ABC&quot;)  # -&gt; Exception: Expected W:(0123...) (at char 0), (line:1, col:1)
-   Word(nums).setName(&quot;integer&quot;).parseString(&quot;ABC&quot;)  # -&gt; Exception: Expected integer (at char 0), (line:1, col:1)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setResultsName"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setResultsName</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">listAllMatches</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setResultsName">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define name for referencing matching tokens as a nested attribute of 
-  the returned parse results. NOTE: this returns a *copy* of the original 
-  <code>ParserElement</code> object; this is so that the client can define 
-  a basic element, such as an integer, and reference it in multiple places 
-  with different names.</p>
-  <p>You can also set results names using the abbreviated syntax, 
-  <code>expr(&quot;name&quot;)</code> in place of 
-  <code>expr.setResultsName(&quot;name&quot;)</code> - see <a 
-  href="pyparsing.ParserElement-class.html#__call__" 
-  class="link"><i>__call__</i></a>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   date_str = (integer.setResultsName(&quot;year&quot;) + '/'
-               + integer.setResultsName(&quot;month&quot;) + '/'
-               + integer.setResultsName(&quot;day&quot;))
-
-   # equivalent form:
-   date_str = integer(&quot;year&quot;) + '/' + integer(&quot;month&quot;) + '/' + integer(&quot;day&quot;)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setBreak"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setBreak</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">breakFlag</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setBreak">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Method to invoke the Python pdb debugger when this element is about to
-  be parsed. Set <code>breakFlag</code> to True to enable, False to 
-  disable.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setParseAction"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setParseAction</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">*fns</span>,
-        <span class="sig-arg">**kwargs</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setParseAction">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define one or more actions to perform when successfully matching parse
-  element definition. Parse action fn is a callable method with 0-3 
-  arguments, called as <code>fn(s,loc,toks)</code>, 
-  <code>fn(loc,toks)</code>, <code>fn(toks)</code>, or just 
-  <code>fn()</code>, where:</p>
-  <ul>
-    <li>
-      s   = the original string being parsed (see note below)
-    </li>
-    <li>
-      loc = the location of the matching substring
-    </li>
-    <li>
-      toks = a list of the matched tokens, packaged as a <code><a 
-      href="pyparsing.ParseResults-class.html" 
-      class="link">ParseResults</a></code> object
-    </li>
-  </ul>
-  <p>If the functions in fns modify the tokens, they can return them as the
-  return value from fn, and the modified list of tokens will replace the 
-  original. Otherwise, fn does not need to return any value.</p>
-  <p>Optional keyword arguments:</p>
-  <ul>
-    <li>
-      callDuringTry = (default=<code>False</code>) indicate if parse action
-      should be run during lookaheads and alternate testing
-    </li>
-  </ul>
-  <p>Note: the default parsing behavior is to expand tabs in the input 
-  string before starting the parsing process.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>parseString</i></a> for more information on parsing 
-  strings containing <code>&lt;TAB&gt;</code>s, and suggested methods to 
-  maintain a consistent view of the parsed string, the parse location, and 
-  line and column positions within the parsed string.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums)
-   date_str = integer + '/' + integer + '/' + integer
-
-   date_str.parseString(&quot;1999/12/31&quot;)  # -&gt; ['1999', '/', '12', '/', '31']
-
-   # use parse action to convert to ints at parse time
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   date_str = integer + '/' + integer + '/' + integer
-
-   # note that integer fields are now ints, not strings
-   date_str.parseString(&quot;1999/12/31&quot;)  # -&gt; [1999, '/', 12, '/', 31]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="addParseAction"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">addParseAction</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">*fns</span>,
-        <span class="sig-arg">**kwargs</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.addParseAction">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Add one or more parse actions to expression's list of parse actions. 
-  See <a href="pyparsing.ParserElement-class.html#setParseAction" 
-  class="link"><i>setParseAction</i></a>.</p>
-  <p>See examples in <a href="pyparsing.ParserElement-class.html#copy" 
-  class="link"><i>copy</i></a>.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="addCondition"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">addCondition</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">*fns</span>,
-        <span class="sig-arg">**kwargs</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.addCondition">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Add a boolean predicate function to expression's list of parse 
-  actions. See <a href="pyparsing.ParserElement-class.html#setParseAction" 
-  class="link"><i>setParseAction</i></a> for function call signatures. 
-  Unlike <code>setParseAction</code>, functions passed to 
-  <code>addCondition</code> need to return boolean success/fail of the 
-  condition.</p>
-  <p>Optional keyword arguments:</p>
-  <ul>
-    <li>
-      message = define a custom message to be used in the raised exception
-    </li>
-    <li>
-      fatal   = if True, will raise ParseFatalException to stop parsing 
-      immediately; otherwise will raise ParseException
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
-   year_int = integer.copy()
-   year_int.addCondition(lambda toks: toks[0] &gt;= 2000, message=&quot;Only support years 2000 and later&quot;)
-   date_str = year_int + '/' + integer + '/' + integer
-
-   result = date_str.parseString(&quot;1999/12/31&quot;)  # -&gt; Exception: Only support years 2000 and later (at char 0), (line:1, col:1)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setFailAction"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setFailAction</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">fn</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setFailAction">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define action to perform if parsing fails at this expression. Fail 
-  acton fn is a callable function that takes the arguments 
-  <code>fn(s,loc,expr,err)</code> where:</p>
-  <ul>
-    <li>
-      s = string being parsed
-    </li>
-    <li>
-      loc = location where expression match was attempted and failed
-    </li>
-    <li>
-      expr = the parse expression that failed
-    </li>
-    <li>
-      err = the exception thrown
-    </li>
-  </ul>
-  <p>The function returns no value.  It may throw <code><a 
-  href="pyparsing.ParseFatalException-class.html" 
-  class="link">ParseFatalException</a></code> if it is desired to stop 
-  parsing immediately.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="enablePackrat"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">enablePackrat</span>(<span class="sig-arg">cache_size_limit</span>=<span class="sig-default">128</span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.enablePackrat">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Enables &quot;packrat&quot; parsing, which adds memoizing to the 
-  parsing logic. Repeated parse attempts at the same string location (which
-  happens often in many complex grammars) can immediately return a cached 
-  value, instead of re-executing parsing/validating code.  Memoizing is 
-  done of both valid results and parsing exceptions.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      cache_size_limit - (default=<code>128</code>) - if an integer value 
-      is provided will limit the size of the packrat cache; if None is 
-      passed, then the cache size will be unbounded; if 0 is passed, the 
-      cache will be effectively disabled.
-    </li>
-  </ul>
-  <p>This speedup may break existing programs that use parse actions that 
-  have side-effects.  For this reason, packrat parsing is disabled when you
-  first import pyparsing.  To activate the packrat feature, your program 
-  must call the class method <code>ParserElement.enablePackrat()</code>.  
-  If your program uses <code>psyco</code> to &quot;compile as you go&quot;,
-  you must call <code>enablePackrat</code> before calling 
-  <code>psyco.full()</code>.  If you do not do this, Python will crash.  
-  For best results, call <code>enablePackrat()</code> immediately after 
-  importing pyparsing.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   import pyparsing
-   pyparsing.ParserElement.enablePackrat()
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseString"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseString</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">parseAll</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseString">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Execute the parse expression with the given string. This is the main 
-  interface to the client code, once the complete expression has been 
-  built.</p>
-  <p>If you want the grammar to require that the entire input string be 
-  successfully parsed, then set <code>parseAll</code> to True (equivalent 
-  to ending the grammar with <code><a href="pyparsing.StringEnd-class.html"
-  class="link">StringEnd()</a></code>).</p>
-  <p>Note: <code>parseString</code> implicitly calls 
-  <code>expandtabs()</code> on the input string, in order to report proper 
-  column numbers in parse actions. If the input string contains tabs and 
-  the grammar uses parse actions that use the <code>loc</code> argument to 
-  index into the string being parsed, you can ensure you have a consistent 
-  view of the input string by:</p>
-  <ul>
-    <li>
-      calling <code>parseWithTabs</code> on your grammar before calling 
-      <code>parseString</code> (see <a 
-      href="pyparsing.ParserElement-class.html#parseWithTabs" 
-      class="link"><i>parseWithTabs</i></a>)
-    </li>
-    <li>
-      define your parse action using the full <code>(s,loc,toks)</code> 
-      signature, and reference the input string using the parse action's 
-      <code>s</code> argument
-    </li>
-    <li>
-      explictly expand the tabs in your input string before calling 
-      <code>parseString</code>
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   Word('a').parseString('aaaaabaaa')  # -&gt; ['aaaaa']
-   Word('a').parseString('aaaaabaaa', parseAll=True)  # -&gt; Exception: Expected end of text
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="scanString"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">scanString</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">maxMatches</span>=<span class="sig-default">9223372036854775807</span>,
-        <span class="sig-arg">overlap</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.scanString">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Scan the input string for expression matches.  Each match will return 
-  the matching tokens, start location, and end location.  May be called 
-  with optional <code>maxMatches</code> argument, to clip scanning after 
-  'n' matches are found.  If <code>overlap</code> is specified, then 
-  overlapping matches will be reported.</p>
-  <p>Note that the start and end locations are reported relative to the 
-  string being parsed.  See <a 
-  href="pyparsing.ParserElement-class.html#parseString" 
-  class="link"><i>parseString</i></a> for more information on parsing 
-  strings with embedded tabs.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   source = &quot;sldjf123lsdjjkf345sldkjf879lkjsfd987&quot;
-   print(source)
-   for tokens,start,end in Word(alphas).scanString(source):
-       print(' '*start + '^'*(end-start))
-       print(' '*start + tokens[0])
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   sldjf123lsdjjkf345sldkjf879lkjsfd987
-   ^^^^^
-   sldjf
-           ^^^^^^^
-           lsdjjkf
-                     ^^^^^^
-                     sldkjf
-                              ^^^^^^
-                              lkjsfd
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="transformString"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">transformString</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.transformString">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Extension to <code><a 
-  href="pyparsing.ParserElement-class.html#scanString" 
-  class="link">scanString</a></code>, to modify matching text with modified
-  tokens that may be returned from a parse action.  To use 
-  <code>transformString</code>, define a grammar and attach a parse action 
-  to it that modifies the returned token list. Invoking 
-  <code>transformString()</code> on a target string will then scan for 
-  matches, and replace the matched text patterns according to the logic in 
-  the parse action.  <code>transformString()</code> returns the resulting 
-  transformed string.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas)
-   wd.setParseAction(lambda toks: toks[0].title())
-
-   print(wd.transformString(&quot;now is the winter of our discontent made glorious summer by this sun of york.&quot;))
-</pre>
-  <p>Prints:</p>
-<pre class="literalblock">
-   Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York.
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="searchString"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">searchString</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">maxMatches</span>=<span class="sig-default">9223372036854775807</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.searchString">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Another extension to <code><a 
-  href="pyparsing.ParserElement-class.html#scanString" 
-  class="link">scanString</a></code>, simplifying the access to the tokens 
-  found to match the given parse expression.  May be called with optional 
-  <code>maxMatches</code> argument, to clip searching after 'n' matches are
-  found.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters
-   cap_word = Word(alphas.upper(), alphas.lower())
-
-   print(cap_word.searchString(&quot;More than Iron, more than Lead, more than Gold I need Electricity&quot;))
-
-   # the sum() builtin can be used to merge results into a single ParseResults object
-   print(sum(cap_word.searchString(&quot;More than Iron, more than Lead, more than Gold I need Electricity&quot;)))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']]
-   ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="split"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">split</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">maxsplit</span>=<span class="sig-default">9223372036854775807</span>,
-        <span class="sig-arg">includeSeparators</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.split">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Generator method to split a string using the given expression as a 
-  separator. May be called with optional <code>maxsplit</code> argument, to
-  limit the number of splits; and the optional 
-  <code>includeSeparators</code> argument (default=<code>False</code>), if 
-  the separating matching text should be included in the split results.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   punc = oneOf(list(&quot;.,;:/-!?&quot;))
-   print(list(punc.split(&quot;This, this?, this sentence, is badly punctuated!&quot;)))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['This', ' this', '', ' this sentence', ' is badly punctuated', '']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__add__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__add__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-    <br /><em class="fname">(Addition operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__add__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Implementation of + operator - returns <code><a 
-  href="pyparsing.And-class.html" class="link">And</a></code>. Adding 
-  strings to a ParserElement converts them to <a 
-  href="pyparsing.Literal-class.html" class="link" 
-  onclick="show_private();">Literal</a>s by default.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   greet = Word(alphas) + &quot;,&quot; + Word(alphas) + &quot;!&quot;
-   hello = &quot;Hello, World!&quot;
-   print (hello, &quot;-&gt;&quot;, greet.parseString(hello))
-</pre>
-  <p>Prints:</p>
-<pre class="literalblock">
-   Hello, World! -&gt; ['Hello', ',', 'World', '!']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__mul__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__mul__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__mul__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Implementation of * operator, allows use of <code>expr * 3</code> in 
-  place of <code>expr + expr + expr</code>.  Expressions may also me 
-  multiplied by a 2-integer tuple, similar to <code>{min,max}</code> 
-  multipliers in regular expressions.  Tuples may also include 
-  <code>None</code> as in:</p>
-  <ul>
-    <li>
-      <code>expr*(n,None)</code> or <code>expr*(n,)</code> is equivalent to
-      <code>expr*n + <a href="pyparsing.ZeroOrMore-class.html" 
-      class="link">ZeroOrMore</a>(expr)</code> (read as &quot;at least n 
-      instances of <code>expr</code>&quot;)
-    </li>
-    <li>
-      <code>expr*(None,n)</code> is equivalent to <code>expr*(0,n)</code> 
-      (read as &quot;0 to n instances of <code>expr</code>&quot;)
-    </li>
-    <li>
-      <code>expr*(None,None)</code> is equivalent to <code><a 
-      href="pyparsing.ZeroOrMore-class.html" 
-      class="link">ZeroOrMore</a>(expr)</code>
-    </li>
-    <li>
-      <code>expr*(1,None)</code> is equivalent to <code><a 
-      href="pyparsing.OneOrMore-class.html" 
-      class="link">OneOrMore</a>(expr)</code>
-    </li>
-  </ul>
-  <p>Note that <code>expr*(None,n)</code> does not raise an exception if 
-  more than n exprs exist in the input stream; that is, 
-  <code>expr*(None,n)</code> does not enforce a maximum number of expr 
-  occurrences.  If this behavior is desired, then write <code>expr*(None,n)
-  + ~expr</code></p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__call__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__call__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Call operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__call__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Shortcut for <code><a 
-  href="pyparsing.ParserElement-class.html#setResultsName" 
-  class="link">setResultsName</a></code>, with 
-  <code>listAllMatches=False</code>.</p>
-  <p>If <code>name</code> is given with a trailing <code>'*'</code> 
-  character, then <code>listAllMatches</code> will be passed as 
-  <code>True</code>.</p>
-  <p>If <code>name</code> is omitted, same as calling <code><a 
-  href="pyparsing.ParserElement-class.html#copy" 
-  class="link">copy</a></code>.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # these are equivalent
-   userdata = Word(alphas).setResultsName(&quot;name&quot;) + Word(nums+&quot;-&quot;).setResultsName(&quot;socsecno&quot;)
-   userdata = Word(alphas)(&quot;name&quot;) + Word(nums+&quot;-&quot;)(&quot;socsecno&quot;)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="leaveWhitespace"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">leaveWhitespace</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.leaveWhitespace">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Disables the skipping of whitespace before matching the characters in 
-  the <code>ParserElement</code>'s defined pattern.  This is normally only 
-  used internally by the pyparsing module, but may be needed in some 
-  whitespace-sensitive grammars.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseWithTabs"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseWithTabs</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseWithTabs">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Overrides default behavior to expand <code>&lt;TAB&gt;</code>s to 
-  spaces before parsing the input string. Must be called before 
-  <code>parseString</code> when the input grammar contains elements that 
-  match <code>&lt;TAB&gt;</code> characters.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="ignore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">ignore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.ignore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Define expression to be ignored (e.g., comments) while doing pattern 
-  matching; may be called repeatedly, to define multiple comment or other 
-  ignorable patterns.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   patt = OneOrMore(Word(alphas))
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj']
-
-   patt.ignore(cStyleComment)
-   patt.parseString('ablaj /* comment */ lskjd') # -&gt; ['ablaj', 'lskjd']
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setDebug"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setDebug</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">flag</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.setDebug">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Enable display of debugging messages while doing pattern matching. Set
-  <code>flag</code> to True to enable, False to disable.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   wd = Word(alphas).setName(&quot;alphaword&quot;)
-   integer = Word(nums).setName(&quot;numword&quot;)
-   term = wd | integer
-
-   # turn on debugging for wd
-   wd.setDebug()
-
-   OneOrMore(term).parseString(&quot;abc 123 xyz 890&quot;)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   Match alphaword at loc 0(1,1)
-   Matched alphaword -&gt; ['abc']
-   Match alphaword at loc 3(1,4)
-   Exception raised:Expected alphaword (at char 4), (line:1, col:5)
-   Match alphaword at loc 7(1,8)
-   Matched alphaword -&gt; ['xyz']
-   Match alphaword at loc 11(1,12)
-   Exception raised:Expected alphaword (at char 12), (line:1, col:13)
-   Match alphaword at loc 15(1,16)
-   Exception raised:Expected alphaword (at char 15), (line:1, col:16)
-</pre>
-  <p>The output shown is that produced by the default debug actions - 
-  custom debug actions can be specified using <a 
-  href="pyparsing.ParserElement-class.html#setDebugActions" 
-  class="link">setDebugActions</a>. Prior to attempting to match the 
-  <code>wd</code> expression, the debugging message <code>&quot;Match 
-  &lt;exprname&gt; at loc &lt;n&gt;(&lt;line&gt;,&lt;col&gt;)&quot;</code> 
-  is shown. Then if the parse succeeds, a <code>&quot;Matched&quot;</code> 
-  message is shown, or an <code>&quot;Exception raised&quot;</code> message
-  is shown. Also note the use of <a 
-  href="pyparsing.ParserElement-class.html#setName" 
-  class="link">setName</a> to assign a human-readable name to the 
-  expression, which makes debugging and exception messages easier to 
-  understand - for instance, the default name created for the 
-  <code>Word</code> expression without calling <code>setName</code> is 
-  <code>&quot;W:(ABCD...)&quot;</code>.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__repr__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseFile"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseFile</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">file_or_filename</span>,
-        <span class="sig-arg">parseAll</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.parseFile">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Execute the parse expression on the given file or filename. If a 
-  filename is specified (instead of a file object), the entire file is 
-  opened, read, and closed before parsing.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="__hash__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Hashing function)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.__hash__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>hash(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__hash__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="matches"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">matches</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">testString</span>,
-        <span class="sig-arg">parseAll</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.matches">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Method for quick testing of a parser against a test string. Good for 
-  simple inline microtests of sub expressions while building up larger 
-  parser.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      testString - to test against this expression for a match
-    </li>
-    <li>
-      parseAll - (default=<code>True</code>) - flag to pass to <code><a 
-      href="pyparsing.ParserElement-class.html#parseString" 
-      class="link">parseString</a></code> when running tests
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   expr = Word(nums)
-   assert expr.matches(&quot;100&quot;)
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="runTests"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">runTests</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">tests</span>,
-        <span class="sig-arg">parseAll</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">comment</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">#</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">fullDump</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">printResults</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">failureTests</span>=<span class="sig-default">False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ParserElement.runTests">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Execute the parse expression on a series of test strings, showing each
-  test, the parsed results or where the parse failed. Quick and easy way to
-  run a parse expression against a list of sample strings.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      tests - a list of separate test strings, or a multiline string of 
-      test strings
-    </li>
-    <li>
-      parseAll - (default=<code>True</code>) - flag to pass to <code><a 
-      href="pyparsing.ParserElement-class.html#parseString" 
-      class="link">parseString</a></code> when running tests
-    </li>
-    <li>
-      comment - (default=<code>'#'</code>) - expression for indicating 
-      embedded comments in the test string; pass None to disable comment 
-      filtering
-    </li>
-    <li>
-      fullDump - (default=<code>True</code>) - dump results as list 
-      followed by results names in nested outline; if False, only dump 
-      nested list
-    </li>
-    <li>
-      printResults - (default=<code>True</code>) prints test output to 
-      stdout
-    </li>
-    <li>
-      failureTests - (default=<code>False</code>) indicates if these tests 
-      are expected to fail parsing
-    </li>
-  </ul>
-  <p>Returns: a (success, results) tuple, where success indicates that all 
-  tests succeeded (or failed if <code>failureTests</code> is True), and the
-  results contain a list of lines of each test's output</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   number_expr = pyparsing_common.number.copy()
-
-   result = number_expr.runTests('''
-       # unsigned integer
-       100
-       # negative integer
-       -100
-       # float with scientific notation
-       6.02e23
-       # integer with scientific notation
-       1e-12
-       ''')
-   print(&quot;Success&quot; if result[0] else &quot;Failed!&quot;)
-
-   result = number_expr.runTests('''
-       # stray character
-       100Z
-       # missing leading digit before '.'
-       -.100
-       # too many '.'
-       3.14.159
-       ''', failureTests=True)
-   print(&quot;Success&quot; if result[0] else &quot;Failed!&quot;)
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   # unsigned integer
-   100
-   [100]
-
-   # negative integer
-   -100
-   [-100]
-
-   # float with scientific notation
-   6.02e23
-   [6.02e+23]
-
-   # integer with scientific notation
-   1e-12
-   [1e-12]
-
-   Success
-
-   # stray character
-   100Z
-      ^
-   FAIL: Expected end of text (at char 3), (line:1, col:4)
-
-   # missing leading digit before '.'
-   -.100
-   ^
-   FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1)
-
-   # too many '.'
-   3.14.159
-       ^
-   FAIL: Expected end of text (at char 4), (line:1, col:5)
-
-   Success
-</pre>
-  <p>Each test string must be on a single line. If you want to test a 
-  string that spans multiple lines, create a test like this:</p>
-<pre class="literalblock">
-   expr.runTest(r&quot;this is a test\n of strings that spans \n 3 lines&quot;)
-</pre>
-  <p>(Note that this is a raw string literal, you must include the leading 
-  'r'.)</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.PrecededBy-class.html b/htmldoc/pyparsing.PrecededBy-class.html
deleted file mode 100644 (file)
index 1f9920a..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.PrecededBy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;PrecededBy
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class PrecededBy</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#PrecededBy">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">PrecededBy</strong>
-</pre>
-
-<hr />
-<p>Lookbehind matching of the given parse expression.  
-  <code>PrecededBy</code> does not advance the parsing position within the 
-  input string, it only verifies that the specified parse expression 
-  matches prior to the current position.  <code>PrecededBy</code> always 
-  returns a null token list, but if a results name is defined on the given 
-  expression, it is returned.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      expr - expression that must match prior to the current parse location
-    </li>
-    <li>
-      retreat - (default=<code>None</code>) - (int) maximum number of 
-      characters to lookbehind prior to the current parse location
-    </li>
-  </ul>
-  <p>If the lookbehind expression is a string, Literal, Keyword, or a Word 
-  or CharsNotIn with a specified exact or maximum length, then the retreat 
-  parameter is not required. Otherwise, retreat must be specified to give a
-  maximum number of characters to look back from the current parse position
-  for a lookbehind match.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # VB-style variable names with type prefixes
-   int_var = PrecededBy(&quot;#&quot;) + pyparsing_common.identifier
-   str_var = PrecededBy(&quot;$&quot;) + pyparsing_common.identifier
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.PrecededBy-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">retreat</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#PrecededBy.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.PrecededBy-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#PrecededBy.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">retreat</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#PrecededBy.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#PrecededBy.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.QuotedString-class.html b/htmldoc/pyparsing.QuotedString-class.html
deleted file mode 100644 (file)
index 8e90760..0000000
+++ /dev/null
@@ -1,452 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.QuotedString</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;QuotedString
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class QuotedString</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#QuotedString">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">QuotedString</strong>
-</pre>
-
-<hr />
-<p>Token for matching strings that are delimited by quoting 
-  characters.</p>
-  <p>Defined with the following parameters:</p>
-  <ul>
-    <li>
-      quoteChar - string of one or more characters defining the quote 
-      delimiting string
-    </li>
-    <li>
-      escChar - character to escape quotes, typically backslash 
-      (default=<code>None</code>)
-    </li>
-    <li>
-      escQuote - special quote sequence to escape an embedded quote string 
-      (such as SQL's &quot;&quot; to escape an embedded &quot;) 
-      (default=<code>None</code>)
-    </li>
-    <li>
-      multiline - boolean indicating whether quotes can span multiple lines
-      (default=<code>False</code>)
-    </li>
-    <li>
-      unquoteResults - boolean indicating whether the matched text should 
-      be unquoted (default=<code>True</code>)
-    </li>
-    <li>
-      endQuoteChar - string of one or more characters defining the end of 
-      the quote delimited string (default=<code>None</code> =&gt; same as 
-      quoteChar)
-    </li>
-    <li>
-      convertWhitespaceEscapes - convert escaped whitespace 
-      (<code>'\t'</code>, <code>'\n'</code>, etc.) to actual whitespace 
-      (default=<code>True</code>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   qs = QuotedString('&quot;')
-   print(qs.searchString('lsjdf &quot;This is the quote&quot; sldjf'))
-   complex_qs = QuotedString('{{', endQuoteChar='}}')
-   print(complex_qs.searchString('lsjdf {{This is the &quot;quote&quot;}} sldjf'))
-   sql_qs = QuotedString('&quot;', escQuote='&quot;&quot;')
-   print(sql_qs.searchString('lsjdf &quot;This is the quote with &quot;&quot;embedded&quot;&quot; quotes&quot; sldjf'))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [['This is the quote']]
-   [['This is the &quot;quote&quot;']]
-   [['This is the quote with &quot;embedded&quot; quotes']]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.QuotedString-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">quoteChar</span>,
-        <span class="summary-sig-arg">escChar</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">escQuote</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">multiline</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">unquoteResults</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">endQuoteChar</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">convertWhitespaceEscapes</span>=<span class="summary-sig-default">True</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.QuotedString-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.QuotedString-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">quoteChar</span>,
-        <span class="sig-arg">escChar</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">escQuote</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">multiline</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">unquoteResults</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">endQuoteChar</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">convertWhitespaceEscapes</span>=<span class="sig-default">True</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#QuotedString.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.RecursiveGrammarException-class.html b/htmldoc/pyparsing.RecursiveGrammarException-class.html
deleted file mode 100644 (file)
index a5e8e10..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.RecursiveGrammarException</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;RecursiveGrammarException
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class RecursiveGrammarException</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#RecursiveGrammarException">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-              object --+        
-                       |        
-exceptions.BaseException --+    
-                           |    
-        exceptions.Exception --+
-                               |
-                              <strong class="uidshort">RecursiveGrammarException</strong>
-</pre>
-
-<hr />
-<p>exception thrown by <a 
-  href="pyparsing.ParserElement-class.html#validate" 
-  class="link">ParserElement.validate</a> if the grammar could be 
-  improperly recursive</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.RecursiveGrammarException-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parseElementList</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#RecursiveGrammarException.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.RecursiveGrammarException-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#RecursiveGrammarException.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
-      <code>__new__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parseElementList</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#RecursiveGrammarException.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#RecursiveGrammarException.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Regex-class.html b/htmldoc/pyparsing.Regex-class.html
deleted file mode 100644 (file)
index 1d49ddd..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Regex</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Regex
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Regex</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Regex">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">Regex</strong>
-</pre>
-
-<hr />
-<p>Token for matching strings that match a given regular expression. 
-  Defined with string specifying the regular expression in a form 
-  recognized by the inbuilt Python re module. If the given regex contains 
-  named groups (defined using <code>(?P&lt;name&gt;...)</code>), these will
-  be preserved as named parse results.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   realnum = Regex(r&quot;[+-]?\d+\.\d*&quot;)
-   date = Regex(r'(?P&lt;year&gt;\d{4})-(?P&lt;month&gt;\d\d?)-(?P&lt;day&gt;\d\d?)')
-   # ref: http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression
-   roman = Regex(r&quot;M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})&quot;)
-
-   make_html = Regex(r&quot;(\w+):(.*?):&quot;).sub(r&quot;&lt;\1&gt;\2&lt;/\1&gt;&quot;)
-   print(make_html.transformString(&quot;h1:main title:&quot;))
-   # prints &quot;&lt;h1&gt;main title&lt;/h1&gt;&quot;
-</pre>
-
-<!-- ==================== NESTED CLASSES ==================== -->
-<a name="section-NestedClasses"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Nested Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.Regex.compiledREtype-class.html" class="summary-name">compiledREtype</a><br />
-      Compiled regular expression objects
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">pattern</span>,
-        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">asGroupList</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">asMatch</span>=<span class="summary-sig-default">False</span>)</span><br />
-      The parameters <code>pattern</code> and <code>flags</code> are passed
-      to the <code>re.compile()</code> function as-is.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Regex.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Regex.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Regex.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="sub"></a><span class="summary-sig-name">sub</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">repl</span>)</span><br />
-      Return Regex with an attached parse action to transform the parsed 
-      result as if called using <code>re.sub(expr, repl, string)</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Regex.sub">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">pattern</span>,
-        <span class="sig-arg">flags</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">asGroupList</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">asMatch</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Regex.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>The parameters <code>pattern</code> and <code>flags</code> are passed 
-  to the <code>re.compile()</code> function as-is. See the Python 
-  <code>re</code> module for an explanation of the acceptable patterns and 
-  flags.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Regex.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Regex.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Regex.compiledREtype-class.html b/htmldoc/pyparsing.Regex.compiledREtype-class.html
deleted file mode 100644 (file)
index bb29385..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Regex.compiledREtype</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.Regex-class.html">Class&nbsp;Regex</a> ::
-        Class&nbsp;compiledREtype
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class compiledREtype</h1><p class="nomargin-top"></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">pyparsing.Regex.compiledREtype</strong>
-</pre>
-
-<hr />
-<p>Compiled regular expression objects</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__copy__"></a><span class="summary-sig-name">__copy__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__deepcopy__"></a><span class="summary-sig-name">__deepcopy__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex.compiledREtype-class.html#findall" class="summary-sig-name">findall</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      findall(string[, pos[, endpos]]) --&gt; list.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex.compiledREtype-class.html#finditer" class="summary-sig-name">finditer</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      finditer(string[, pos[, endpos]]) --&gt; iterator.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex.compiledREtype-class.html#match" class="summary-sig-name">match</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      match(string[, pos[, endpos]]) --&gt; match object or None.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="scanner"></a><span class="summary-sig-name">scanner</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex.compiledREtype-class.html#search" class="summary-sig-name">search</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      search(string[, pos[, endpos]]) --&gt; match object or None.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Regex.compiledREtype-class.html#split" class="summary-sig-name">split</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      split(string[, maxsplit = 0])  --&gt; list.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="sub"></a><span class="summary-sig-name">sub</span>(<span class="summary-sig-arg">...</span>)</span><br />
-      sub(repl, string[, count = 0]) --&gt; newstring Return the string 
-      obtained by replacing the leftmost non-overlapping occurrences of 
-      pattern in string by the replacement repl.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="subn"></a><span class="summary-sig-name">subn</span>(<span class="summary-sig-arg">repl</span>,
-        <span class="summary-sig-arg">string</span>,
-        <span class="summary-sig-arg">count</span>=<span class="summary-sig-default">... = 0) --&gt; (newstring</span>,
-        <span class="summary-sig-arg">number of subs</span>)</span><br />
-      Return the tuple (new_string, number_of_subs_made) found by replacing
-      the leftmost non-overlapping occurrences of pattern with the 
-      replacement repl.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="flags"></a><span class="summary-name">flags</span>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="groupindex"></a><span class="summary-name">groupindex</span>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="groups"></a><span class="summary-name">groups</span>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="pattern"></a><span class="summary-name">pattern</span>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="findall"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">findall</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>findall(string[, pos[, endpos]]) --&gt; list. Return a list of all 
-  non-overlapping matches of pattern in string.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="finditer"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">finditer</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>finditer(string[, pos[, endpos]]) --&gt; iterator. Return an iterator 
-  over all non-overlapping matches for the RE pattern in string. For each 
-  match, the iterator returns a match object.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="match"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">match</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>match(string[, pos[, endpos]]) --&gt; match object or None. Matches 
-  zero or more characters at the beginning of the string</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="search"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">search</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>search(string[, pos[, endpos]]) --&gt; match object or None. Scan 
-  through string looking for a match, and return a corresponding match 
-  object instance. Return None if no position in the string matches.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="split"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">split</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>split(string[, maxsplit = 0])  --&gt; list. Split string by the 
-  occurrences of pattern.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.SkipTo-class.html b/htmldoc/pyparsing.SkipTo-class.html
deleted file mode 100644 (file)
index 61e54ff..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.SkipTo</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;SkipTo
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class SkipTo</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#SkipTo">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">SkipTo</strong>
-</pre>
-
-<hr />
-<p>Token for skipping over all undefined text until the matched 
-  expression is found.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      expr - target expression marking the end of the data to be skipped
-    </li>
-    <li>
-      include - (default=<code>False</code>) if True, the target expression
-      is also parsed (the skipped text and target expression are returned 
-      as a 2-element list).
-    </li>
-    <li>
-      ignore - (default=<code>None</code>) used to define grammars 
-      (typically quoted strings and comments) that might contain false 
-      matches to the target expression
-    </li>
-    <li>
-      failOn - (default=<code>None</code>) define expressions that are not 
-      allowed to be included in the skipped test; if found before the 
-      target expression is found, the SkipTo is not a match
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   report = '''
-       Outstanding Issues Report - 1 Jan 2000
-
-          # | Severity | Description                               |  Days Open
-       -----+----------+-------------------------------------------+-----------
-        101 | Critical | Intermittent system crash                 |          6
-         94 | Cosmetic | Spelling error on Login ('log|n')         |         14
-         79 | Minor    | System slow when running too many reports |         47
-       '''
-   integer = Word(nums)
-   SEP = Suppress('|')
-   # use SkipTo to simply match everything up until the next SEP
-   # - ignore quoted strings, so that a '|' character inside a quoted string does not match
-   # - parse action will call token.strip() for each matched token, i.e., the description body
-   string_data = SkipTo(SEP, ignore=quotedString)
-   string_data.setParseAction(tokenMap(str.strip))
-   ticket_expr = (integer(&quot;issue_num&quot;) + SEP
-                 + string_data(&quot;sev&quot;) + SEP
-                 + string_data(&quot;desc&quot;) + SEP
-                 + integer(&quot;days_open&quot;))
-
-   for tkt in ticket_expr.searchString(report):
-       print tkt.dump()
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['101', 'Critical', 'Intermittent system crash', '6']
-   - days_open: 6
-   - desc: Intermittent system crash
-   - issue_num: 101
-   - sev: Critical
-   ['94', 'Cosmetic', &quot;Spelling error on Login ('log|n')&quot;, '14']
-   - days_open: 14
-   - desc: Spelling error on Login ('log|n')
-   - issue_num: 94
-   - sev: Cosmetic
-   ['79', 'Minor', 'System slow when running too many reports', '47']
-   - days_open: 47
-   - desc: System slow when running too many reports
-   - issue_num: 79
-   - sev: Minor
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.SkipTo-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">other</span>,
-        <span class="summary-sig-arg">include</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">ignore</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">failOn</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#SkipTo.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.SkipTo-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#SkipTo.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">other</span>,
-        <span class="sig-arg">include</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">ignore</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">failOn</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#SkipTo.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#SkipTo.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.StringEnd-class.html b/htmldoc/pyparsing.StringEnd-class.html
deleted file mode 100644 (file)
index aaef2af..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.StringEnd</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;StringEnd
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class StringEnd</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#StringEnd">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">StringEnd</strong>
-</pre>
-
-<hr />
-<p>Matches if current position is at the end of the parse string</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.StringEnd-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#StringEnd.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.StringEnd-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#StringEnd.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#StringEnd.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#StringEnd.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.StringStart-class.html b/htmldoc/pyparsing.StringStart-class.html
deleted file mode 100644 (file)
index 9a8a638..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.StringStart</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;StringStart
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class StringStart</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#StringStart">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">StringStart</strong>
-</pre>
-
-<hr />
-<p>Matches if current position is at the beginning of the parse 
-  string</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.StringStart-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#StringStart.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.StringStart-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#StringStart.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#StringStart.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#StringStart.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Suppress-class.html b/htmldoc/pyparsing.Suppress-class.html
deleted file mode 100644 (file)
index dc7bcbd..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Suppress</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Suppress
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Suppress</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Suppress">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         <a href="pyparsing.TokenConverter-class.html">TokenConverter</a> --+
-                          |
-                         <strong class="uidshort">Suppress</strong>
-</pre>
-
-<hr />
-<p>Converter for ignoring the results of a parsed expression.</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   source = &quot;a, b, c,d&quot;
-   wd = Word(alphas)
-   wd_list1 = wd + ZeroOrMore(',' + wd)
-   print(wd_list1.parseString(source))
-
-   # often, delimiters that are useful during parsing are just in the
-   # way afterward - use Suppress to keep them out of the parsed output
-   wd_list2 = wd + ZeroOrMore(Suppress(',') + wd)
-   print(wd_list2.parseString(source))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   ['a', ',', 'b', ',', 'c', ',', 'd']
-   ['a', 'b', 'c', 'd']
-</pre>
-  <p>(See also <a href="pyparsing-module.html#delimitedList" 
-  class="link">delimitedList</a>.)</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Suppress-class.html#postParse" class="summary-sig-name">postParse</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">tokenlist</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Suppress.postParse">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Suppress-class.html#suppress" class="summary-sig-name">suppress</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Suppresses the output of this <code>ParserElement</code>; useful to 
-      keep punctuation from cluttering up returned output.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Suppress.suppress">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.TokenConverter-class.html">TokenConverter</a></code></b>:
-      <code><a href="pyparsing.TokenConverter-class.html#__init__">__init__</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="postParse"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">postParse</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">tokenlist</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Suppress.postParse">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#postParse">ParserElement.postParse</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="suppress"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">suppress</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Suppress.suppress">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Suppresses the output of this <code>ParserElement</code>; useful to 
-  keep punctuation from cluttering up returned output.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#suppress">ParserElement.suppress</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Token-class.html b/htmldoc/pyparsing.Token-class.html
deleted file mode 100644 (file)
index 6730330..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Token</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Token
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Token</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Token">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+    
-            |    
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+
-                |
-               <strong class="uidshort">Token</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li class="private"><a href="pyparsing.Literal-class.html" onclick="show_private();">Literal</a></li><li>, <a href="pyparsing.Empty-class.html">Empty</a></li><li>, <a href="pyparsing.Keyword-class.html">Keyword</a></li><li>, <a href="pyparsing.Word-class.html">Word</a></li><li>, <a href="pyparsing.CharsNotIn-class.html">CharsNotIn</a></li><li>, <a href="pyparsing.CloseMatch-class.html">CloseMatch</a></li><li class="private">, _PositionToken</li><li>, <a href="pyparsing.NoMatch-class.html">NoMatch</a></li><li>, <a href="pyparsing.QuotedString-class.html">QuotedString</a></li><li>, <a href="pyparsing.Regex-class.html">Regex</a></li><li>, <a href="pyparsing.White-class.html">White</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Abstract <code>ParserElement</code> subclass, for defining atomic 
-  matching patterns.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Token-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Token.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Token.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.TokenConverter-class.html b/htmldoc/pyparsing.TokenConverter-class.html
deleted file mode 100644 (file)
index 5dc1065..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.TokenConverter</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;TokenConverter
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class TokenConverter</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#TokenConverter">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+        
-              |        
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                  |    
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+
-                      |
-                     <strong class="uidshort">TokenConverter</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.Combine-class.html">Combine</a></li><li>, <a href="pyparsing.Dict-class.html">Dict</a></li><li>, <a href="pyparsing.Group-class.html">Group</a></li><li>, <a href="pyparsing.Suppress-class.html">Suppress</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Abstract subclass of <code>ParseExpression</code>, for converting 
-  parsed results.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.TokenConverter-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">savelist</span>=<span class="summary-sig-default">False</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#TokenConverter.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#parseImpl">parseImpl</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">savelist</span>=<span class="sig-default">False</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#TokenConverter.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.White-class.html b/htmldoc/pyparsing.White-class.html
deleted file mode 100644 (file)
index 0416653..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.White</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;White
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class White</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#White">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">White</strong>
-</pre>
-
-<hr />
-<p>Special matching class for matching whitespace.  Normally, whitespace 
-  is ignored by pyparsing grammars.  This class is included when some 
-  whitespace structures are significant.  Define with a string containing 
-  the whitespace characters to be matched; default is <code>&quot; 
-  \t\r\n&quot;</code>.  Also takes optional <code>min</code>, 
-  <code>max</code>, and <code>exact</code> arguments, as defined for the 
-  <code><a href="pyparsing.Word-class.html" class="link">Word</a></code> 
-  class.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.White-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">ws</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"> \t\r\n</code><code class="variable-quote">'</code></span>,
-        <span class="summary-sig-arg">min</span>=<span class="summary-sig-default">1</span>,
-        <span class="summary-sig-arg">max</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">exact</span>=<span class="summary-sig-default">0</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#White.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.White-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#White.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.White-class.html#whiteStrs" class="summary-name">whiteStrs</a> = <code title="{'\t': '&lt;TAB&gt;',
- '''
-''': '&lt;LF&gt;',
- '\x0c': '&lt;FF&gt;',
- '\r': '&lt;CR&gt;',
- ' ': '&lt;SPC&gt;'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">\t</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;TAB&gt;</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;LF&gt;</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;FF&gt;</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">ws</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"> \t\r\n</code><code class="variable-quote">'</code></span>,
-        <span class="sig-arg">min</span>=<span class="sig-default">1</span>,
-        <span class="sig-arg">max</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">exact</span>=<span class="sig-default">0</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#White.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#White.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
-<a name="section-ClassVariableDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variable Details</span></td>
-</tr>
-</table>
-<a name="whiteStrs"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">whiteStrs</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">\t</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;TAB&gt;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'''</code><code class="variable-string"></code>
-<code class="variable-string"></code><code class="variable-quote">'''</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;LF&gt;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;FF&gt;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;CR&gt;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string"> </code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&lt;SPC&gt;</code><code class="variable-quote">'</code><code class="variable-group">}</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.Word-class.html b/htmldoc/pyparsing.Word-class.html
deleted file mode 100644 (file)
index c27fa65..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.Word</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;Word
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Word</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#Word">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+        
-            |        
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+    
-                |    
-            <a href="pyparsing.Token-class.html">Token</a> --+
-                    |
-                   <strong class="uidshort">Word</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.Char-class.html">Char</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Token for matching words composed of allowed character sets. Defined 
-  with string containing all allowed initial characters, an optional string
-  containing allowed body characters (if omitted, defaults to the initial 
-  character set), and an optional minimum, maximum, and/or exact length.  
-  The default value for <code>min</code> is 1 (a minimum value &lt; 1 is 
-  not valid); the default values for <code>max</code> and 
-  <code>exact</code> are 0, meaning no maximum or exact length restriction.
-  An optional <code>excludeChars</code> parameter can list characters that 
-  might be found in the input <code>bodyChars</code> string; useful to 
-  define a word of all printables except for one or two characters, for 
-  instance.</p>
-  <p><a href="pyparsing-module.html#srange" class="link">srange</a> is 
-  useful for defining custom character set strings for defining 
-  <code>Word</code> expressions, using range notation from regular 
-  expression character sets.</p>
-  <p>A common mistake is to use <code>Word</code> to match a specific 
-  literal string, as in <code>Word(&quot;Address&quot;)</code>. Remember 
-  that <code>Word</code> uses the string argument to define <i>sets</i> of 
-  matchable characters. This expression would match &quot;Add&quot;, 
-  &quot;AAA&quot;, &quot;dAred&quot;, or any other word made up of the 
-  characters 'A', 'd', 'r', 'e', and 's'. To match an exact literal string,
-  use <a href="pyparsing.Literal-class.html" class="link" 
-  onclick="show_private();">Literal</a> or <a 
-  href="pyparsing.Keyword-class.html" class="link">Keyword</a>.</p>
-  <p>pyparsing includes helper strings for building Words:</p>
-  <ul>
-    <li>
-      <a href="pyparsing-module.html#alphas" class="link">alphas</a>
-    </li>
-    <li>
-      <a href="pyparsing-module.html#nums" class="link">nums</a>
-    </li>
-    <li>
-      <a href="pyparsing-module.html#alphanums" class="link">alphanums</a>
-    </li>
-    <li>
-      <a href="pyparsing-module.html#hexnums" class="link">hexnums</a>
-    </li>
-    <li>
-      <a href="pyparsing-module.html#alphas8bit" 
-      class="link">alphas8bit</a> (alphabetic characters in ASCII range 
-      128-255 - accented, tilded, umlauted, etc.)
-    </li>
-    <li>
-      <a href="pyparsing-module.html#punc8bit" class="link">punc8bit</a> 
-      (non-alphabetic characters in ASCII range 128-255 - currency, 
-      symbols, superscripts, diacriticals, etc.)
-    </li>
-    <li>
-      <a href="pyparsing-module.html#printables" 
-      class="link">printables</a> (any non-whitespace character)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   # a word composed of digits
-   integer = Word(nums) # equivalent to Word(&quot;0123456789&quot;) or Word(srange(&quot;0-9&quot;))
-
-   # a word with a leading capital, and zero or more lowercase
-   capital_word = Word(alphas.upper(), alphas.lower())
-
-   # hostnames are alphanumeric, with leading alpha, and '-'
-   hostname = Word(alphas, alphanums+'-')
-
-   # roman numeral (not a strict parser, accepts invalid mix of characters)
-   roman = Word(&quot;IVXLCDM&quot;)
-
-   # any string of non-whitespace characters, except for ','
-   csv_value = Word(printables, excludeChars=&quot;,&quot;)
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Word-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">initChars</span>,
-        <span class="summary-sig-arg">bodyChars</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">min</span>=<span class="summary-sig-default">1</span>,
-        <span class="summary-sig-arg">max</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">exact</span>=<span class="summary-sig-default">0</span>,
-        <span class="summary-sig-arg">asKeyword</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">excludeChars</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Word.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Word-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Word.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.Word-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#Word.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="__slotnames__"></a><span class="summary-name">__slotnames__</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">initChars</span>,
-        <span class="sig-arg">bodyChars</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">min</span>=<span class="sig-default">1</span>,
-        <span class="sig-arg">max</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">exact</span>=<span class="sig-default">0</span>,
-        <span class="sig-arg">asKeyword</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">excludeChars</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Word.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Word.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#Word.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.WordEnd-class.html b/htmldoc/pyparsing.WordEnd-class.html
deleted file mode 100644 (file)
index fd4f6fb..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.WordEnd</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;WordEnd
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class WordEnd</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#WordEnd">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">WordEnd</strong>
-</pre>
-
-<hr />
-<p>Matches if the current position is at the end of a Word, and is not 
-  followed by any character in a given set of <code>wordChars</code> 
-  (default=<code>printables</code>). To emulate the <code>\b</code> behavior
-  of regular expressions, use <code>WordEnd(alphanums)</code>. 
-  <code>WordEnd</code> will also match at the end of the string being 
-  parsed, or at the end of a line.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.WordEnd-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">wordChars</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY</code><code class="variable-ellipsis">...</code></span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#WordEnd.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.WordEnd-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#WordEnd.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">wordChars</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY</code><code class="variable-ellipsis">...</code></span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#WordEnd.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#WordEnd.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.WordStart-class.html b/htmldoc/pyparsing.WordStart-class.html
deleted file mode 100644 (file)
index 592afca..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.WordStart</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;WordStart
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class WordStart</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#WordStart">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-   object --+            
-            |            
-<a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                |        
-            <a href="pyparsing.Token-class.html">Token</a> --+    
-                    |    
-       _PositionToken --+
-                        |
-                       <strong class="uidshort">WordStart</strong>
-</pre>
-
-<hr />
-<p>Matches if the current position is at the beginning of a Word, and is 
-  not preceded by any character in a given set of <code>wordChars</code> 
-  (default=<code>printables</code>). To emulate the <code>\b</code> behavior
-  of regular expressions, use <code>WordStart(alphanums)</code>. 
-  <code>WordStart</code> will also match at the beginning of the string 
-  being parsed, or at the beginning of a line.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.WordStart-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">wordChars</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY</code><code class="variable-ellipsis">...</code></span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#WordStart.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.WordStart-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#WordStart.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__str__">__str__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">wordChars</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY</code><code class="variable-ellipsis">...</code></span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#WordStart.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#WordStart.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.ZeroOrMore-class.html b/htmldoc/pyparsing.ZeroOrMore-class.html
deleted file mode 100644 (file)
index b36437e..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.ZeroOrMore</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;ZeroOrMore
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ZeroOrMore</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-     object --+            
-              |            
-  <a href="pyparsing.ParserElement-class.html">ParserElement</a> --+        
-                  |        
-<a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a> --+    
-                      |    
-         _MultipleMatch --+
-                          |
-                         <strong class="uidshort">ZeroOrMore</strong>
-</pre>
-
-<hr />
-<p>Optional repetition of zero or more of the given expression.</p>
-  <p>Parameters:</p>
-  <ul>
-    <li>
-      expr - expression that must match zero or more times
-    </li>
-    <li>
-      stopOn - (default=<code>None</code>) - expression for a terminating 
-      sentinel (only required if the sentinel would ordinarily match the 
-      repetition expression)
-    </li>
-  </ul>
-  <p>Example: similar to <a href="pyparsing.OneOrMore-class.html" 
-  class="link">OneOrMore</a></p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ZeroOrMore-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">expr</span>,
-        <span class="summary-sig-arg">stopOn</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.__init__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ZeroOrMore-class.html#parseImpl" class="summary-sig-name">parseImpl</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">instring</span>,
-        <span class="summary-sig-arg">loc</span>,
-        <span class="summary-sig-arg">doActions</span>=<span class="summary-sig-default">True</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.parseImpl">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.ZeroOrMore-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      str(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.__str__">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</a></code></b>:
-      <code><a href="pyparsing.ParseElementEnhance-class.html#checkRecursion">checkRecursion</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#ignore">ignore</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#leaveWhitespace">leaveWhitespace</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#streamline">streamline</a></code>,
-      <code><a href="pyparsing.ParseElementEnhance-class.html#validate">validate</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#__add__">__add__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__and__">__and__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__call__">__call__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__eq__">__eq__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__hash__">__hash__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__invert__">__invert__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__mul__">__mul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ne__">__ne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__or__">__or__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__radd__">__radd__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rand__">__rand__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__repr__">__repr__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__req__">__req__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rmul__">__rmul__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rne__">__rne__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__ror__">__ror__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rsub__">__rsub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__rxor__">__rxor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__sub__">__sub__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#__xor__">__xor__</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addCondition">addCondition</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#addParseAction">addParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#canParseNext">canParseNext</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#copy">copy</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#matches">matches</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseFile">parseFile</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseString">parseString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#parseWithTabs">parseWithTabs</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#postParse">postParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#preParse">preParse</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#runTests">runTests</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#scanString">scanString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#searchString">searchString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setBreak">setBreak</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebug">setDebug</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setName">setName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setParseAction">setParseAction</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setResultsName">setResultsName</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setWhitespaceChars">setWhitespaceChars</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#split">split</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#suppress">suppress</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#transformString">transformString</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#tryParse">tryParse</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#enablePackrat">enablePackrat</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#inlineLiteralsUsing">inlineLiteralsUsing</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#resetCache">resetCache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.ParserElement-class.html">ParserElement</a></code></b>:
-      <code><a href="pyparsing.ParserElement-class.html#DEFAULT_WHITE_CHARS">DEFAULT_WHITE_CHARS</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache">packrat_cache</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_lock">packrat_cache_lock</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#packrat_cache_stats">packrat_cache_stats</a></code>,
-      <code><a href="pyparsing.ParserElement-class.html#verbose_stacktrace">verbose_stacktrace</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">expr</span>,
-        <span class="sig-arg">stopOn</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.__init__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="parseImpl"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">parseImpl</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">instring</span>,
-        <span class="sig-arg">loc</span>,
-        <span class="sig-arg">doActions</span>=<span class="sig-default">True</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.parseImpl">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="pyparsing.ParserElement-class.html#parseImpl">ParserElement.parseImpl</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__str__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
-    <br /><em class="fname">(Informal representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#ZeroOrMore.__str__">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>str(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__str__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_common-class.html b/htmldoc/pyparsing.pyparsing_common-class.html
deleted file mode 100644 (file)
index ad6fcbe..0000000
+++ /dev/null
@@ -1,749 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_common</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;pyparsing_common
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class pyparsing_common</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common">source&nbsp;code</a></span></p>
-<p>Here are some common low-level expressions that may be useful in 
-  jump-starting parser development:</p>
-  <ul>
-    <li>
-      numeric forms (<a 
-      href="pyparsing.pyparsing_common-class.html#integer" 
-      class="link">integers</a>, <a 
-      href="pyparsing.pyparsing_common-class.html#real" 
-      class="link">reals</a>, <a 
-      href="pyparsing.pyparsing_common-class.html#sci_real" 
-      class="link">scientific notation</a>)
-    </li>
-    <li>
-      common <a href="pyparsing.pyparsing_common-class.html#identifier" 
-      class="link">programming identifiers</a>
-    </li>
-    <li>
-      network addresses (<a 
-      href="pyparsing.pyparsing_common-class.html#mac_address" 
-      class="link">MAC</a>, <a 
-      href="pyparsing.pyparsing_common-class.html#ipv4_address" 
-      class="link">IPv4</a>, <a 
-      href="pyparsing.pyparsing_common-class.html#ipv6_address" 
-      class="link">IPv6</a>)
-    </li>
-    <li>
-      ISO8601 <a href="pyparsing.pyparsing_common-class.html#iso8601_date" 
-      class="link">dates</a> and <a 
-      href="pyparsing.pyparsing_common-class.html#iso8601_datetime" 
-      class="link">datetime</a>
-    </li>
-    <li>
-      <a href="pyparsing.pyparsing_common-class.html#uuid" 
-      class="link">UUID</a>
-    </li>
-    <li>
-      <a href="pyparsing.pyparsing_common-class.html#comma_separated_list" 
-      class="link">comma-separated list</a>
-    </li>
-  </ul>
-  <p>Parse actions:</p>
-  <ul>
-    <li>
-      <code><a 
-      href="pyparsing.pyparsing_common-class.html#convertToInteger" 
-      class="link">convertToInteger</a></code>
-    </li>
-    <li>
-      <code><a href="pyparsing.pyparsing_common-class.html#convertToFloat" 
-      class="link">convertToFloat</a></code>
-    </li>
-    <li>
-      <code><a href="pyparsing.pyparsing_common-class.html#convertToDate" 
-      class="link">convertToDate</a></code>
-    </li>
-    <li>
-      <code><a 
-      href="pyparsing.pyparsing_common-class.html#convertToDatetime" 
-      class="link">convertToDatetime</a></code>
-    </li>
-    <li>
-      <code><a href="pyparsing.pyparsing_common-class.html#stripHTMLTags" 
-      class="link">stripHTMLTags</a></code>
-    </li>
-    <li>
-      <code><a href="pyparsing.pyparsing_common-class.html#upcaseTokens" 
-      class="link">upcaseTokens</a></code>
-    </li>
-    <li>
-      <code><a href="pyparsing.pyparsing_common-class.html#downcaseTokens" 
-      class="link">downcaseTokens</a></code>
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   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
-       ''')
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   # 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')]
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="convertToInteger"></a><span class="summary-sig-name">convertToInteger</span>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Parse action for converting parsed integers to Python int</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToInteger">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="convertToFloat"></a><span class="summary-sig-name">convertToFloat</span>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Parse action for converting parsed numbers to Python float</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToFloat">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== STATIC METHODS ==================== -->
-<a name="section-StaticMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Static Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.pyparsing_common-class.html#convertToDate" class="summary-sig-name">convertToDate</a>(<span class="summary-sig-arg">fmt</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">%Y-%m-%d</code><code class="variable-quote">'</code></span>)</span><br />
-      Helper to create a parse action for converting parsed date string to 
-      Python datetime.date</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToDate">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.pyparsing_common-class.html#convertToDatetime" class="summary-sig-name">convertToDatetime</a>(<span class="summary-sig-arg">fmt</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">%Y-%m-%dT%H:%M:%S.%f</code><code class="variable-quote">'</code></span>)</span><br />
-      Helper to create a parse action for converting parsed datetime string
-      to Python datetime.datetime</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToDatetime">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.pyparsing_common-class.html#stripHTMLTags" class="summary-sig-name">stripHTMLTags</a>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">tokens</span>)</span><br />
-      Parse action to remove HTML tags from web page HTML source</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.stripHTMLTags">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="upcaseTokens"></a><span class="summary-sig-name">upcaseTokens</span>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Parse action to convert tokens to upper case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.upcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="downcaseTokens"></a><span class="summary-sig-name">downcaseTokens</span>(<span class="summary-sig-arg">s</span>,
-        <span class="summary-sig-arg">l</span>,
-        <span class="summary-sig-arg">t</span>)</span><br />
-      Parse action to convert tokens to lower case.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.downcaseTokens">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="integer"></a><span class="summary-name">integer</span> = <code title="integer">integer</code><br />
-      expression that parses an unsigned integer, returns an int
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="hex_integer"></a><span class="summary-name">hex_integer</span> = <code title="hex integer">hex integer</code><br />
-      expression that parses a hexadecimal integer, returns an int
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="signed_integer"></a><span class="summary-name">signed_integer</span> = <code title="signed integer">signed integer</code><br />
-      expression that parses an integer with optional leading sign, returns
-      an int
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="fraction"></a><span class="summary-name">fraction</span> = <code title="fraction">fraction</code><br />
-      fractional expression of an integer divided by an integer, returns a 
-      float
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="mixed_integer"></a><span class="summary-name">mixed_integer</span> = <code title="fraction or mixed integer-fraction">fraction or mixed integer-fraction</code><br />
-      mixed integer of the form 'integer - fraction', with optional leading
-      integer, returns float
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="real"></a><span class="summary-name">real</span> = <code title="real number">real number</code><br />
-      expression that parses a floating point number and returns a float
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="sci_real"></a><span class="summary-name">sci_real</span> = <code title="real number with scientific notation">real number with scientific notation</code><br />
-      expression that parses a floating point number with optional 
-      scientific notation and returns a float
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_common-class.html#number" class="summary-name">number</a> = <code title="{real number with scientific notation | real number | signed integer}">{real number with scientific notation | real number |<code class="variable-ellipsis">...</code></code><br />
-      any numeric expression, returns the corresponding Python type
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="fnumber"></a><span class="summary-name">fnumber</span> = <code title="fnumber">fnumber</code><br />
-      any int or real number, returned as float
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="identifier"></a><span class="summary-name">identifier</span> = <code title="identifier">identifier</code><br />
-      typical code identifier (leading alpha or '_', followed by 0 or more 
-      alphas, nums, or '_')
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="ipv4_address"></a><span class="summary-name">ipv4_address</span> = <code title="IPv4 address">IPv4 address</code><br />
-      IPv4 address (<code>0.0.0.0 - 255.255.255.255</code>)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="ipv6_address"></a><span class="summary-name">ipv6_address</span> = <code title="IPv6 address">IPv6 address</code><br />
-      IPv6 address (long, short, or mixed form)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="mac_address"></a><span class="summary-name">mac_address</span> = <code title="MAC address">MAC address</code><br />
-      MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="iso8601_date"></a><span class="summary-name">iso8601_date</span> = <code title="ISO8601 date">ISO8601 date</code><br />
-      ISO8601 date (<code>yyyy-mm-dd</code>)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="iso8601_datetime"></a><span class="summary-name">iso8601_datetime</span> = <code title="ISO8601 datetime">ISO8601 datetime</code><br />
-      ISO8601 datetime (<code>yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)</code>) - 
-      trailing seconds, milliseconds, and timezone optional; accepts 
-      separating <code>'T'</code> or <code>' '</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="uuid"></a><span class="summary-name">uuid</span> = <code title="UUID">UUID</code><br />
-      UUID (<code>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</code>)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a name="comma_separated_list"></a><span class="summary-name">comma_separated_list</span> = <code title="comma separated list">comma separated list</code><br />
-      Predefined expression of 1 or more printable words or quoted strings,
-      separated by commas.
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="convertToDate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">convertToDate</span>(<span class="sig-arg">fmt</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">%Y-%m-%d</code><code class="variable-quote">'</code></span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToDate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to create a parse action for converting parsed date string to 
-  Python datetime.date</p>
-  <p>Params -</p>
-  <ul>
-    <li>
-      fmt - format to be passed to datetime.strptime 
-      (default=<code>&quot;%Y-%m-%d&quot;</code>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   date_expr = pyparsing_common.iso8601_date.copy()
-   date_expr.setParseAction(pyparsing_common.convertToDate())
-   print(date_expr.parseString(&quot;1999-12-31&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [datetime.date(1999, 12, 31)]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="convertToDatetime"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">convertToDatetime</span>(<span class="sig-arg">fmt</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">%Y-%m-%dT%H:%M:%S.%f</code><code class="variable-quote">'</code></span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.convertToDatetime">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Helper to create a parse action for converting parsed datetime string 
-  to Python datetime.datetime</p>
-  <p>Params -</p>
-  <ul>
-    <li>
-      fmt - format to be passed to datetime.strptime 
-      (default=<code>&quot;%Y-%m-%dT%H:%M:%S.%f&quot;</code>)
-    </li>
-  </ul>
-  <p>Example:</p>
-<pre class="literalblock">
-   dt_expr = pyparsing_common.iso8601_datetime.copy()
-   dt_expr.setParseAction(pyparsing_common.convertToDatetime())
-   print(dt_expr.parseString(&quot;1999-12-31T23:59:59.999&quot;))
-</pre>
-  <p>prints:</p>
-<pre class="literalblock">
-   [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)]
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="stripHTMLTags"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">stripHTMLTags</span>(<span class="sig-arg">s</span>,
-        <span class="sig-arg">l</span>,
-        <span class="sig-arg">tokens</span>)</span>
-    <br /><em class="fname">Static Method</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_common.stripHTMLTags">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <p>Parse action to remove HTML tags from web page HTML source</p>
-  <p>Example:</p>
-<pre class="literalblock">
-   # strip HTML links from normal text
-   text = '&lt;td&gt;More info at the &lt;a href=&quot;http://pyparsing.wikispaces.com&quot;&gt;pyparsing&lt;/a&gt; wiki page&lt;/td&gt;'
-   td,td_end = makeHTMLTags(&quot;TD&quot;)
-   table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)(&quot;body&quot;) + td_end
-
-   print(table_text.parseString(text).body) # -&gt; 'More info at the pyparsing wiki page'
-</pre>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
-<a name="section-ClassVariableDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variable Details</span></td>
-</tr>
-</table>
-<a name="number"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">number</h3>
-  <p>any numeric expression, returns the corresponding Python type</p>
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-{real number with scientific notation | real number | signed integer}
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode-class.html b/htmldoc/pyparsing.pyparsing_unicode-class.html
deleted file mode 100644 (file)
index fe93022..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;pyparsing_unicode
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class pyparsing_unicode</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode</strong>
-</pre>
-
-<hr />
-<!-- ==================== NESTED CLASSES ==================== -->
-<a name="section-NestedClasses"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Nested Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Latin1-class.html" class="summary-name">Latin1</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Greek-class.html" class="summary-name">Greek</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Cyrillic-class.html" class="summary-name">Cyrillic</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Chinese-class.html" class="summary-name">Chinese</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Japanese-class.html" class="summary-name">Japanese</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Korean-class.html" class="summary-name">Korean</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.CJK-class.html" class="summary-name">CJK</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Thai-class.html" class="summary-name">Thai</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Arabic-class.html" class="summary-name">Arabic</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Hebrew-class.html" class="summary-name">Hebrew</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Devanagari-class.html" class="summary-name">Devanagari</a>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Arabic-class.html b/htmldoc/pyparsing.pyparsing_unicode.Arabic-class.html
deleted file mode 100644 (file)
index c6dd29d..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Arabic</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Arabic
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Arabic</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Arabic">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Arabic</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.CJK-class.html b/htmldoc/pyparsing.pyparsing_unicode.CJK-class.html
deleted file mode 100644 (file)
index 7142757..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.CJK</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;CJK
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CJK</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.CJK">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.CJK</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Chinese-class.html b/htmldoc/pyparsing.pyparsing_unicode.Chinese-class.html
deleted file mode 100644 (file)
index 20bcf7c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Chinese</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Chinese
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Chinese</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Chinese">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Chinese</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Cyrillic-class.html b/htmldoc/pyparsing.pyparsing_unicode.Cyrillic-class.html
deleted file mode 100644 (file)
index d12a09f..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Cyrillic</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Cyrillic
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Cyrillic</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Cyrillic">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Cyrillic</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Devanagari-class.html b/htmldoc/pyparsing.pyparsing_unicode.Devanagari-class.html
deleted file mode 100644 (file)
index 3717d57..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Devanagari</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Devanagari
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Devanagari</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Devanagari">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Devanagari</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Greek-class.html b/htmldoc/pyparsing.pyparsing_unicode.Greek-class.html
deleted file mode 100644 (file)
index b58be6f..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Greek</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Greek
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Greek</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Greek">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Greek</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Hebrew-class.html b/htmldoc/pyparsing.pyparsing_unicode.Hebrew-class.html
deleted file mode 100644 (file)
index 5b46fc8..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Hebrew</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Hebrew
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Hebrew</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Hebrew">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Hebrew</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Japanese-class.html b/htmldoc/pyparsing.pyparsing_unicode.Japanese-class.html
deleted file mode 100644 (file)
index fb5009d..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Japanese</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Japanese
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Japanese</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Japanese">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Japanese</strong>
-</pre>
-
-<hr />
-<!-- ==================== NESTED CLASSES ==================== -->
-<a name="section-NestedClasses"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Nested Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html" class="summary-name">Kanji</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html" class="summary-name">Hiragana</a>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html" class="summary-name">Katakana</a>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html b/htmldoc/pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html
deleted file mode 100644 (file)
index aa62565..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Japanese.Hiragana</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        <a href="pyparsing.pyparsing_unicode.Japanese-class.html">Class&nbsp;Japanese</a> ::
-        Class&nbsp;Hiragana
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Hiragana</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Japanese.Hiragana">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Japanese.Hiragana</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Japanese.Kanji-class.html b/htmldoc/pyparsing.pyparsing_unicode.Japanese.Kanji-class.html
deleted file mode 100644 (file)
index 86c26cd..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Japanese.Kanji</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        <a href="pyparsing.pyparsing_unicode.Japanese-class.html">Class&nbsp;Japanese</a> ::
-        Class&nbsp;Kanji
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Kanji</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Japanese.Kanji">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Japanese.Kanji</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Japanese.Katakana-class.html b/htmldoc/pyparsing.pyparsing_unicode.Japanese.Katakana-class.html
deleted file mode 100644 (file)
index c10ae6a..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Japanese.Katakana</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        <a href="pyparsing.pyparsing_unicode.Japanese-class.html">Class&nbsp;Japanese</a> ::
-        Class&nbsp;Katakana
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Katakana</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Japanese.Katakana">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Japanese.Katakana</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Korean-class.html b/htmldoc/pyparsing.pyparsing_unicode.Korean-class.html
deleted file mode 100644 (file)
index 17e7d2c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Korean</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Korean
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Korean</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Korean">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Korean</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Latin1-class.html b/htmldoc/pyparsing.pyparsing_unicode.Latin1-class.html
deleted file mode 100644 (file)
index c0c0109..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Latin1</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Latin1
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Latin1</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Latin1">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Latin1</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.pyparsing_unicode.Thai-class.html b/htmldoc/pyparsing.pyparsing_unicode.Thai-class.html
deleted file mode 100644 (file)
index ca5e0e8..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.pyparsing_unicode.Thai</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        <a href="pyparsing.pyparsing_unicode-class.html">Class&nbsp;pyparsing_unicode</a> ::
-        Class&nbsp;Thai
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Thai</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#pyparsing_unicode.Thai">source&nbsp;code</a></span></p>
-<pre class="base-tree">
-<a href="pyparsing.unicode_set-class.html">unicode_set</a> --+
-              |
-             <strong class="uidshort">pyparsing_unicode.Thai</strong>
-</pre>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="pyparsing.unicode_set-class.html">unicode_set</a></code></b>:
-      <code><a href="pyparsing.unicode_set-class.html#alphanums">alphanums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#alphas">alphas</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#nums">nums</a></code>,
-      <code><a href="pyparsing.unicode_set-class.html#printables">printables</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/pyparsing.unicode_set-class.html b/htmldoc/pyparsing.unicode_set-class.html
deleted file mode 100644 (file)
index 464d07a..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>pyparsing.unicode_set</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="pyparsing-module.html">Module&nbsp;pyparsing</a> ::
-        Class&nbsp;unicode_set
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class unicode_set</h1><p class="nomargin-top"><span class="codelink"><a href="pyparsing-pysrc.html#unicode_set">source&nbsp;code</a></span></p>
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="pyparsing.pyparsing_unicode-class.html">pyparsing_unicode</a></li><li>, <a href="pyparsing.pyparsing_unicode.CJK-class.html">pyparsing_unicode.CJK</a></li><li>, <a href="pyparsing.pyparsing_unicode.Latin1-class.html">pyparsing_unicode.Latin1</a></li><li>, <a href="pyparsing.pyparsing_unicode.Chinese-class.html">pyparsing_unicode.Chinese</a></li><li>, <a href="pyparsing.pyparsing_unicode.Cyrillic-class.html">pyparsing_unicode.Cyrillic</a></li><li>, <a href="pyparsing.pyparsing_unicode.Japanese-class.html">pyparsing_unicode.Japanese</a></li><li>, <a href="pyparsing.pyparsing_unicode.Japanese.Kanji-class.html">pyparsing_unicode.Japanese.Kanji</a></li><li>, <a href="pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html">pyparsing_unicode.Japanese.Hiragana</a></li><li>, <a href="pyparsing.pyparsing_unicode.Japanese.Katakana-class.html">pyparsing_unicode.Japanese.Katakana</a></li><li>, <a href="pyparsing.pyparsing_unicode.Greek-class.html">pyparsing_unicode.Greek</a></li><li>, <a href="pyparsing.pyparsing_unicode.Hebrew-class.html">pyparsing_unicode.Hebrew</a></li><li>, <a href="pyparsing.pyparsing_unicode.Devanagari-class.html">pyparsing_unicode.Devanagari</a></li><li>, <a href="pyparsing.pyparsing_unicode.Arabic-class.html">pyparsing_unicode.Arabic</a></li><li>, <a href="pyparsing.pyparsing_unicode.Korean-class.html">pyparsing_unicode.Korean</a></li><li>, <a href="pyparsing.pyparsing_unicode.Thai-class.html">pyparsing_unicode.Thai</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.unicode_set-class.html#printables" class="summary-sig-name">printables</a>(<span class="summary-sig-arg">cls</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.printables">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.unicode_set-class.html#alphas" class="summary-sig-name">alphas</a>(<span class="summary-sig-arg">cls</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.alphas">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.unicode_set-class.html#nums" class="summary-sig-name">nums</a>(<span class="summary-sig-arg">cls</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.nums">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="pyparsing.unicode_set-class.html#alphanums" class="summary-sig-name">alphanums</a>(<span class="summary-sig-arg">cls</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.alphanums">source&nbsp;code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="printables"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">printables</span>(<span class="sig-arg">cls</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.printables">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Decorators:</dt>
-    <dd><ul class="nomargin-top">
-        <li><code>@_lazyclassproperty</code></li>
-    </ul></dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="alphas"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">alphas</span>(<span class="sig-arg">cls</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.alphas">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Decorators:</dt>
-    <dd><ul class="nomargin-top">
-        <li><code>@_lazyclassproperty</code></li>
-    </ul></dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="nums"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">nums</span>(<span class="sig-arg">cls</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.nums">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Decorators:</dt>
-    <dd><ul class="nomargin-top">
-        <li><code>@_lazyclassproperty</code></li>
-    </ul></dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="alphanums"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">alphanums</span>(<span class="sig-arg">cls</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="pyparsing-pysrc.html#unicode_set.alphanums">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Decorators:</dt>
-    <dd><ul class="nomargin-top">
-        <li><code>@_lazyclassproperty</code></li>
-    </ul></dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pyparsing-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >pyparsing</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Wed Oct 31 00:55:29 2018
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/htmldoc/redirect.html b/htmldoc/redirect.html
deleted file mode 100644 (file)
index 3d92ba0..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<html><head><title>Epydoc Redirect Page</title>
-<meta http-equiv="cache-control" content="no-cache" />
-<meta http-equiv="expires" content="0" />
-<meta http-equiv="pragma" content="no-cache" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-<body>
-<script type="text/javascript">
-<!--
-var pages = ["pyparsing.pyparsing_unicode.Japanese.Hiragana-c", "pyparsing.pyparsing_unicode.Japanese.Katakana-c", "pyparsing.pyparsing_unicode.Japanese.Kanji-c", "pyparsing.pyparsing_unicode.Devanagari-c", "pyparsing.pyparsing_unicode.Cyrillic-c", "pyparsing.pyparsing_unicode.Japanese-c", "pyparsing.RecursiveGrammarException-c", "pyparsing.pyparsing_unicode.Chinese-c", "pyparsing.pyparsing_unicode.Arabic-c", "pyparsing.pyparsing_unicode.Hebrew-c", "pyparsing.pyparsing_unicode.Korean-c", "pyparsing.pyparsing_unicode.Latin1-c", "pyparsing.pyparsing_unicode.Greek-c", "pyparsing.pyparsing_unicode.Thai-c", "pyparsing.pyparsing_unicode.CJK-c", "pyparsing.ParseSyntaxException-c", "pyparsing.Regex.compiledREtype-c", "pyparsing.ParseElementEnhance-c", "pyparsing.ParseFatalException-c", "pyparsing.ParseBaseException-c", "pyparsing.pyparsing_unicode-c", "pyparsing.pyparsing_common-c", "pyparsing.CaselessKeyword-c", "pyparsing.CaselessLiteral-c", "pyparsing.ParseExpression-c", "pyparsing.ParseException-c", "pyparsing.TokenConverter-c", "pyparsing.ParserElement-c", "pyparsing.ParseResults-c", "pyparsing.QuotedString-c", "pyparsing.StringStart-c", "pyparsing.unicode_set-c", "pyparsing.CharsNotIn-c", "pyparsing.CloseMatch-c", "pyparsing.FollowedBy-c", "pyparsing.GoToColumn-c", "pyparsing.MatchFirst-c", "pyparsing.PrecededBy-c", "pyparsing.ZeroOrMore-c", "pyparsing.LineStart-c", "pyparsing.OneOrMore-c", "pyparsing.StringEnd-c", "pyparsing.WordStart-c", "pyparsing.OnlyOnce-c", "pyparsing.Optional-c", "pyparsing.Suppress-c", "pyparsing.Combine-c", "pyparsing.Forward-c", "pyparsing.Keyword-c", "pyparsing.LineEnd-c", "pyparsing.Literal-c", "pyparsing.NoMatch-c", "pyparsing.WordEnd-c", "pyparsing.NotAny-c", "pyparsing.SkipTo-c", "pyparsing.Empty-c", "pyparsing.Group-c", "pyparsing.Regex-c", "pyparsing.Token-c", "pyparsing.White-c", "pyparsing.Char-c", "pyparsing.Dict-c", "pyparsing.Each-c", "pyparsing.Word-c", "pyparsing.And-c", "pyparsing.Or-c", "pyparsing-m"];
-var dottedName = get_anchor();
-if (dottedName) {
-    var target = redirect_url(dottedName);
-    if (target) window.location.replace(target);
-}
-// -->
-</script>
-
-<h3>Epydoc Auto-redirect page</h3>
-
-<p>When javascript is enabled, this page will redirect URLs of
-the form <tt>redirect.html#<i>dotted.name</i></tt> to the
-documentation for the object with the given fully-qualified
-dotted name.</p>
-<p><a id="message"> &nbsp; </a></p>
-
-<script type="text/javascript">
-<!--
-if (dottedName) {
-    var msg = document.getElementById("message");
-    msg.innerHTML = "No documentation found for <tt>"+
-                    dottedName+"</tt>";
-}
-// -->
-</script>
-
-</body>
-</html>
index aa8fd58d815f4735b38aa18118605aeea20d6e74..22a57cfca54862adc42d1f7f05b4268e3b6558ed 100644 (file)
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 1.1
 Name: pyparsing
-Version: 2.3.0
+Version: 2.3.1
 Summary: Python parsing module
 Home-page: https://github.com/pyparsing/pyparsing/
 Author: Paul McGuire
@@ -24,4 +24,3 @@ Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
-Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
index a16ede3408bd01e2f500b745dcce65ade29c3faa..d69df7962d142e638bce5a9fe870ddf31cfc0787 100644 (file)
@@ -1,14 +1,21 @@
 CHANGES
-CODE_OF_CONDUCT.md
-HowToUsePyparsing.html
 LICENSE
 MANIFEST.in
-README.md
+README.rst
 pyparsing.py
-pyparsingClassDiagram.JPG
-pyparsingClassDiagram.PNG
 setup.cfg
 setup.py
+simple_unit_tests.py
+unitTests.py
+docs/CODE_OF_CONDUCT.rst
+docs/HowToUsePyparsing.rst
+docs/Makefile
+docs/conf.py
+docs/index.rst
+docs/modules.rst
+docs/pyparsing.rst
+docs/_static/pyparsingClassDiagram.jpg
+docs/_static/pyparsingClassDiagram.png
 examples/0README.html
 examples/AcManForm.dfm
 examples/LAparser.py
@@ -29,6 +36,7 @@ examples/commasep.py
 examples/configParse.py
 examples/cpp_enum_parser.py
 examples/datetimeParseActions.py
+examples/decaf_parser.py
 examples/deltaTime.py
 examples/dfmparse.py
 examples/dhcpd_leases_parser.py
@@ -93,92 +101,21 @@ examples/simpleWiki.py
 examples/sparser.py
 examples/sql2dot.py
 examples/stackish.py
-examples/stateMachine2.py
 examples/test_bibparse.py
 examples/urlExtractor.py
 examples/urlExtractorNew.py
 examples/verilogParse.py
 examples/withAttribute.py
 examples/wordsToNum.py
-htmldoc/api-objects.txt
-htmldoc/class-tree.html
-htmldoc/crarr.png
-htmldoc/epydoc.css
-htmldoc/epydoc.js
-htmldoc/help.html
-htmldoc/identifier-index.html
-htmldoc/index.html
-htmldoc/module-tree.html
-htmldoc/pyparsing-module.html
-htmldoc/pyparsing-pysrc.html
-htmldoc/pyparsing.And-class.html
-htmldoc/pyparsing.CaselessKeyword-class.html
-htmldoc/pyparsing.CaselessLiteral-class.html
-htmldoc/pyparsing.Char-class.html
-htmldoc/pyparsing.CharsNotIn-class.html
-htmldoc/pyparsing.CloseMatch-class.html
-htmldoc/pyparsing.Combine-class.html
-htmldoc/pyparsing.Dict-class.html
-htmldoc/pyparsing.Each-class.html
-htmldoc/pyparsing.Empty-class.html
-htmldoc/pyparsing.FollowedBy-class.html
-htmldoc/pyparsing.Forward-class.html
-htmldoc/pyparsing.GoToColumn-class.html
-htmldoc/pyparsing.Group-class.html
-htmldoc/pyparsing.Keyword-class.html
-htmldoc/pyparsing.LineEnd-class.html
-htmldoc/pyparsing.LineStart-class.html
-htmldoc/pyparsing.Literal-class.html
-htmldoc/pyparsing.MatchFirst-class.html
-htmldoc/pyparsing.NoMatch-class.html
-htmldoc/pyparsing.NotAny-class.html
-htmldoc/pyparsing.OneOrMore-class.html
-htmldoc/pyparsing.OnlyOnce-class.html
-htmldoc/pyparsing.Optional-class.html
-htmldoc/pyparsing.Or-class.html
-htmldoc/pyparsing.ParseBaseException-class.html
-htmldoc/pyparsing.ParseElementEnhance-class.html
-htmldoc/pyparsing.ParseException-class.html
-htmldoc/pyparsing.ParseExpression-class.html
-htmldoc/pyparsing.ParseFatalException-class.html
-htmldoc/pyparsing.ParseResults-class.html
-htmldoc/pyparsing.ParseSyntaxException-class.html
-htmldoc/pyparsing.ParserElement-class.html
-htmldoc/pyparsing.PrecededBy-class.html
-htmldoc/pyparsing.QuotedString-class.html
-htmldoc/pyparsing.RecursiveGrammarException-class.html
-htmldoc/pyparsing.Regex-class.html
-htmldoc/pyparsing.Regex.compiledREtype-class.html
-htmldoc/pyparsing.SkipTo-class.html
-htmldoc/pyparsing.StringEnd-class.html
-htmldoc/pyparsing.StringStart-class.html
-htmldoc/pyparsing.Suppress-class.html
-htmldoc/pyparsing.Token-class.html
-htmldoc/pyparsing.TokenConverter-class.html
-htmldoc/pyparsing.White-class.html
-htmldoc/pyparsing.Word-class.html
-htmldoc/pyparsing.WordEnd-class.html
-htmldoc/pyparsing.WordStart-class.html
-htmldoc/pyparsing.ZeroOrMore-class.html
-htmldoc/pyparsing.pyparsing_common-class.html
-htmldoc/pyparsing.pyparsing_unicode-class.html
-htmldoc/pyparsing.pyparsing_unicode.Arabic-class.html
-htmldoc/pyparsing.pyparsing_unicode.CJK-class.html
-htmldoc/pyparsing.pyparsing_unicode.Chinese-class.html
-htmldoc/pyparsing.pyparsing_unicode.Cyrillic-class.html
-htmldoc/pyparsing.pyparsing_unicode.Devanagari-class.html
-htmldoc/pyparsing.pyparsing_unicode.Greek-class.html
-htmldoc/pyparsing.pyparsing_unicode.Hebrew-class.html
-htmldoc/pyparsing.pyparsing_unicode.Japanese-class.html
-htmldoc/pyparsing.pyparsing_unicode.Japanese.Hiragana-class.html
-htmldoc/pyparsing.pyparsing_unicode.Japanese.Kanji-class.html
-htmldoc/pyparsing.pyparsing_unicode.Japanese.Katakana-class.html
-htmldoc/pyparsing.pyparsing_unicode.Korean-class.html
-htmldoc/pyparsing.pyparsing_unicode.Latin1-class.html
-htmldoc/pyparsing.pyparsing_unicode.Thai-class.html
-htmldoc/pyparsing.unicode_set-class.html
-htmldoc/redirect.html
 pyparsing.egg-info/PKG-INFO
 pyparsing.egg-info/SOURCES.txt
 pyparsing.egg-info/dependency_links.txt
-pyparsing.egg-info/top_level.txt
\ No newline at end of file
+pyparsing.egg-info/top_level.txt
+test/__init__.py
+test/__init__.pyc
+test/jsonParserTests.py
+test/jsonParserTests.pyc
+test/karthik.ini
+test/parsefiletest_input_file.txt
+test/__pycache__/__init__.cpython-35.pyc
+test/__pycache__/jsonParserTests.cpython-35.pyc
\ No newline at end of file
index 5006e4ee92e1ad1252f944a4506acba6e2d89a0f..ab804d530adfe83b43f0f4f0c3d66ef5786b9d07 100644 (file)
-#-*- coding: utf-8 -*-\r
-# module pyparsing.py\r
-#\r
-# Copyright (c) 2003-2018  Paul T. McGuire\r
-#\r
-# Permission is hereby granted, free of charge, to any person obtaining\r
-# a copy of this software and associated documentation files (the\r
-# "Software"), to deal in the Software without restriction, including\r
-# without limitation the rights to use, copy, modify, merge, publish,\r
-# distribute, sublicense, and/or sell copies of the Software, and to\r
-# permit persons to whom the Software is furnished to do so, subject to\r
-# the following conditions:\r
-#\r
-# The above copyright notice and this permission notice shall be\r
-# included in all copies or substantial portions of the Software.\r
-#\r
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-#\r
-\r
-__doc__ = \\r
-"""\r
-pyparsing module - Classes and methods to define and execute parsing grammars\r
-=============================================================================\r
-\r
-The pyparsing module is an alternative approach to creating and executing simple grammars,\r
-vs. the traditional lex/yacc approach, or the use of regular expressions.  With pyparsing, you\r
-don't need to learn a new syntax for defining grammars or matching expressions - the parsing module\r
-provides a library of classes that you use to construct the grammar directly in Python.\r
-\r
-Here is a program to parse "Hello, World!" (or any greeting of the form \r
-C{"<salutation>, <addressee>!"}), built up using L{Word}, L{Literal}, and L{And} elements \r
-(L{'+'<ParserElement.__add__>} operator gives L{And} expressions, strings are auto-converted to\r
-L{Literal} expressions)::\r
-\r
-    from pyparsing import Word, alphas\r
-\r
-    # define grammar of a greeting\r
-    greet = Word(alphas) + "," + Word(alphas) + "!"\r
-\r
-    hello = "Hello, World!"\r
-    print (hello, "->", greet.parseString(hello))\r
-\r
-The program outputs the following::\r
-\r
-    Hello, World! -> ['Hello', ',', 'World', '!']\r
-\r
-The Python representation of the grammar is quite readable, owing to the self-explanatory\r
-class names, and the use of '+', '|' and '^' operators.\r
-\r
-The L{ParseResults} object returned from L{ParserElement.parseString<ParserElement.parseString>} can be accessed as a nested list, a dictionary, or an\r
-object with named attributes.\r
-\r
-The pyparsing module handles some of the problems that are typically vexing when writing text parsers:\r
- - extra or missing whitespace (the above program will also handle "Hello,World!", "Hello  ,  World  !", etc.)\r
- - quoted strings\r
- - embedded comments\r
-\r
-\r
-Getting Started -\r
------------------\r
-Visit the classes L{ParserElement} and L{ParseResults} to see the base classes that most other pyparsing\r
-classes inherit from. Use the docstrings for examples of how to:\r
- - construct literal match expressions from L{Literal} and L{CaselessLiteral} classes\r
- - construct character word-group expressions using the L{Word} class\r
- - see how to create repetitive expressions using L{ZeroOrMore} and L{OneOrMore} classes\r
- - use L{'+'<And>}, L{'|'<MatchFirst>}, L{'^'<Or>}, and L{'&'<Each>} operators to combine simple expressions into more complex ones\r
- - associate names with your parsed results using L{ParserElement.setResultsName}\r
- - find some helpful expression short-cuts like L{delimitedList} and L{oneOf}\r
- - find more useful common expressions in the L{pyparsing_common} namespace class\r
-"""\r
-\r
-__version__ = "2.3.0"\r
-__versionTime__ = "28 Oct 2018 01:57 UTC"\r
-__author__ = "Paul McGuire <ptmcg@users.sourceforge.net>"\r
-\r
-import string\r
-from weakref import ref as wkref\r
-import copy\r
-import sys\r
-import warnings\r
-import re\r
-import sre_constants\r
-import collections\r
-import pprint\r
-import traceback\r
-import types\r
-from datetime import datetime\r
-try:\r
-    # Python 3\r
-    from itertools import filterfalse\r
-except ImportError:\r
-    from itertools import ifilterfalse as filterfalse\r
-\r
-try:\r
-    from _thread import RLock\r
-except ImportError:\r
-    from threading import RLock\r
-\r
-try:\r
-    # Python 3\r
-    from collections.abc import Iterable\r
-    from collections.abc import MutableMapping\r
-except ImportError:\r
-    # Python 2.7\r
-    from collections import Iterable\r
-    from collections import MutableMapping\r
-\r
-try:\r
-    from collections import OrderedDict as _OrderedDict\r
-except ImportError:\r
-    try:\r
-        from ordereddict import OrderedDict as _OrderedDict\r
-    except ImportError:\r
-        _OrderedDict = None\r
-\r
-try:\r
-    from types import SimpleNamespace\r
-except ImportError:\r
-    class SimpleNamespace: pass\r
-\r
-\r
-#~ sys.stderr.write( "testing pyparsing module, version %s, %s\n" % (__version__,__versionTime__ ) )\r
-\r
-__all__ = [\r
-'And', 'CaselessKeyword', 'CaselessLiteral', 'CharsNotIn', 'Combine', 'Dict', 'Each', 'Empty',\r
-'FollowedBy', 'Forward', 'GoToColumn', 'Group', 'Keyword', 'LineEnd', 'LineStart', 'Literal',\r
-'PrecededBy', 'MatchFirst', 'NoMatch', 'NotAny', 'OneOrMore', 'OnlyOnce', 'Optional', 'Or',\r
-'ParseBaseException', 'ParseElementEnhance', 'ParseException', 'ParseExpression', 'ParseFatalException',\r
-'ParseResults', 'ParseSyntaxException', 'ParserElement', 'QuotedString', 'RecursiveGrammarException',\r
-'Regex', 'SkipTo', 'StringEnd', 'StringStart', 'Suppress', 'Token', 'TokenConverter',\r
-'White', 'Word', 'WordEnd', 'WordStart', 'ZeroOrMore', 'Char',\r
-'alphanums', 'alphas', 'alphas8bit', 'anyCloseTag', 'anyOpenTag', 'cStyleComment', 'col',\r
-'commaSeparatedList', 'commonHTMLEntity', 'countedArray', 'cppStyleComment', 'dblQuotedString',\r
-'dblSlashComment', 'delimitedList', 'dictOf', 'downcaseTokens', 'empty', 'hexnums',\r
-'htmlComment', 'javaStyleComment', 'line', 'lineEnd', 'lineStart', 'lineno',\r
-'makeHTMLTags', 'makeXMLTags', 'matchOnlyAtCol', 'matchPreviousExpr', 'matchPreviousLiteral',\r
-'nestedExpr', 'nullDebugAction', 'nums', 'oneOf', 'opAssoc', 'operatorPrecedence', 'printables',\r
-'punc8bit', 'pythonStyleComment', 'quotedString', 'removeQuotes', 'replaceHTMLEntity',\r
-'replaceWith', 'restOfLine', 'sglQuotedString', 'srange', 'stringEnd',\r
-'stringStart', 'traceParseAction', 'unicodeString', 'upcaseTokens', 'withAttribute',\r
-'indentedBlock', 'originalTextFor', 'ungroup', 'infixNotation','locatedExpr', 'withClass',\r
-'CloseMatch', 'tokenMap', 'pyparsing_common', 'pyparsing_unicode', 'unicode_set',\r
-]\r
-\r
-system_version = tuple(sys.version_info)[:3]\r
-PY_3 = system_version[0] == 3\r
-if PY_3:\r
-    _MAX_INT = sys.maxsize\r
-    basestring = str\r
-    unichr = chr\r
-    unicode = str\r
-    _ustr = str\r
-\r
-    # build list of single arg builtins, that can be used as parse actions\r
-    singleArgBuiltins = [sum, len, sorted, reversed, list, tuple, set, any, all, min, max]\r
-\r
-else:\r
-    _MAX_INT = sys.maxint\r
-    range = xrange\r
-\r
-    def _ustr(obj):\r
-        """Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries\r
-           str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It\r
-           then < returns the unicode object | encodes it with the default encoding | ... >.\r
-        """\r
-        if isinstance(obj,unicode):\r
-            return obj\r
-\r
-        try:\r
-            # If this works, then _ustr(obj) has the same behaviour as str(obj), so\r
-            # it won't break any existing code.\r
-            return str(obj)\r
-\r
-        except UnicodeEncodeError:\r
-            # Else encode it\r
-            ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace')\r
-            xmlcharref = Regex(r'&#\d+;')\r
-            xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:])\r
-            return xmlcharref.transformString(ret)\r
-\r
-    # build list of single arg builtins, tolerant of Python version, that can be used as parse actions\r
-    singleArgBuiltins = []\r
-    import __builtin__\r
-    for fname in "sum len sorted reversed list tuple set any all min max".split():\r
-        try:\r
-            singleArgBuiltins.append(getattr(__builtin__,fname))\r
-        except AttributeError:\r
-            continue\r
-\r
-_generatorType = type((y for y in range(1)))\r
-\r
-def _xml_escape(data):\r
-    """Escape &, <, >, ", ', etc. in a string of data."""\r
-\r
-    # ampersand must be replaced first\r
-    from_symbols = '&><"\''\r
-    to_symbols = ('&'+s+';' for s in "amp gt lt quot apos".split())\r
-    for from_,to_ in zip(from_symbols, to_symbols):\r
-        data = data.replace(from_, to_)\r
-    return data\r
-\r
-alphas     = string.ascii_uppercase + string.ascii_lowercase\r
-nums       = "0123456789"\r
-hexnums    = nums + "ABCDEFabcdef"\r
-alphanums  = alphas + nums\r
-_bslash    = chr(92)\r
-printables = "".join(c for c in string.printable if c not in string.whitespace)\r
-\r
-class ParseBaseException(Exception):\r
-    """base exception class for all parsing runtime exceptions"""\r
-    # Performance tuning: we construct a *lot* of these, so keep this\r
-    # constructor as small and fast as possible\r
-    def __init__( self, pstr, loc=0, msg=None, elem=None ):\r
-        self.loc = loc\r
-        if msg is None:\r
-            self.msg = pstr\r
-            self.pstr = ""\r
-        else:\r
-            self.msg = msg\r
-            self.pstr = pstr\r
-        self.parserElement = elem\r
-        self.args = (pstr, loc, msg)\r
-\r
-    @classmethod\r
-    def _from_exception(cls, pe):\r
-        """\r
-        internal factory method to simplify creating one type of ParseException\r
-        from another - avoids having __init__ signature conflicts among subclasses\r
-        """\r
-        return cls(pe.pstr, pe.loc, pe.msg, pe.parserElement)\r
-\r
-    def __getattr__( self, aname ):\r
-        """supported attributes by name are:\r
-            - lineno - returns the line number of the exception text\r
-            - col - returns the column number of the exception text\r
-            - line - returns the line containing the exception text\r
-        """\r
-        if( aname == "lineno" ):\r
-            return lineno( self.loc, self.pstr )\r
-        elif( aname in ("col", "column") ):\r
-            return col( self.loc, self.pstr )\r
-        elif( aname == "line" ):\r
-            return line( self.loc, self.pstr )\r
-        else:\r
-            raise AttributeError(aname)\r
-\r
-    def __str__( self ):\r
-        return "%s (at char %d), (line:%d, col:%d)" % \\r
-                ( self.msg, self.loc, self.lineno, self.column )\r
-    def __repr__( self ):\r
-        return _ustr(self)\r
-    def markInputline( self, markerString = ">!<" ):\r
-        """Extracts the exception line from the input string, and marks\r
-           the location of the exception with a special symbol.\r
-        """\r
-        line_str = self.line\r
-        line_column = self.column - 1\r
-        if markerString:\r
-            line_str = "".join((line_str[:line_column],\r
-                                markerString, line_str[line_column:]))\r
-        return line_str.strip()\r
-    def __dir__(self):\r
-        return "lineno col line".split() + dir(type(self))\r
-\r
-class ParseException(ParseBaseException):\r
-    """\r
-    Exception thrown when parse expressions don't match class;\r
-    supported attributes by name are:\r
-     - lineno - returns the line number of the exception text\r
-     - col - returns the column number of the exception text\r
-     - line - returns the line containing the exception text\r
-\r
-    Example::\r
-        try:\r
-            Word(nums).setName("integer").parseString("ABC")\r
-        except ParseException as pe:\r
-            print(pe)\r
-            print("column: {}".format(pe.col))\r
-\r
-    prints::\r
-       Expected integer (at char 0), (line:1, col:1)\r
-        column: 1\r
-    """\r
-    pass\r
-\r
-class ParseFatalException(ParseBaseException):\r
-    """user-throwable exception thrown when inconsistent parse content\r
-       is found; stops all parsing immediately"""\r
-    pass\r
-\r
-class ParseSyntaxException(ParseFatalException):\r
-    """just like L{ParseFatalException}, but thrown internally when an\r
-       L{ErrorStop<And._ErrorStop>} ('-' operator) indicates that parsing is to stop\r
-       immediately because an unbacktrackable syntax error has been found"""\r
-    pass\r
-\r
-#~ class ReparseException(ParseBaseException):\r
-    #~ """Experimental class - parse actions can raise this exception to cause\r
-       #~ pyparsing to reparse the input string:\r
-        #~ - with a modified input string, and/or\r
-        #~ - with a modified start location\r
-       #~ Set the values of the ReparseException in the constructor, and raise the\r
-       #~ exception in a parse action to cause pyparsing to use the new string/location.\r
-       #~ Setting the values as None causes no change to be made.\r
-       #~ """\r
-    #~ def __init_( self, newstring, restartLoc ):\r
-        #~ self.newParseText = newstring\r
-        #~ self.reparseLoc = restartLoc\r
-\r
-class RecursiveGrammarException(Exception):\r
-    """exception thrown by L{ParserElement.validate} if the grammar could be improperly recursive"""\r
-    def __init__( self, parseElementList ):\r
-        self.parseElementTrace = parseElementList\r
-\r
-    def __str__( self ):\r
-        return "RecursiveGrammarException: %s" % self.parseElementTrace\r
-\r
-class _ParseResultsWithOffset(object):\r
-    def __init__(self,p1,p2):\r
-        self.tup = (p1,p2)\r
-    def __getitem__(self,i):\r
-        return self.tup[i]\r
-    def __repr__(self):\r
-        return repr(self.tup[0])\r
-    def setOffset(self,i):\r
-        self.tup = (self.tup[0],i)\r
-\r
-class ParseResults(object):\r
-    """\r
-    Structured parse results, to provide multiple means of access to the parsed data:\r
-       - as a list (C{len(results)})\r
-       - by list index (C{results[0], results[1]}, etc.)\r
-       - by attribute (C{results.<resultsName>} - see L{ParserElement.setResultsName})\r
-\r
-    Example::\r
-        integer = Word(nums)\r
-        date_str = (integer.setResultsName("year") + '/'\r
-                        + integer.setResultsName("month") + '/'\r
-                        + integer.setResultsName("day"))\r
-        # equivalent form:\r
-        # date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-        # parseString returns a ParseResults object\r
-        result = date_str.parseString("1999/12/31")\r
-\r
-        def test(s, fn=repr):\r
-            print("%s -> %s" % (s, fn(eval(s))))\r
-        test("list(result)")\r
-        test("result[0]")\r
-        test("result['month']")\r
-        test("result.day")\r
-        test("'month' in result")\r
-        test("'minutes' in result")\r
-        test("result.dump()", str)\r
-    prints::\r
-        list(result) -> ['1999', '/', '12', '/', '31']\r
-        result[0] -> '1999'\r
-        result['month'] -> '12'\r
-        result.day -> '31'\r
-        'month' in result -> True\r
-        'minutes' in result -> False\r
-        result.dump() -> ['1999', '/', '12', '/', '31']\r
-        - day: 31\r
-        - month: 12\r
-        - year: 1999\r
-    """\r
-    def __new__(cls, toklist=None, name=None, asList=True, modal=True ):\r
-        if isinstance(toklist, cls):\r
-            return toklist\r
-        retobj = object.__new__(cls)\r
-        retobj.__doinit = True\r
-        return retobj\r
-\r
-    # Performance tuning: we construct a *lot* of these, so keep this\r
-    # constructor as small and fast as possible\r
-    def __init__( self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance ):\r
-        if self.__doinit:\r
-            self.__doinit = False\r
-            self.__name = None\r
-            self.__parent = None\r
-            self.__accumNames = {}\r
-            self.__asList = asList\r
-            self.__modal = modal\r
-            if toklist is None:\r
-                toklist = []\r
-            if isinstance(toklist, list):\r
-                self.__toklist = toklist[:]\r
-            elif isinstance(toklist, _generatorType):\r
-                self.__toklist = list(toklist)\r
-            else:\r
-                self.__toklist = [toklist]\r
-            self.__tokdict = dict()\r
-\r
-        if name is not None and name:\r
-            if not modal:\r
-                self.__accumNames[name] = 0\r
-            if isinstance(name,int):\r
-                name = _ustr(name) # will always return a str, but use _ustr for consistency\r
-            self.__name = name\r
-            if not (isinstance(toklist, (type(None), basestring, list)) and toklist in (None,'',[])):\r
-                if isinstance(toklist,basestring):\r
-                    toklist = [ toklist ]\r
-                if asList:\r
-                    if isinstance(toklist,ParseResults):\r
-                        self[name] = _ParseResultsWithOffset(ParseResults(toklist.__toklist), 0)\r
-                    else:\r
-                        self[name] = _ParseResultsWithOffset(ParseResults(toklist[0]),0)\r
-                    self[name].__name = name\r
-                else:\r
-                    try:\r
-                        self[name] = toklist[0]\r
-                    except (KeyError,TypeError,IndexError):\r
-                        self[name] = toklist\r
-\r
-    def __getitem__( self, i ):\r
-        if isinstance( i, (int,slice) ):\r
-            return self.__toklist[i]\r
-        else:\r
-            if i not in self.__accumNames:\r
-                return self.__tokdict[i][-1][0]\r
-            else:\r
-                return ParseResults([ v[0] for v in self.__tokdict[i] ])\r
-\r
-    def __setitem__( self, k, v, isinstance=isinstance ):\r
-        if isinstance(v,_ParseResultsWithOffset):\r
-            self.__tokdict[k] = self.__tokdict.get(k,list()) + [v]\r
-            sub = v[0]\r
-        elif isinstance(k,(int,slice)):\r
-            self.__toklist[k] = v\r
-            sub = v\r
-        else:\r
-            self.__tokdict[k] = self.__tokdict.get(k,list()) + [_ParseResultsWithOffset(v,0)]\r
-            sub = v\r
-        if isinstance(sub,ParseResults):\r
-            sub.__parent = wkref(self)\r
-\r
-    def __delitem__( self, i ):\r
-        if isinstance(i,(int,slice)):\r
-            mylen = len( self.__toklist )\r
-            del self.__toklist[i]\r
-\r
-            # convert int to slice\r
-            if isinstance(i, int):\r
-                if i < 0:\r
-                    i += mylen\r
-                i = slice(i, i+1)\r
-            # get removed indices\r
-            removed = list(range(*i.indices(mylen)))\r
-            removed.reverse()\r
-            # fixup indices in token dictionary\r
-            for name,occurrences in self.__tokdict.items():\r
-                for j in removed:\r
-                    for k, (value, position) in enumerate(occurrences):\r
-                        occurrences[k] = _ParseResultsWithOffset(value, position - (position > j))\r
-        else:\r
-            del self.__tokdict[i]\r
-\r
-    def __contains__( self, k ):\r
-        return k in self.__tokdict\r
-\r
-    def __len__( self ): return len( self.__toklist )\r
-    def __bool__(self): return ( not not self.__toklist )\r
-    __nonzero__ = __bool__\r
-    def __iter__( self ): return iter( self.__toklist )\r
-    def __reversed__( self ): return iter( self.__toklist[::-1] )\r
-    def _iterkeys( self ):\r
-        if hasattr(self.__tokdict, "iterkeys"):\r
-            return self.__tokdict.iterkeys()\r
-        else:\r
-            return iter(self.__tokdict)\r
-\r
-    def _itervalues( self ):\r
-        return (self[k] for k in self._iterkeys())\r
-\r
-    def _iteritems( self ):\r
-        return ((k, self[k]) for k in self._iterkeys())\r
-\r
-    if PY_3:\r
-        keys = _iterkeys\r
-        """Returns an iterator of all named result keys (Python 3.x only)."""\r
-\r
-        values = _itervalues\r
-        """Returns an iterator of all named result values (Python 3.x only)."""\r
-\r
-        items = _iteritems\r
-        """Returns an iterator of all named result key-value tuples (Python 3.x only)."""\r
-\r
-    else:\r
-        iterkeys = _iterkeys\r
-        """Returns an iterator of all named result keys (Python 2.x only)."""\r
-\r
-        itervalues = _itervalues\r
-        """Returns an iterator of all named result values (Python 2.x only)."""\r
-\r
-        iteritems = _iteritems\r
-        """Returns an iterator of all named result key-value tuples (Python 2.x only)."""\r
-\r
-        def keys( self ):\r
-            """Returns all named result keys (as a list in Python 2.x, as an iterator in Python 3.x)."""\r
-            return list(self.iterkeys())\r
-\r
-        def values( self ):\r
-            """Returns all named result values (as a list in Python 2.x, as an iterator in Python 3.x)."""\r
-            return list(self.itervalues())\r
-\r
-        def items( self ):\r
-            """Returns all named result key-values (as a list of tuples in Python 2.x, as an iterator in Python 3.x)."""\r
-            return list(self.iteritems())\r
-\r
-    def haskeys( self ):\r
-        """Since keys() returns an iterator, this method is helpful in bypassing\r
-           code that looks for the existence of any defined results names."""\r
-        return bool(self.__tokdict)\r
-\r
-    def pop( self, *args, **kwargs):\r
-        """\r
-        Removes and returns item at specified index (default=C{last}).\r
-        Supports both C{list} and C{dict} semantics for C{pop()}. If passed no\r
-        argument or an integer argument, it will use C{list} semantics\r
-        and pop tokens from the list of parsed tokens. If passed a\r
-        non-integer argument (most likely a string), it will use C{dict}\r
-        semantics and pop the corresponding value from any defined\r
-        results names. A second default return value argument is\r
-        supported, just as in C{dict.pop()}.\r
-\r
-        Example::\r
-            def remove_first(tokens):\r
-                tokens.pop(0)\r
-            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']\r
-            print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString("0 123 321")) # -> ['123', '321']\r
-\r
-            label = Word(alphas)\r
-            patt = label("LABEL") + OneOrMore(Word(nums))\r
-            print(patt.parseString("AAB 123 321").dump())\r
-\r
-            # Use pop() in a parse action to remove named result (note that corresponding value is not\r
-            # removed from list form of results)\r
-            def remove_LABEL(tokens):\r
-                tokens.pop("LABEL")\r
-                return tokens\r
-            patt.addParseAction(remove_LABEL)\r
-            print(patt.parseString("AAB 123 321").dump())\r
-        prints::\r
-            ['AAB', '123', '321']\r
-            - LABEL: AAB\r
-\r
-            ['AAB', '123', '321']\r
-        """\r
-        if not args:\r
-            args = [-1]\r
-        for k,v in kwargs.items():\r
-            if k == 'default':\r
-                args = (args[0], v)\r
-            else:\r
-                raise TypeError("pop() got an unexpected keyword argument '%s'" % k)\r
-        if (isinstance(args[0], int) or\r
-                        len(args) == 1 or\r
-                        args[0] in self):\r
-            index = args[0]\r
-            ret = self[index]\r
-            del self[index]\r
-            return ret\r
-        else:\r
-            defaultvalue = args[1]\r
-            return defaultvalue\r
-\r
-    def get(self, key, defaultValue=None):\r
-        """\r
-        Returns named result matching the given key, or if there is no\r
-        such name, then returns the given C{defaultValue} or C{None} if no\r
-        C{defaultValue} is specified.\r
-\r
-        Similar to C{dict.get()}.\r
-\r
-        Example::\r
-            integer = Word(nums)\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-            result = date_str.parseString("1999/12/31")\r
-            print(result.get("year")) # -> '1999'\r
-            print(result.get("hour", "not specified")) # -> 'not specified'\r
-            print(result.get("hour")) # -> None\r
-        """\r
-        if key in self:\r
-            return self[key]\r
-        else:\r
-            return defaultValue\r
-\r
-    def insert( self, index, insStr ):\r
-        """\r
-        Inserts new element at location index in the list of parsed tokens.\r
-\r
-        Similar to C{list.insert()}.\r
-\r
-        Example::\r
-            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']\r
-\r
-            # use a parse action to insert the parse location in the front of the parsed results\r
-            def insert_locn(locn, tokens):\r
-                tokens.insert(0, locn)\r
-            print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString("0 123 321")) # -> [0, '0', '123', '321']\r
-        """\r
-        self.__toklist.insert(index, insStr)\r
-        # fixup indices in token dictionary\r
-        for name,occurrences in self.__tokdict.items():\r
-            for k, (value, position) in enumerate(occurrences):\r
-                occurrences[k] = _ParseResultsWithOffset(value, position + (position > index))\r
-\r
-    def append( self, item ):\r
-        """\r
-        Add single element to end of ParseResults list of elements.\r
-\r
-        Example::\r
-            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']\r
-\r
-            # use a parse action to compute the sum of the parsed integers, and add it to the end\r
-            def append_sum(tokens):\r
-                tokens.append(sum(map(int, tokens)))\r
-            print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString("0 123 321")) # -> ['0', '123', '321', 444]\r
-        """\r
-        self.__toklist.append(item)\r
-\r
-    def extend( self, itemseq ):\r
-        """\r
-        Add sequence of elements to end of ParseResults list of elements.\r
-\r
-        Example::\r
-            patt = OneOrMore(Word(alphas))\r
-\r
-            # use a parse action to append the reverse of the matched strings, to make a palindrome\r
-            def make_palindrome(tokens):\r
-                tokens.extend(reversed([t[::-1] for t in tokens]))\r
-                return ''.join(tokens)\r
-            print(patt.addParseAction(make_palindrome).parseString("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl'\r
-        """\r
-        if isinstance(itemseq, ParseResults):\r
-            self += itemseq\r
-        else:\r
-            self.__toklist.extend(itemseq)\r
-\r
-    def clear( self ):\r
-        """\r
-        Clear all elements and results names.\r
-        """\r
-        del self.__toklist[:]\r
-        self.__tokdict.clear()\r
-\r
-    def __getattr__( self, name ):\r
-        try:\r
-            return self[name]\r
-        except KeyError:\r
-            return ""\r
-\r
-        if name in self.__tokdict:\r
-            if name not in self.__accumNames:\r
-                return self.__tokdict[name][-1][0]\r
-            else:\r
-                return ParseResults([ v[0] for v in self.__tokdict[name] ])\r
-        else:\r
-            return ""\r
-\r
-    def __add__( self, other ):\r
-        ret = self.copy()\r
-        ret += other\r
-        return ret\r
-\r
-    def __iadd__( self, other ):\r
-        if other.__tokdict:\r
-            offset = len(self.__toklist)\r
-            addoffset = lambda a: offset if a<0 else a+offset\r
-            otheritems = other.__tokdict.items()\r
-            otherdictitems = [(k, _ParseResultsWithOffset(v[0],addoffset(v[1])) )\r
-                                for (k,vlist) in otheritems for v in vlist]\r
-            for k,v in otherdictitems:\r
-                self[k] = v\r
-                if isinstance(v[0],ParseResults):\r
-                    v[0].__parent = wkref(self)\r
-\r
-        self.__toklist += other.__toklist\r
-        self.__accumNames.update( other.__accumNames )\r
-        return self\r
-\r
-    def __radd__(self, other):\r
-        if isinstance(other,int) and other == 0:\r
-            # useful for merging many ParseResults using sum() builtin\r
-            return self.copy()\r
-        else:\r
-            # this may raise a TypeError - so be it\r
-            return other + self\r
-\r
-    def __repr__( self ):\r
-        return "(%s, %s)" % ( repr( self.__toklist ), repr( self.__tokdict ) )\r
-\r
-    def __str__( self ):\r
-        return '[' + ', '.join(_ustr(i) if isinstance(i, ParseResults) else repr(i) for i in self.__toklist) + ']'\r
-\r
-    def _asStringList( self, sep='' ):\r
-        out = []\r
-        for item in self.__toklist:\r
-            if out and sep:\r
-                out.append(sep)\r
-            if isinstance( item, ParseResults ):\r
-                out += item._asStringList()\r
-            else:\r
-                out.append( _ustr(item) )\r
-        return out\r
-\r
-    def asList( self ):\r
-        """\r
-        Returns the parse results as a nested list of matching tokens, all converted to strings.\r
-\r
-        Example::\r
-            patt = OneOrMore(Word(alphas))\r
-            result = patt.parseString("sldkj lsdkj sldkj")\r
-            # even though the result prints in string-like form, it is actually a pyparsing ParseResults\r
-            print(type(result), result) # -> <class 'pyparsing.ParseResults'> ['sldkj', 'lsdkj', 'sldkj']\r
-\r
-            # Use asList() to create an actual list\r
-            result_list = result.asList()\r
-            print(type(result_list), result_list) # -> <class 'list'> ['sldkj', 'lsdkj', 'sldkj']\r
-        """\r
-        return [res.asList() if isinstance(res,ParseResults) else res for res in self.__toklist]\r
-\r
-    def asDict( self ):\r
-        """\r
-        Returns the named parse results as a nested dictionary.\r
-\r
-        Example::\r
-            integer = Word(nums)\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-            result = date_str.parseString('12/31/1999')\r
-            print(type(result), repr(result)) # -> <class 'pyparsing.ParseResults'> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]})\r
-\r
-            result_dict = result.asDict()\r
-            print(type(result_dict), repr(result_dict)) # -> <class 'dict'> {'day': '1999', 'year': '12', 'month': '31'}\r
-\r
-            # even though a ParseResults supports dict-like access, sometime you just need to have a dict\r
-            import json\r
-            print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable\r
-            print(json.dumps(result.asDict())) # -> {"month": "31", "day": "1999", "year": "12"}\r
-        """\r
-        if PY_3:\r
-            item_fn = self.items\r
-        else:\r
-            item_fn = self.iteritems\r
-\r
-        def toItem(obj):\r
-            if isinstance(obj, ParseResults):\r
-                if obj.haskeys():\r
-                    return obj.asDict()\r
-                else:\r
-                    return [toItem(v) for v in obj]\r
-            else:\r
-                return obj\r
-\r
-        return dict((k,toItem(v)) for k,v in item_fn())\r
-\r
-    def copy( self ):\r
-        """\r
-        Returns a new copy of a C{ParseResults} object.\r
-        """\r
-        ret = ParseResults( self.__toklist )\r
-        ret.__tokdict = dict(self.__tokdict.items())\r
-        ret.__parent = self.__parent\r
-        ret.__accumNames.update( self.__accumNames )\r
-        ret.__name = self.__name\r
-        return ret\r
-\r
-    def asXML( self, doctag=None, namedItemsOnly=False, indent="", formatted=True ):\r
-        """\r
-        (Deprecated) Returns the parse results as XML. Tags are created for tokens and lists that have defined results names.\r
-        """\r
-        nl = "\n"\r
-        out = []\r
-        namedItems = dict((v[1],k) for (k,vlist) in self.__tokdict.items()\r
-                                                            for v in vlist)\r
-        nextLevelIndent = indent + "  "\r
-\r
-        # collapse out indents if formatting is not desired\r
-        if not formatted:\r
-            indent = ""\r
-            nextLevelIndent = ""\r
-            nl = ""\r
-\r
-        selfTag = None\r
-        if doctag is not None:\r
-            selfTag = doctag\r
-        else:\r
-            if self.__name:\r
-                selfTag = self.__name\r
-\r
-        if not selfTag:\r
-            if namedItemsOnly:\r
-                return ""\r
-            else:\r
-                selfTag = "ITEM"\r
-\r
-        out += [ nl, indent, "<", selfTag, ">" ]\r
-\r
-        for i,res in enumerate(self.__toklist):\r
-            if isinstance(res,ParseResults):\r
-                if i in namedItems:\r
-                    out += [ res.asXML(namedItems[i],\r
-                                        namedItemsOnly and doctag is None,\r
-                                        nextLevelIndent,\r
-                                        formatted)]\r
-                else:\r
-                    out += [ res.asXML(None,\r
-                                        namedItemsOnly and doctag is None,\r
-                                        nextLevelIndent,\r
-                                        formatted)]\r
-            else:\r
-                # individual token, see if there is a name for it\r
-                resTag = None\r
-                if i in namedItems:\r
-                    resTag = namedItems[i]\r
-                if not resTag:\r
-                    if namedItemsOnly:\r
-                        continue\r
-                    else:\r
-                        resTag = "ITEM"\r
-                xmlBodyText = _xml_escape(_ustr(res))\r
-                out += [ nl, nextLevelIndent, "<", resTag, ">",\r
-                                                xmlBodyText,\r
-                                                "</", resTag, ">" ]\r
-\r
-        out += [ nl, indent, "</", selfTag, ">" ]\r
-        return "".join(out)\r
-\r
-    def __lookup(self,sub):\r
-        for k,vlist in self.__tokdict.items():\r
-            for v,loc in vlist:\r
-                if sub is v:\r
-                    return k\r
-        return None\r
-\r
-    def getName(self):\r
-        r"""\r
-        Returns the results name for this token expression. Useful when several\r
-        different expressions might match at a particular location.\r
-\r
-        Example::\r
-            integer = Word(nums)\r
-            ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d")\r
-            house_number_expr = Suppress('#') + Word(nums, alphanums)\r
-            user_data = (Group(house_number_expr)("house_number")\r
-                        | Group(ssn_expr)("ssn")\r
-                        | Group(integer)("age"))\r
-            user_info = OneOrMore(user_data)\r
-\r
-            result = user_info.parseString("22 111-22-3333 #221B")\r
-            for item in result:\r
-                print(item.getName(), ':', item[0])\r
-        prints::\r
-            age : 22\r
-            ssn : 111-22-3333\r
-            house_number : 221B\r
-        """\r
-        if self.__name:\r
-            return self.__name\r
-        elif self.__parent:\r
-            par = self.__parent()\r
-            if par:\r
-                return par.__lookup(self)\r
-            else:\r
-                return None\r
-        elif (len(self) == 1 and\r
-               len(self.__tokdict) == 1 and\r
-               next(iter(self.__tokdict.values()))[0][1] in (0,-1)):\r
-            return next(iter(self.__tokdict.keys()))\r
-        else:\r
-            return None\r
-\r
-    def dump(self, indent='', depth=0, full=True):\r
-        """\r
-        Diagnostic method for listing out the contents of a C{ParseResults}.\r
-        Accepts an optional C{indent} argument so that this string can be embedded\r
-        in a nested display of other data.\r
-\r
-        Example::\r
-            integer = Word(nums)\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-            result = date_str.parseString('12/31/1999')\r
-            print(result.dump())\r
-        prints::\r
-            ['12', '/', '31', '/', '1999']\r
-            - day: 1999\r
-            - month: 31\r
-            - year: 12\r
-        """\r
-        out = []\r
-        NL = '\n'\r
-        out.append( indent+_ustr(self.asList()) )\r
-        if full:\r
-            if self.haskeys():\r
-                items = sorted((str(k), v) for k,v in self.items())\r
-                for k,v in items:\r
-                    if out:\r
-                        out.append(NL)\r
-                    out.append( "%s%s- %s: " % (indent,('  '*depth), k) )\r
-                    if isinstance(v,ParseResults):\r
-                        if v:\r
-                            out.append( v.dump(indent,depth+1) )\r
-                        else:\r
-                            out.append(_ustr(v))\r
-                    else:\r
-                        out.append(repr(v))\r
-            elif any(isinstance(vv,ParseResults) for vv in self):\r
-                v = self\r
-                for i,vv in enumerate(v):\r
-                    if isinstance(vv,ParseResults):\r
-                        out.append("\n%s%s[%d]:\n%s%s%s" % (indent,('  '*(depth)),i,indent,('  '*(depth+1)),vv.dump(indent,depth+1) ))\r
-                    else:\r
-                        out.append("\n%s%s[%d]:\n%s%s%s" % (indent,('  '*(depth)),i,indent,('  '*(depth+1)),_ustr(vv)))\r
-\r
-        return "".join(out)\r
-\r
-    def pprint(self, *args, **kwargs):\r
-        """\r
-        Pretty-printer for parsed results as a list, using the C{pprint} module.\r
-        Accepts additional positional or keyword args as defined for the\r
-        C{pprint.pprint} method. (U{http://docs.python.org/3/library/pprint.html#pprint.pprint})\r
-\r
-        Example::\r
-            ident = Word(alphas, alphanums)\r
-            num = Word(nums)\r
-            func = Forward()\r
-            term = ident | num | Group('(' + func + ')')\r
-            func <<= ident + Group(Optional(delimitedList(term)))\r
-            result = func.parseString("fna a,b,(fnb c,d,200),100")\r
-            result.pprint(width=40)\r
-        prints::\r
-            ['fna',\r
-             ['a',\r
-              'b',\r
-              ['(', 'fnb', ['c', 'd', '200'], ')'],\r
-              '100']]\r
-        """\r
-        pprint.pprint(self.asList(), *args, **kwargs)\r
-\r
-    # add support for pickle protocol\r
-    def __getstate__(self):\r
-        return ( self.__toklist,\r
-                 ( self.__tokdict.copy(),\r
-                   self.__parent is not None and self.__parent() or None,\r
-                   self.__accumNames,\r
-                   self.__name ) )\r
-\r
-    def __setstate__(self,state):\r
-        self.__toklist = state[0]\r
-        (self.__tokdict,\r
-         par,\r
-         inAccumNames,\r
-         self.__name) = state[1]\r
-        self.__accumNames = {}\r
-        self.__accumNames.update(inAccumNames)\r
-        if par is not None:\r
-            self.__parent = wkref(par)\r
-        else:\r
-            self.__parent = None\r
-\r
-    def __getnewargs__(self):\r
-        return self.__toklist, self.__name, self.__asList, self.__modal\r
-\r
-    def __dir__(self):\r
-        return (dir(type(self)) + list(self.keys()))\r
-\r
-MutableMapping.register(ParseResults)\r
-\r
-def col (loc,strg):\r
-    """Returns current column within a string, counting newlines as line separators.\r
-   The first column is number 1.\r
-\r
-   Note: the default parsing behavior is to expand tabs in the input string\r
-   before starting the parsing process.  See L{I{ParserElement.parseString}<ParserElement.parseString>} for more information\r
-   on parsing strings containing C{<TAB>}s, and suggested methods to maintain a\r
-   consistent view of the parsed string, the parse location, and line and column\r
-   positions within the parsed string.\r
-   """\r
-    s = strg\r
-    return 1 if 0<loc<len(s) and s[loc-1] == '\n' else loc - s.rfind("\n", 0, loc)\r
-\r
-def lineno(loc,strg):\r
-    """Returns current line number within a string, counting newlines as line separators.\r
-   The first line is number 1.\r
-\r
-   Note: the default parsing behavior is to expand tabs in the input string\r
-   before starting the parsing process.  See L{I{ParserElement.parseString}<ParserElement.parseString>} for more information\r
-   on parsing strings containing C{<TAB>}s, and suggested methods to maintain a\r
-   consistent view of the parsed string, the parse location, and line and column\r
-   positions within the parsed string.\r
-   """\r
-    return strg.count("\n",0,loc) + 1\r
-\r
-def line( loc, strg ):\r
-    """Returns the line of text containing loc within a string, counting newlines as line separators.\r
-       """\r
-    lastCR = strg.rfind("\n", 0, loc)\r
-    nextCR = strg.find("\n", loc)\r
-    if nextCR >= 0:\r
-        return strg[lastCR+1:nextCR]\r
-    else:\r
-        return strg[lastCR+1:]\r
-\r
-def _defaultStartDebugAction( instring, loc, expr ):\r
-    print (("Match " + _ustr(expr) + " at loc " + _ustr(loc) + "(%d,%d)" % ( lineno(loc,instring), col(loc,instring) )))\r
-\r
-def _defaultSuccessDebugAction( instring, startloc, endloc, expr, toks ):\r
-    print ("Matched " + _ustr(expr) + " -> " + str(toks.asList()))\r
-\r
-def _defaultExceptionDebugAction( instring, loc, expr, exc ):\r
-    print ("Exception raised:" + _ustr(exc))\r
-\r
-def nullDebugAction(*args):\r
-    """'Do-nothing' debug action, to suppress debugging output during parsing."""\r
-    pass\r
-\r
-# Only works on Python 3.x - nonlocal is toxic to Python 2 installs\r
-#~ 'decorator to trim function calls to match the arity of the target'\r
-#~ def _trim_arity(func, maxargs=3):\r
-    #~ if func in singleArgBuiltins:\r
-        #~ return lambda s,l,t: func(t)\r
-    #~ limit = 0\r
-    #~ foundArity = False\r
-    #~ def wrapper(*args):\r
-        #~ nonlocal limit,foundArity\r
-        #~ while 1:\r
-            #~ try:\r
-                #~ ret = func(*args[limit:])\r
-                #~ foundArity = True\r
-                #~ return ret\r
-            #~ except TypeError:\r
-                #~ if limit == maxargs or foundArity:\r
-                    #~ raise\r
-                #~ limit += 1\r
-                #~ continue\r
-    #~ return wrapper\r
-\r
-# this version is Python 2.x-3.x cross-compatible\r
-'decorator to trim function calls to match the arity of the target'\r
-def _trim_arity(func, maxargs=2):\r
-    if func in singleArgBuiltins:\r
-        return lambda s,l,t: func(t)\r
-    limit = [0]\r
-    foundArity = [False]\r
-\r
-    # traceback return data structure changed in Py3.5 - normalize back to plain tuples\r
-    if system_version[:2] >= (3,5):\r
-        def extract_stack(limit=0):\r
-            # special handling for Python 3.5.0 - extra deep call stack by 1\r
-            offset = -3 if system_version == (3,5,0) else -2\r
-            frame_summary = traceback.extract_stack(limit=-offset+limit-1)[offset]\r
-            return [frame_summary[:2]]\r
-        def extract_tb(tb, limit=0):\r
-            frames = traceback.extract_tb(tb, limit=limit)\r
-            frame_summary = frames[-1]\r
-            return [frame_summary[:2]]\r
-    else:\r
-        extract_stack = traceback.extract_stack\r
-        extract_tb = traceback.extract_tb\r
-\r
-    # synthesize what would be returned by traceback.extract_stack at the call to\r
-    # user's parse action 'func', so that we don't incur call penalty at parse time\r
-\r
-    LINE_DIFF = 6\r
-    # IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND\r
-    # THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!!\r
-    this_line = extract_stack(limit=2)[-1]\r
-    pa_call_line_synth = (this_line[0], this_line[1]+LINE_DIFF)\r
-\r
-    def wrapper(*args):\r
-        while 1:\r
-            try:\r
-                ret = func(*args[limit[0]:])\r
-                foundArity[0] = True\r
-                return ret\r
-            except TypeError:\r
-                # re-raise TypeErrors if they did not come from our arity testing\r
-                if foundArity[0]:\r
-                    raise\r
-                else:\r
-                    try:\r
-                        tb = sys.exc_info()[-1]\r
-                        if not extract_tb(tb, limit=2)[-1][:2] == pa_call_line_synth:\r
-                            raise\r
-                    finally:\r
-                        del tb\r
-\r
-                if limit[0] <= maxargs:\r
-                    limit[0] += 1\r
-                    continue\r
-                raise\r
-\r
-    # copy func name to wrapper for sensible debug output\r
-    func_name = "<parse action>"\r
-    try:\r
-        func_name = getattr(func, '__name__',\r
-                            getattr(func, '__class__').__name__)\r
-    except Exception:\r
-        func_name = str(func)\r
-    wrapper.__name__ = func_name\r
-\r
-    return wrapper\r
-\r
-class ParserElement(object):\r
-    """Abstract base level parser element class."""\r
-    DEFAULT_WHITE_CHARS = " \n\t\r"\r
-    verbose_stacktrace = False\r
-\r
-    @staticmethod\r
-    def setDefaultWhitespaceChars( chars ):\r
-        r"""\r
-        Overrides the default whitespace chars\r
-\r
-        Example::\r
-            # default whitespace chars are space, <TAB> and newline\r
-            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -> ['abc', 'def', 'ghi', 'jkl']\r
-\r
-            # change to just treat newline as significant\r
-            ParserElement.setDefaultWhitespaceChars(" \t")\r
-            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -> ['abc', 'def']\r
-        """\r
-        ParserElement.DEFAULT_WHITE_CHARS = chars\r
-\r
-    @staticmethod\r
-    def inlineLiteralsUsing(cls):\r
-        """\r
-        Set class to be used for inclusion of string literals into a parser.\r
-\r
-        Example::\r
-            # default literal class used is Literal\r
-            integer = Word(nums)\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-            date_str.parseString("1999/12/31")  # -> ['1999', '/', '12', '/', '31']\r
-\r
-\r
-            # change to Suppress\r
-            ParserElement.inlineLiteralsUsing(Suppress)\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-\r
-            date_str.parseString("1999/12/31")  # -> ['1999', '12', '31']\r
-        """\r
-        ParserElement._literalStringClass = cls\r
-\r
-    def __init__( self, savelist=False ):\r
-        self.parseAction = list()\r
-        self.failAction = None\r
-        #~ self.name = "<unknown>"  # don't define self.name, let subclasses try/except upcall\r
-        self.strRepr = None\r
-        self.resultsName = None\r
-        self.saveAsList = savelist\r
-        self.skipWhitespace = True\r
-        self.whiteChars = ParserElement.DEFAULT_WHITE_CHARS\r
-        self.copyDefaultWhiteChars = True\r
-        self.mayReturnEmpty = False # used when checking for left-recursion\r
-        self.keepTabs = False\r
-        self.ignoreExprs = list()\r
-        self.debug = False\r
-        self.streamlined = False\r
-        self.mayIndexError = True # used to optimize exception handling for subclasses that don't advance parse index\r
-        self.errmsg = ""\r
-        self.modalResults = True # used to mark results names as modal (report only last) or cumulative (list all)\r
-        self.debugActions = ( None, None, None ) #custom debug actions\r
-        self.re = None\r
-        self.callPreparse = True # used to avoid redundant calls to preParse\r
-        self.callDuringTry = False\r
-\r
-    def copy( self ):\r
-        """\r
-        Make a copy of this C{ParserElement}.  Useful for defining different parse actions\r
-        for the same parsing pattern, using copies of the original parse element.\r
-\r
-        Example::\r
-            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r
-            integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress("K")\r
-            integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")\r
-\r
-            print(OneOrMore(integerK | integerM | integer).parseString("5K 100 640K 256M"))\r
-        prints::\r
-            [5120, 100, 655360, 268435456]\r
-        Equivalent form of C{expr.copy()} is just C{expr()}::\r
-            integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")\r
-        """\r
-        cpy = copy.copy( self )\r
-        cpy.parseAction = self.parseAction[:]\r
-        cpy.ignoreExprs = self.ignoreExprs[:]\r
-        if self.copyDefaultWhiteChars:\r
-            cpy.whiteChars = ParserElement.DEFAULT_WHITE_CHARS\r
-        return cpy\r
-\r
-    def setName( self, name ):\r
-        """\r
-        Define name for this expression, makes debugging and exception messages clearer.\r
-\r
-        Example::\r
-            Word(nums).parseString("ABC")  # -> Exception: Expected W:(0123...) (at char 0), (line:1, col:1)\r
-            Word(nums).setName("integer").parseString("ABC")  # -> Exception: Expected integer (at char 0), (line:1, col:1)\r
-        """\r
-        self.name = name\r
-        self.errmsg = "Expected " + self.name\r
-        if hasattr(self,"exception"):\r
-            self.exception.msg = self.errmsg\r
-        return self\r
-\r
-    def setResultsName( self, name, listAllMatches=False ):\r
-        """\r
-        Define name for referencing matching tokens as a nested attribute\r
-        of the returned parse results.\r
-        NOTE: this returns a *copy* of the original C{ParserElement} object;\r
-        this is so that the client can define a basic element, such as an\r
-        integer, and reference it in multiple places with different names.\r
-\r
-        You can also set results names using the abbreviated syntax,\r
-        C{expr("name")} in place of C{expr.setResultsName("name")} -\r
-        see L{I{__call__}<__call__>}.\r
-\r
-        Example::\r
-            date_str = (integer.setResultsName("year") + '/'\r
-                        + integer.setResultsName("month") + '/'\r
-                        + integer.setResultsName("day"))\r
-\r
-            # equivalent form:\r
-            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")\r
-        """\r
-        newself = self.copy()\r
-        if name.endswith("*"):\r
-            name = name[:-1]\r
-            listAllMatches=True\r
-        newself.resultsName = name\r
-        newself.modalResults = not listAllMatches\r
-        return newself\r
-\r
-    def setBreak(self,breakFlag = True):\r
-        """Method to invoke the Python pdb debugger when this element is\r
-           about to be parsed. Set C{breakFlag} to True to enable, False to\r
-           disable.\r
-        """\r
-        if breakFlag:\r
-            _parseMethod = self._parse\r
-            def breaker(instring, loc, doActions=True, callPreParse=True):\r
-                import pdb\r
-                pdb.set_trace()\r
-                return _parseMethod( instring, loc, doActions, callPreParse )\r
-            breaker._originalParseMethod = _parseMethod\r
-            self._parse = breaker\r
-        else:\r
-            if hasattr(self._parse,"_originalParseMethod"):\r
-                self._parse = self._parse._originalParseMethod\r
-        return self\r
-\r
-    def setParseAction( self, *fns, **kwargs ):\r
-        """\r
-        Define one or more actions to perform when successfully matching parse element definition.\r
-        Parse action fn is a callable method with 0-3 arguments, called as C{fn(s,loc,toks)},\r
-        C{fn(loc,toks)}, C{fn(toks)}, or just C{fn()}, where:\r
-         - s   = the original string being parsed (see note below)\r
-         - loc = the location of the matching substring\r
-         - toks = a list of the matched tokens, packaged as a C{L{ParseResults}} object\r
-        If the functions in fns modify the tokens, they can return them as the return\r
-        value from fn, and the modified list of tokens will replace the original.\r
-        Otherwise, fn does not need to return any value.\r
-\r
-        Optional keyword arguments:\r
-         - callDuringTry = (default=C{False}) indicate if parse action should be run during lookaheads and alternate testing\r
-\r
-        Note: the default parsing behavior is to expand tabs in the input string\r
-        before starting the parsing process.  See L{I{parseString}<parseString>} for more information\r
-        on parsing strings containing C{<TAB>}s, and suggested methods to maintain a\r
-        consistent view of the parsed string, the parse location, and line and column\r
-        positions within the parsed string.\r
-\r
-        Example::\r
-            integer = Word(nums)\r
-            date_str = integer + '/' + integer + '/' + integer\r
-\r
-            date_str.parseString("1999/12/31")  # -> ['1999', '/', '12', '/', '31']\r
-\r
-            # use parse action to convert to ints at parse time\r
-            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r
-            date_str = integer + '/' + integer + '/' + integer\r
-\r
-            # note that integer fields are now ints, not strings\r
-            date_str.parseString("1999/12/31")  # -> [1999, '/', 12, '/', 31]\r
-        """\r
-        self.parseAction = list(map(_trim_arity, list(fns)))\r
-        self.callDuringTry = kwargs.get("callDuringTry", False)\r
-        return self\r
-\r
-    def addParseAction( self, *fns, **kwargs ):\r
-        """\r
-        Add one or more parse actions to expression's list of parse actions. See L{I{setParseAction}<setParseAction>}.\r
-\r
-        See examples in L{I{copy}<copy>}.\r
-        """\r
-        self.parseAction += list(map(_trim_arity, list(fns)))\r
-        self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False)\r
-        return self\r
-\r
-    def addCondition(self, *fns, **kwargs):\r
-        """Add a boolean predicate function to expression's list of parse actions. See\r
-        L{I{setParseAction}<setParseAction>} for function call signatures. Unlike C{setParseAction},\r
-        functions passed to C{addCondition} need to return boolean success/fail of the condition.\r
-\r
-        Optional keyword arguments:\r
-         - message = define a custom message to be used in the raised exception\r
-         - fatal   = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise ParseException\r
-\r
-        Example::\r
-            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))\r
-            year_int = integer.copy()\r
-            year_int.addCondition(lambda toks: toks[0] >= 2000, message="Only support years 2000 and later")\r
-            date_str = year_int + '/' + integer + '/' + integer\r
-\r
-            result = date_str.parseString("1999/12/31")  # -> Exception: Only support years 2000 and later (at char 0), (line:1, col:1)\r
-        """\r
-        msg = kwargs.get("message", "failed user-defined condition")\r
-        exc_type = ParseFatalException if kwargs.get("fatal", False) else ParseException\r
-        for fn in fns:\r
-            def pa(s,l,t):\r
-                if not bool(_trim_arity(fn)(s,l,t)):\r
-                    raise exc_type(s,l,msg)\r
-            self.parseAction.append(pa)\r
-        self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False)\r
-        return self\r
-\r
-    def setFailAction( self, fn ):\r
-        """Define action to perform if parsing fails at this expression.\r
-           Fail acton fn is a callable function that takes the arguments\r
-           C{fn(s,loc,expr,err)} where:\r
-            - s = string being parsed\r
-            - loc = location where expression match was attempted and failed\r
-            - expr = the parse expression that failed\r
-            - err = the exception thrown\r
-           The function returns no value.  It may throw C{L{ParseFatalException}}\r
-           if it is desired to stop parsing immediately."""\r
-        self.failAction = fn\r
-        return self\r
-\r
-    def _skipIgnorables( self, instring, loc ):\r
-        exprsFound = True\r
-        while exprsFound:\r
-            exprsFound = False\r
-            for e in self.ignoreExprs:\r
-                try:\r
-                    while 1:\r
-                        loc,dummy = e._parse( instring, loc )\r
-                        exprsFound = True\r
-                except ParseException:\r
-                    pass\r
-        return loc\r
-\r
-    def preParse( self, instring, loc ):\r
-        if self.ignoreExprs:\r
-            loc = self._skipIgnorables( instring, loc )\r
-\r
-        if self.skipWhitespace:\r
-            wt = self.whiteChars\r
-            instrlen = len(instring)\r
-            while loc < instrlen and instring[loc] in wt:\r
-                loc += 1\r
-\r
-        return loc\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        return loc, []\r
-\r
-    def postParse( self, instring, loc, tokenlist ):\r
-        return tokenlist\r
-\r
-    #~ @profile\r
-    def _parseNoCache( self, instring, loc, doActions=True, callPreParse=True ):\r
-        debugging = ( self.debug ) #and doActions )\r
-\r
-        if debugging or self.failAction:\r
-            #~ print ("Match",self,"at loc",loc,"(%d,%d)" % ( lineno(loc,instring), col(loc,instring) ))\r
-            if (self.debugActions[0] ):\r
-                self.debugActions[0]( instring, loc, self )\r
-            if callPreParse and self.callPreparse:\r
-                preloc = self.preParse( instring, loc )\r
-            else:\r
-                preloc = loc\r
-            tokensStart = preloc\r
-            try:\r
-                try:\r
-                    loc,tokens = self.parseImpl( instring, preloc, doActions )\r
-                except IndexError:\r
-                    raise ParseException( instring, len(instring), self.errmsg, self )\r
-            except ParseBaseException as err:\r
-                #~ print ("Exception raised:", err)\r
-                if self.debugActions[2]:\r
-                    self.debugActions[2]( instring, tokensStart, self, err )\r
-                if self.failAction:\r
-                    self.failAction( instring, tokensStart, self, err )\r
-                raise\r
-        else:\r
-            if callPreParse and self.callPreparse:\r
-                preloc = self.preParse( instring, loc )\r
-            else:\r
-                preloc = loc\r
-            tokensStart = preloc\r
-            if self.mayIndexError or preloc >= len(instring):\r
-                try:\r
-                    loc,tokens = self.parseImpl( instring, preloc, doActions )\r
-                except IndexError:\r
-                    raise ParseException( instring, len(instring), self.errmsg, self )\r
-            else:\r
-                loc,tokens = self.parseImpl( instring, preloc, doActions )\r
-\r
-        tokens = self.postParse( instring, loc, tokens )\r
-\r
-        retTokens = ParseResults( tokens, self.resultsName, asList=self.saveAsList, modal=self.modalResults )\r
-        if self.parseAction and (doActions or self.callDuringTry):\r
-            if debugging:\r
-                try:\r
-                    for fn in self.parseAction:\r
-                        try:\r
-                            tokens = fn( instring, tokensStart, retTokens )\r
-                        except IndexError as parse_action_exc:\r
-                            exc = ParseException("exception raised in parse action")\r
-                            exc.__cause__ = parse_action_exc\r
-                            raise exc\r
-\r
-                        if tokens is not None and tokens is not retTokens:\r
-                            retTokens = ParseResults( tokens,\r
-                                                      self.resultsName,\r
-                                                      asList=self.saveAsList and isinstance(tokens,(ParseResults,list)),\r
-                                                      modal=self.modalResults )\r
-                except ParseBaseException as err:\r
-                    #~ print "Exception raised in user parse action:", err\r
-                    if (self.debugActions[2] ):\r
-                        self.debugActions[2]( instring, tokensStart, self, err )\r
-                    raise\r
-            else:\r
-                for fn in self.parseAction:\r
-                    try:\r
-                        tokens = fn( instring, tokensStart, retTokens )\r
-                    except IndexError as parse_action_exc:\r
-                        exc = ParseException("exception raised in parse action")\r
-                        exc.__cause__ = parse_action_exc\r
-                        raise exc\r
-\r
-                    if tokens is not None and tokens is not retTokens:\r
-                        retTokens = ParseResults( tokens,\r
-                                                  self.resultsName,\r
-                                                  asList=self.saveAsList and isinstance(tokens,(ParseResults,list)),\r
-                                                  modal=self.modalResults )\r
-        if debugging:\r
-            #~ print ("Matched",self,"->",retTokens.asList())\r
-            if (self.debugActions[1] ):\r
-                self.debugActions[1]( instring, tokensStart, loc, self, retTokens )\r
-\r
-        return loc, retTokens\r
-\r
-    def tryParse( self, instring, loc ):\r
-        try:\r
-            return self._parse( instring, loc, doActions=False )[0]\r
-        except ParseFatalException:\r
-            raise ParseException( instring, loc, self.errmsg, self)\r
-\r
-    def canParseNext(self, instring, loc):\r
-        try:\r
-            self.tryParse(instring, loc)\r
-        except (ParseException, IndexError):\r
-            return False\r
-        else:\r
-            return True\r
-\r
-    class _UnboundedCache(object):\r
-        def __init__(self):\r
-            cache = {}\r
-            self.not_in_cache = not_in_cache = object()\r
-\r
-            def get(self, key):\r
-                return cache.get(key, not_in_cache)\r
-\r
-            def set(self, key, value):\r
-                cache[key] = value\r
-\r
-            def clear(self):\r
-                cache.clear()\r
-\r
-            def cache_len(self):\r
-                return len(cache)\r
-\r
-            self.get = types.MethodType(get, self)\r
-            self.set = types.MethodType(set, self)\r
-            self.clear = types.MethodType(clear, self)\r
-            self.__len__ = types.MethodType(cache_len, self)\r
-\r
-    if _OrderedDict is not None:\r
-        class _FifoCache(object):\r
-            def __init__(self, size):\r
-                self.not_in_cache = not_in_cache = object()\r
-\r
-                cache = _OrderedDict()\r
-\r
-                def get(self, key):\r
-                    return cache.get(key, not_in_cache)\r
-\r
-                def set(self, key, value):\r
-                    cache[key] = value\r
-                    while len(cache) > size:\r
-                        try:\r
-                            cache.popitem(False)\r
-                        except KeyError:\r
-                            pass\r
-\r
-                def clear(self):\r
-                    cache.clear()\r
-\r
-                def cache_len(self):\r
-                    return len(cache)\r
-\r
-                self.get = types.MethodType(get, self)\r
-                self.set = types.MethodType(set, self)\r
-                self.clear = types.MethodType(clear, self)\r
-                self.__len__ = types.MethodType(cache_len, self)\r
-\r
-    else:\r
-        class _FifoCache(object):\r
-            def __init__(self, size):\r
-                self.not_in_cache = not_in_cache = object()\r
-\r
-                cache = {}\r
-                key_fifo = collections.deque([], size)\r
-\r
-                def get(self, key):\r
-                    return cache.get(key, not_in_cache)\r
-\r
-                def set(self, key, value):\r
-                    cache[key] = value\r
-                    while len(key_fifo) > size:\r
-                        cache.pop(key_fifo.popleft(), None)\r
-                    key_fifo.append(key)\r
-\r
-                def clear(self):\r
-                    cache.clear()\r
-                    key_fifo.clear()\r
-\r
-                def cache_len(self):\r
-                    return len(cache)\r
-\r
-                self.get = types.MethodType(get, self)\r
-                self.set = types.MethodType(set, self)\r
-                self.clear = types.MethodType(clear, self)\r
-                self.__len__ = types.MethodType(cache_len, self)\r
-\r
-    # argument cache for optimizing repeated calls when backtracking through recursive expressions\r
-    packrat_cache = {} # this is set later by enabledPackrat(); this is here so that resetCache() doesn't fail\r
-    packrat_cache_lock = RLock()\r
-    packrat_cache_stats = [0, 0]\r
-\r
-    # this method gets repeatedly called during backtracking with the same arguments -\r
-    # we can cache these arguments and save ourselves the trouble of re-parsing the contained expression\r
-    def _parseCache( self, instring, loc, doActions=True, callPreParse=True ):\r
-        HIT, MISS = 0, 1\r
-        lookup = (self, instring, loc, callPreParse, doActions)\r
-        with ParserElement.packrat_cache_lock:\r
-            cache = ParserElement.packrat_cache\r
-            value = cache.get(lookup)\r
-            if value is cache.not_in_cache:\r
-                ParserElement.packrat_cache_stats[MISS] += 1\r
-                try:\r
-                    value = self._parseNoCache(instring, loc, doActions, callPreParse)\r
-                except ParseBaseException as pe:\r
-                    # cache a copy of the exception, without the traceback\r
-                    cache.set(lookup, pe.__class__(*pe.args))\r
-                    raise\r
-                else:\r
-                    cache.set(lookup, (value[0], value[1].copy()))\r
-                    return value\r
-            else:\r
-                ParserElement.packrat_cache_stats[HIT] += 1\r
-                if isinstance(value, Exception):\r
-                    raise value\r
-                return (value[0], value[1].copy())\r
-\r
-    _parse = _parseNoCache\r
-\r
-    @staticmethod\r
-    def resetCache():\r
-        ParserElement.packrat_cache.clear()\r
-        ParserElement.packrat_cache_stats[:] = [0] * len(ParserElement.packrat_cache_stats)\r
-\r
-    _packratEnabled = False\r
-    @staticmethod\r
-    def enablePackrat(cache_size_limit=128):\r
-        """Enables "packrat" parsing, which adds memoizing to the parsing logic.\r
-           Repeated parse attempts at the same string location (which happens\r
-           often in many complex grammars) can immediately return a cached value,\r
-           instead of re-executing parsing/validating code.  Memoizing is done of\r
-           both valid results and parsing exceptions.\r
-\r
-           Parameters:\r
-            - cache_size_limit - (default=C{128}) - if an integer value is provided\r
-              will limit the size of the packrat cache; if None is passed, then\r
-              the cache size will be unbounded; if 0 is passed, the cache will\r
-              be effectively disabled.\r
-\r
-           This speedup may break existing programs that use parse actions that\r
-           have side-effects.  For this reason, packrat parsing is disabled when\r
-           you first import pyparsing.  To activate the packrat feature, your\r
-           program must call the class method C{ParserElement.enablePackrat()}.  If\r
-           your program uses C{psyco} to "compile as you go", you must call\r
-           C{enablePackrat} before calling C{psyco.full()}.  If you do not do this,\r
-           Python will crash.  For best results, call C{enablePackrat()} immediately\r
-           after importing pyparsing.\r
-\r
-           Example::\r
-               import pyparsing\r
-               pyparsing.ParserElement.enablePackrat()\r
-        """\r
-        if not ParserElement._packratEnabled:\r
-            ParserElement._packratEnabled = True\r
-            if cache_size_limit is None:\r
-                ParserElement.packrat_cache = ParserElement._UnboundedCache()\r
-            else:\r
-                ParserElement.packrat_cache = ParserElement._FifoCache(cache_size_limit)\r
-            ParserElement._parse = ParserElement._parseCache\r
-\r
-    def parseString( self, instring, parseAll=False ):\r
-        """\r
-        Execute the parse expression with the given string.\r
-        This is the main interface to the client code, once the complete\r
-        expression has been built.\r
-\r
-        If you want the grammar to require that the entire input string be\r
-        successfully parsed, then set C{parseAll} to True (equivalent to ending\r
-        the grammar with C{L{StringEnd()}}).\r
-\r
-        Note: C{parseString} implicitly calls C{expandtabs()} on the input string,\r
-        in order to report proper column numbers in parse actions.\r
-        If the input string contains tabs and\r
-        the grammar uses parse actions that use the C{loc} argument to index into the\r
-        string being parsed, you can ensure you have a consistent view of the input\r
-        string by:\r
-         - calling C{parseWithTabs} on your grammar before calling C{parseString}\r
-           (see L{I{parseWithTabs}<parseWithTabs>})\r
-         - define your parse action using the full C{(s,loc,toks)} signature, and\r
-           reference the input string using the parse action's C{s} argument\r
-         - explictly expand the tabs in your input string before calling\r
-           C{parseString}\r
-\r
-        Example::\r
-            Word('a').parseString('aaaaabaaa')  # -> ['aaaaa']\r
-            Word('a').parseString('aaaaabaaa', parseAll=True)  # -> Exception: Expected end of text\r
-        """\r
-        ParserElement.resetCache()\r
-        if not self.streamlined:\r
-            self.streamline()\r
-            #~ self.saveAsList = True\r
-        for e in self.ignoreExprs:\r
-            e.streamline()\r
-        if not self.keepTabs:\r
-            instring = instring.expandtabs()\r
-        try:\r
-            loc, tokens = self._parse( instring, 0 )\r
-            if parseAll:\r
-                loc = self.preParse( instring, loc )\r
-                se = Empty() + StringEnd()\r
-                se._parse( instring, loc )\r
-        except ParseBaseException as exc:\r
-            if ParserElement.verbose_stacktrace:\r
-                raise\r
-            else:\r
-                # catch and re-raise exception from here, clears out pyparsing internal stack trace\r
-                raise exc\r
-        else:\r
-            return tokens\r
-\r
-    def scanString( self, instring, maxMatches=_MAX_INT, overlap=False ):\r
-        """\r
-        Scan the input string for expression matches.  Each match will return the\r
-        matching tokens, start location, and end location.  May be called with optional\r
-        C{maxMatches} argument, to clip scanning after 'n' matches are found.  If\r
-        C{overlap} is specified, then overlapping matches will be reported.\r
-\r
-        Note that the start and end locations are reported relative to the string\r
-        being parsed.  See L{I{parseString}<parseString>} for more information on parsing\r
-        strings with embedded tabs.\r
-\r
-        Example::\r
-            source = "sldjf123lsdjjkf345sldkjf879lkjsfd987"\r
-            print(source)\r
-            for tokens,start,end in Word(alphas).scanString(source):\r
-                print(' '*start + '^'*(end-start))\r
-                print(' '*start + tokens[0])\r
-\r
-        prints::\r
-\r
-            sldjf123lsdjjkf345sldkjf879lkjsfd987\r
-            ^^^^^\r
-            sldjf\r
-                    ^^^^^^^\r
-                    lsdjjkf\r
-                              ^^^^^^\r
-                              sldkjf\r
-                                       ^^^^^^\r
-                                       lkjsfd\r
-        """\r
-        if not self.streamlined:\r
-            self.streamline()\r
-        for e in self.ignoreExprs:\r
-            e.streamline()\r
-\r
-        if not self.keepTabs:\r
-            instring = _ustr(instring).expandtabs()\r
-        instrlen = len(instring)\r
-        loc = 0\r
-        preparseFn = self.preParse\r
-        parseFn = self._parse\r
-        ParserElement.resetCache()\r
-        matches = 0\r
-        try:\r
-            while loc <= instrlen and matches < maxMatches:\r
-                try:\r
-                    preloc = preparseFn( instring, loc )\r
-                    nextLoc,tokens = parseFn( instring, preloc, callPreParse=False )\r
-                except ParseException:\r
-                    loc = preloc+1\r
-                else:\r
-                    if nextLoc > loc:\r
-                        matches += 1\r
-                        yield tokens, preloc, nextLoc\r
-                        if overlap:\r
-                            nextloc = preparseFn( instring, loc )\r
-                            if nextloc > loc:\r
-                                loc = nextLoc\r
-                            else:\r
-                                loc += 1\r
-                        else:\r
-                            loc = nextLoc\r
-                    else:\r
-                        loc = preloc+1\r
-        except ParseBaseException as exc:\r
-            if ParserElement.verbose_stacktrace:\r
-                raise\r
-            else:\r
-                # catch and re-raise exception from here, clears out pyparsing internal stack trace\r
-                raise exc\r
-\r
-    def transformString( self, instring ):\r
-        """\r
-        Extension to C{L{scanString}}, to modify matching text with modified tokens that may\r
-        be returned from a parse action.  To use C{transformString}, define a grammar and\r
-        attach a parse action to it that modifies the returned token list.\r
-        Invoking C{transformString()} on a target string will then scan for matches,\r
-        and replace the matched text patterns according to the logic in the parse\r
-        action.  C{transformString()} returns the resulting transformed string.\r
-\r
-        Example::\r
-            wd = Word(alphas)\r
-            wd.setParseAction(lambda toks: toks[0].title())\r
-\r
-            print(wd.transformString("now is the winter of our discontent made glorious summer by this sun of york."))\r
-        Prints::\r
-            Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York.\r
-        """\r
-        out = []\r
-        lastE = 0\r
-        # force preservation of <TAB>s, to minimize unwanted transformation of string, and to\r
-        # keep string locs straight between transformString and scanString\r
-        self.keepTabs = True\r
-        try:\r
-            for t,s,e in self.scanString( instring ):\r
-                out.append( instring[lastE:s] )\r
-                if t:\r
-                    if isinstance(t,ParseResults):\r
-                        out += t.asList()\r
-                    elif isinstance(t,list):\r
-                        out += t\r
-                    else:\r
-                        out.append(t)\r
-                lastE = e\r
-            out.append(instring[lastE:])\r
-            out = [o for o in out if o]\r
-            return "".join(map(_ustr,_flatten(out)))\r
-        except ParseBaseException as exc:\r
-            if ParserElement.verbose_stacktrace:\r
-                raise\r
-            else:\r
-                # catch and re-raise exception from here, clears out pyparsing internal stack trace\r
-                raise exc\r
-\r
-    def searchString( self, instring, maxMatches=_MAX_INT ):\r
-        """\r
-        Another extension to C{L{scanString}}, simplifying the access to the tokens found\r
-        to match the given parse expression.  May be called with optional\r
-        C{maxMatches} argument, to clip searching after 'n' matches are found.\r
-\r
-        Example::\r
-            # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters\r
-            cap_word = Word(alphas.upper(), alphas.lower())\r
-\r
-            print(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity"))\r
-\r
-            # the sum() builtin can be used to merge results into a single ParseResults object\r
-            print(sum(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity")))\r
-        prints::\r
-            [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']]\r
-            ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity']\r
-        """\r
-        try:\r
-            return ParseResults([ t for t,s,e in self.scanString( instring, maxMatches ) ])\r
-        except ParseBaseException as exc:\r
-            if ParserElement.verbose_stacktrace:\r
-                raise\r
-            else:\r
-                # catch and re-raise exception from here, clears out pyparsing internal stack trace\r
-                raise exc\r
-\r
-    def split(self, instring, maxsplit=_MAX_INT, includeSeparators=False):\r
-        """\r
-        Generator method to split a string using the given expression as a separator.\r
-        May be called with optional C{maxsplit} argument, to limit the number of splits;\r
-        and the optional C{includeSeparators} argument (default=C{False}), if the separating\r
-        matching text should be included in the split results.\r
-\r
-        Example::\r
-            punc = oneOf(list(".,;:/-!?"))\r
-            print(list(punc.split("This, this?, this sentence, is badly punctuated!")))\r
-        prints::\r
-            ['This', ' this', '', ' this sentence', ' is badly punctuated', '']\r
-        """\r
-        splits = 0\r
-        last = 0\r
-        for t,s,e in self.scanString(instring, maxMatches=maxsplit):\r
-            yield instring[last:s]\r
-            if includeSeparators:\r
-                yield t[0]\r
-            last = e\r
-        yield instring[last:]\r
-\r
-    def __add__(self, other ):\r
-        """\r
-        Implementation of + operator - returns C{L{And}}. Adding strings to a ParserElement\r
-        converts them to L{Literal}s by default.\r
-\r
-        Example::\r
-            greet = Word(alphas) + "," + Word(alphas) + "!"\r
-            hello = "Hello, World!"\r
-            print (hello, "->", greet.parseString(hello))\r
-        Prints::\r
-            Hello, World! -> ['Hello', ',', 'World', '!']\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return And( [ self, other ] )\r
-\r
-    def __radd__(self, other ):\r
-        """\r
-        Implementation of + operator when left operand is not a C{L{ParserElement}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return other + self\r
-\r
-    def __sub__(self, other):\r
-        """\r
-        Implementation of - operator, returns C{L{And}} with error stop\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return self + And._ErrorStop() + other\r
-\r
-    def __rsub__(self, other ):\r
-        """\r
-        Implementation of - operator when left operand is not a C{L{ParserElement}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return other - self\r
-\r
-    def __mul__(self,other):\r
-        """\r
-        Implementation of * operator, allows use of C{expr * 3} in place of\r
-        C{expr + expr + expr}.  Expressions may also me multiplied by a 2-integer\r
-        tuple, similar to C{{min,max}} multipliers in regular expressions.  Tuples\r
-        may also include C{None} as in:\r
-         - C{expr*(n,None)} or C{expr*(n,)} is equivalent\r
-              to C{expr*n + L{ZeroOrMore}(expr)}\r
-              (read as "at least n instances of C{expr}")\r
-         - C{expr*(None,n)} is equivalent to C{expr*(0,n)}\r
-              (read as "0 to n instances of C{expr}")\r
-         - C{expr*(None,None)} is equivalent to C{L{ZeroOrMore}(expr)}\r
-         - C{expr*(1,None)} is equivalent to C{L{OneOrMore}(expr)}\r
-\r
-        Note that C{expr*(None,n)} does not raise an exception if\r
-        more than n exprs exist in the input stream; that is,\r
-        C{expr*(None,n)} does not enforce a maximum number of expr\r
-        occurrences.  If this behavior is desired, then write\r
-        C{expr*(None,n) + ~expr}\r
-        """\r
-        if isinstance(other,int):\r
-            minElements, optElements = other,0\r
-        elif isinstance(other,tuple):\r
-            other = (other + (None, None))[:2]\r
-            if other[0] is None:\r
-                other = (0, other[1])\r
-            if isinstance(other[0],int) and other[1] is None:\r
-                if other[0] == 0:\r
-                    return ZeroOrMore(self)\r
-                if other[0] == 1:\r
-                    return OneOrMore(self)\r
-                else:\r
-                    return self*other[0] + ZeroOrMore(self)\r
-            elif isinstance(other[0],int) and isinstance(other[1],int):\r
-                minElements, optElements = other\r
-                optElements -= minElements\r
-            else:\r
-                raise TypeError("cannot multiply 'ParserElement' and ('%s','%s') objects", type(other[0]),type(other[1]))\r
-        else:\r
-            raise TypeError("cannot multiply 'ParserElement' and '%s' objects", type(other))\r
-\r
-        if minElements < 0:\r
-            raise ValueError("cannot multiply ParserElement by negative value")\r
-        if optElements < 0:\r
-            raise ValueError("second tuple value must be greater or equal to first tuple value")\r
-        if minElements == optElements == 0:\r
-            raise ValueError("cannot multiply ParserElement by 0 or (0,0)")\r
-\r
-        if (optElements):\r
-            def makeOptionalList(n):\r
-                if n>1:\r
-                    return Optional(self + makeOptionalList(n-1))\r
-                else:\r
-                    return Optional(self)\r
-            if minElements:\r
-                if minElements == 1:\r
-                    ret = self + makeOptionalList(optElements)\r
-                else:\r
-                    ret = And([self]*minElements) + makeOptionalList(optElements)\r
-            else:\r
-                ret = makeOptionalList(optElements)\r
-        else:\r
-            if minElements == 1:\r
-                ret = self\r
-            else:\r
-                ret = And([self]*minElements)\r
-        return ret\r
-\r
-    def __rmul__(self, other):\r
-        return self.__mul__(other)\r
-\r
-    def __or__(self, other ):\r
-        """\r
-        Implementation of | operator - returns C{L{MatchFirst}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return MatchFirst( [ self, other ] )\r
-\r
-    def __ror__(self, other ):\r
-        """\r
-        Implementation of | operator when left operand is not a C{L{ParserElement}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return other | self\r
-\r
-    def __xor__(self, other ):\r
-        """\r
-        Implementation of ^ operator - returns C{L{Or}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return Or( [ self, other ] )\r
-\r
-    def __rxor__(self, other ):\r
-        """\r
-        Implementation of ^ operator when left operand is not a C{L{ParserElement}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return other ^ self\r
-\r
-    def __and__(self, other ):\r
-        """\r
-        Implementation of & operator - returns C{L{Each}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return Each( [ self, other ] )\r
-\r
-    def __rand__(self, other ):\r
-        """\r
-        Implementation of & operator when left operand is not a C{L{ParserElement}}\r
-        """\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        if not isinstance( other, ParserElement ):\r
-            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),\r
-                    SyntaxWarning, stacklevel=2)\r
-            return None\r
-        return other & self\r
-\r
-    def __invert__( self ):\r
-        """\r
-        Implementation of ~ operator - returns C{L{NotAny}}\r
-        """\r
-        return NotAny( self )\r
-\r
-    def __call__(self, name=None):\r
-        """\r
-        Shortcut for C{L{setResultsName}}, with C{listAllMatches=False}.\r
-\r
-        If C{name} is given with a trailing C{'*'} character, then C{listAllMatches} will be\r
-        passed as C{True}.\r
-\r
-        If C{name} is omitted, same as calling C{L{copy}}.\r
-\r
-        Example::\r
-            # these are equivalent\r
-            userdata = Word(alphas).setResultsName("name") + Word(nums+"-").setResultsName("socsecno")\r
-            userdata = Word(alphas)("name") + Word(nums+"-")("socsecno")\r
-        """\r
-        if name is not None:\r
-            return self.setResultsName(name)\r
-        else:\r
-            return self.copy()\r
-\r
-    def suppress( self ):\r
-        """\r
-        Suppresses the output of this C{ParserElement}; useful to keep punctuation from\r
-        cluttering up returned output.\r
-        """\r
-        return Suppress( self )\r
-\r
-    def leaveWhitespace( self ):\r
-        """\r
-        Disables the skipping of whitespace before matching the characters in the\r
-        C{ParserElement}'s defined pattern.  This is normally only used internally by\r
-        the pyparsing module, but may be needed in some whitespace-sensitive grammars.\r
-        """\r
-        self.skipWhitespace = False\r
-        return self\r
-\r
-    def setWhitespaceChars( self, chars ):\r
-        """\r
-        Overrides the default whitespace chars\r
-        """\r
-        self.skipWhitespace = True\r
-        self.whiteChars = chars\r
-        self.copyDefaultWhiteChars = False\r
-        return self\r
-\r
-    def parseWithTabs( self ):\r
-        """\r
-        Overrides default behavior to expand C{<TAB>}s to spaces before parsing the input string.\r
-        Must be called before C{parseString} when the input grammar contains elements that\r
-        match C{<TAB>} characters.\r
-        """\r
-        self.keepTabs = True\r
-        return self\r
-\r
-    def ignore( self, other ):\r
-        """\r
-        Define expression to be ignored (e.g., comments) while doing pattern\r
-        matching; may be called repeatedly, to define multiple comment or other\r
-        ignorable patterns.\r
-\r
-        Example::\r
-            patt = OneOrMore(Word(alphas))\r
-            patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj']\r
-\r
-            patt.ignore(cStyleComment)\r
-            patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj', 'lskjd']\r
-        """\r
-        if isinstance(other, basestring):\r
-            other = Suppress(other)\r
-\r
-        if isinstance( other, Suppress ):\r
-            if other not in self.ignoreExprs:\r
-                self.ignoreExprs.append(other)\r
-        else:\r
-            self.ignoreExprs.append( Suppress( other.copy() ) )\r
-        return self\r
-\r
-    def setDebugActions( self, startAction, successAction, exceptionAction ):\r
-        """\r
-        Enable display of debugging messages while doing pattern matching.\r
-        """\r
-        self.debugActions = (startAction or _defaultStartDebugAction,\r
-                             successAction or _defaultSuccessDebugAction,\r
-                             exceptionAction or _defaultExceptionDebugAction)\r
-        self.debug = True\r
-        return self\r
-\r
-    def setDebug( self, flag=True ):\r
-        """\r
-        Enable display of debugging messages while doing pattern matching.\r
-        Set C{flag} to True to enable, False to disable.\r
-\r
-        Example::\r
-            wd = Word(alphas).setName("alphaword")\r
-            integer = Word(nums).setName("numword")\r
-            term = wd | integer\r
-\r
-            # turn on debugging for wd\r
-            wd.setDebug()\r
-\r
-            OneOrMore(term).parseString("abc 123 xyz 890")\r
-\r
-        prints::\r
-            Match alphaword at loc 0(1,1)\r
-            Matched alphaword -> ['abc']\r
-            Match alphaword at loc 3(1,4)\r
-            Exception raised:Expected alphaword (at char 4), (line:1, col:5)\r
-            Match alphaword at loc 7(1,8)\r
-            Matched alphaword -> ['xyz']\r
-            Match alphaword at loc 11(1,12)\r
-            Exception raised:Expected alphaword (at char 12), (line:1, col:13)\r
-            Match alphaword at loc 15(1,16)\r
-            Exception raised:Expected alphaword (at char 15), (line:1, col:16)\r
-\r
-        The output shown is that produced by the default debug actions - custom debug actions can be\r
-        specified using L{setDebugActions}. Prior to attempting\r
-        to match the C{wd} expression, the debugging message C{"Match <exprname> at loc <n>(<line>,<col>)"}\r
-        is shown. Then if the parse succeeds, a C{"Matched"} message is shown, or an C{"Exception raised"}\r
-        message is shown. Also note the use of L{setName} to assign a human-readable name to the expression,\r
-        which makes debugging and exception messages easier to understand - for instance, the default\r
-        name created for the C{Word} expression without calling C{setName} is C{"W:(ABCD...)"}.\r
-        """\r
-        if flag:\r
-            self.setDebugActions( _defaultStartDebugAction, _defaultSuccessDebugAction, _defaultExceptionDebugAction )\r
-        else:\r
-            self.debug = False\r
-        return self\r
-\r
-    def __str__( self ):\r
-        return self.name\r
-\r
-    def __repr__( self ):\r
-        return _ustr(self)\r
-\r
-    def streamline( self ):\r
-        self.streamlined = True\r
-        self.strRepr = None\r
-        return self\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        pass\r
-\r
-    def validate( self, validateTrace=[] ):\r
-        """\r
-        Check defined expressions for valid structure, check for infinite recursive definitions.\r
-        """\r
-        self.checkRecursion( [] )\r
-\r
-    def parseFile( self, file_or_filename, parseAll=False ):\r
-        """\r
-        Execute the parse expression on the given file or filename.\r
-        If a filename is specified (instead of a file object),\r
-        the entire file is opened, read, and closed before parsing.\r
-        """\r
-        try:\r
-            file_contents = file_or_filename.read()\r
-        except AttributeError:\r
-            with open(file_or_filename, "r") as f:\r
-                file_contents = f.read()\r
-        try:\r
-            return self.parseString(file_contents, parseAll)\r
-        except ParseBaseException as exc:\r
-            if ParserElement.verbose_stacktrace:\r
-                raise\r
-            else:\r
-                # catch and re-raise exception from here, clears out pyparsing internal stack trace\r
-                raise exc\r
-\r
-    def __eq__(self,other):\r
-        if isinstance(other, ParserElement):\r
-            return self is other or vars(self) == vars(other)\r
-        elif isinstance(other, basestring):\r
-            return self.matches(other)\r
-        else:\r
-            return super(ParserElement,self)==other\r
-\r
-    def __ne__(self,other):\r
-        return not (self == other)\r
-\r
-    def __hash__(self):\r
-        return hash(id(self))\r
-\r
-    def __req__(self,other):\r
-        return self == other\r
-\r
-    def __rne__(self,other):\r
-        return not (self == other)\r
-\r
-    def matches(self, testString, parseAll=True):\r
-        """\r
-        Method for quick testing of a parser against a test string. Good for simple\r
-        inline microtests of sub expressions while building up larger parser.\r
-\r
-        Parameters:\r
-         - testString - to test against this expression for a match\r
-         - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests\r
-\r
-        Example::\r
-            expr = Word(nums)\r
-            assert expr.matches("100")\r
-        """\r
-        try:\r
-            self.parseString(_ustr(testString), parseAll=parseAll)\r
-            return True\r
-        except ParseBaseException:\r
-            return False\r
-\r
-    def runTests(self, tests, parseAll=True, comment='#', fullDump=True, printResults=True, failureTests=False):\r
-        """\r
-        Execute the parse expression on a series of test strings, showing each\r
-        test, the parsed results or where the parse failed. Quick and easy way to\r
-        run a parse expression against a list of sample strings.\r
-\r
-        Parameters:\r
-         - tests - a list of separate test strings, or a multiline string of test strings\r
-         - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests\r
-         - comment - (default=C{'#'}) - expression for indicating embedded comments in the test\r
-              string; pass None to disable comment filtering\r
-         - fullDump - (default=C{True}) - dump results as list followed by results names in nested outline;\r
-              if False, only dump nested list\r
-         - printResults - (default=C{True}) prints test output to stdout\r
-         - failureTests - (default=C{False}) indicates if these tests are expected to fail parsing\r
-\r
-        Returns: a (success, results) tuple, where success indicates that all tests succeeded\r
-        (or failed if C{failureTests} is True), and the results contain a list of lines of each\r
-        test's output\r
-\r
-        Example::\r
-            number_expr = pyparsing_common.number.copy()\r
-\r
-            result = number_expr.runTests('''\r
-                # unsigned integer\r
-                100\r
-                # negative integer\r
-                -100\r
-                # float with scientific notation\r
-                6.02e23\r
-                # integer with scientific notation\r
-                1e-12\r
-                ''')\r
-            print("Success" if result[0] else "Failed!")\r
-\r
-            result = number_expr.runTests('''\r
-                # stray character\r
-                100Z\r
-                # missing leading digit before '.'\r
-                -.100\r
-                # too many '.'\r
-                3.14.159\r
-                ''', failureTests=True)\r
-            print("Success" if result[0] else "Failed!")\r
-        prints::\r
-            # unsigned integer\r
-            100\r
-            [100]\r
-\r
-            # negative integer\r
-            -100\r
-            [-100]\r
-\r
-            # float with scientific notation\r
-            6.02e23\r
-            [6.02e+23]\r
-\r
-            # integer with scientific notation\r
-            1e-12\r
-            [1e-12]\r
-\r
-            Success\r
-\r
-            # stray character\r
-            100Z\r
-               ^\r
-            FAIL: Expected end of text (at char 3), (line:1, col:4)\r
-\r
-            # missing leading digit before '.'\r
-            -.100\r
-            ^\r
-            FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1)\r
-\r
-            # too many '.'\r
-            3.14.159\r
-                ^\r
-            FAIL: Expected end of text (at char 4), (line:1, col:5)\r
-\r
-            Success\r
-\r
-        Each test string must be on a single line. If you want to test a string that spans multiple\r
-        lines, create a test like this::\r
-\r
-            expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines")\r
-\r
-        (Note that this is a raw string literal, you must include the leading 'r'.)\r
-        """\r
-        if isinstance(tests, basestring):\r
-            tests = list(map(str.strip, tests.rstrip().splitlines()))\r
-        if isinstance(comment, basestring):\r
-            comment = Literal(comment)\r
-        allResults = []\r
-        comments = []\r
-        success = True\r
-        for t in tests:\r
-            if comment is not None and comment.matches(t, False) or comments and not t:\r
-                comments.append(t)\r
-                continue\r
-            if not t:\r
-                continue\r
-            out = ['\n'.join(comments), t]\r
-            comments = []\r
-            try:\r
-                t = t.replace(r'\n','\n')\r
-                result = self.parseString(t, parseAll=parseAll)\r
-                out.append(result.dump(full=fullDump))\r
-                success = success and not failureTests\r
-            except ParseBaseException as pe:\r
-                fatal = "(FATAL)" if isinstance(pe, ParseFatalException) else ""\r
-                if '\n' in t:\r
-                    out.append(line(pe.loc, t))\r
-                    out.append(' '*(col(pe.loc,t)-1) + '^' + fatal)\r
-                else:\r
-                    out.append(' '*pe.loc + '^' + fatal)\r
-                out.append("FAIL: " + str(pe))\r
-                success = success and failureTests\r
-                result = pe\r
-            except Exception as exc:\r
-                out.append("FAIL-EXCEPTION: " + str(exc))\r
-                success = success and failureTests\r
-                result = exc\r
-\r
-            if printResults:\r
-                if fullDump:\r
-                    out.append('')\r
-                print('\n'.join(out))\r
-\r
-            allResults.append((t, result))\r
-\r
-        return success, allResults\r
-\r
-\r
-class Token(ParserElement):\r
-    """\r
-    Abstract C{ParserElement} subclass, for defining atomic matching patterns.\r
-    """\r
-    def __init__( self ):\r
-        super(Token,self).__init__( savelist=False )\r
-\r
-\r
-class Empty(Token):\r
-    """\r
-    An empty token, will always match.\r
-    """\r
-    def __init__( self ):\r
-        super(Empty,self).__init__()\r
-        self.name = "Empty"\r
-        self.mayReturnEmpty = True\r
-        self.mayIndexError = False\r
-\r
-\r
-class NoMatch(Token):\r
-    """\r
-    A token that will never match.\r
-    """\r
-    def __init__( self ):\r
-        super(NoMatch,self).__init__()\r
-        self.name = "NoMatch"\r
-        self.mayReturnEmpty = True\r
-        self.mayIndexError = False\r
-        self.errmsg = "Unmatchable token"\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-\r
-class Literal(Token):\r
-    """\r
-    Token to exactly match a specified string.\r
-\r
-    Example::\r
-        Literal('blah').parseString('blah')  # -> ['blah']\r
-        Literal('blah').parseString('blahfooblah')  # -> ['blah']\r
-        Literal('blah').parseString('bla')  # -> Exception: Expected "blah"\r
-\r
-    For case-insensitive matching, use L{CaselessLiteral}.\r
-\r
-    For keyword matching (force word break before and after the matched string),\r
-    use L{Keyword} or L{CaselessKeyword}.\r
-    """\r
-    def __init__( self, matchString ):\r
-        super(Literal,self).__init__()\r
-        self.match = matchString\r
-        self.matchLen = len(matchString)\r
-        try:\r
-            self.firstMatchChar = matchString[0]\r
-        except IndexError:\r
-            warnings.warn("null string passed to Literal; use Empty() instead",\r
-                            SyntaxWarning, stacklevel=2)\r
-            self.__class__ = Empty\r
-        self.name = '"%s"' % _ustr(self.match)\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayReturnEmpty = False\r
-        self.mayIndexError = False\r
-\r
-    # Performance tuning: this routine gets called a *lot*\r
-    # if this is a single character match string  and the first character matches,\r
-    # short-circuit as quickly as possible, and avoid calling startswith\r
-    #~ @profile\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if (instring[loc] == self.firstMatchChar and\r
-            (self.matchLen==1 or instring.startswith(self.match,loc)) ):\r
-            return loc+self.matchLen, self.match\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-_L = Literal\r
-ParserElement._literalStringClass = Literal\r
-\r
-class Keyword(Token):\r
-    """\r
-    Token to exactly match a specified string as a keyword, that is, it must be\r
-    immediately followed by a non-keyword character.  Compare with C{L{Literal}}:\r
-     - C{Literal("if")} will match the leading C{'if'} in C{'ifAndOnlyIf'}.\r
-     - C{Keyword("if")} will not; it will only match the leading C{'if'} in C{'if x=1'}, or C{'if(y==2)'}\r
-    Accepts two optional constructor arguments in addition to the keyword string:\r
-     - C{identChars} is a string of characters that would be valid identifier characters,\r
-          defaulting to all alphanumerics + "_" and "$"\r
-     - C{caseless} allows case-insensitive matching, default is C{False}.\r
-\r
-    Example::\r
-        Keyword("start").parseString("start")  # -> ['start']\r
-        Keyword("start").parseString("starting")  # -> Exception\r
-\r
-    For case-insensitive matching, use L{CaselessKeyword}.\r
-    """\r
-    DEFAULT_KEYWORD_CHARS = alphanums+"_$"\r
-\r
-    def __init__( self, matchString, identChars=None, caseless=False ):\r
-        super(Keyword,self).__init__()\r
-        if identChars is None:\r
-            identChars = Keyword.DEFAULT_KEYWORD_CHARS\r
-        self.match = matchString\r
-        self.matchLen = len(matchString)\r
-        try:\r
-            self.firstMatchChar = matchString[0]\r
-        except IndexError:\r
-            warnings.warn("null string passed to Keyword; use Empty() instead",\r
-                            SyntaxWarning, stacklevel=2)\r
-        self.name = '"%s"' % self.match\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayReturnEmpty = False\r
-        self.mayIndexError = False\r
-        self.caseless = caseless\r
-        if caseless:\r
-            self.caselessmatch = matchString.upper()\r
-            identChars = identChars.upper()\r
-        self.identChars = set(identChars)\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if self.caseless:\r
-            if ( (instring[ loc:loc+self.matchLen ].upper() == self.caselessmatch) and\r
-                 (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen].upper() not in self.identChars) and\r
-                 (loc == 0 or instring[loc-1].upper() not in self.identChars) ):\r
-                return loc+self.matchLen, self.match\r
-        else:\r
-            if (instring[loc] == self.firstMatchChar and\r
-                (self.matchLen==1 or instring.startswith(self.match,loc)) and\r
-                (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen] not in self.identChars) and\r
-                (loc == 0 or instring[loc-1] not in self.identChars) ):\r
-                return loc+self.matchLen, self.match\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-    def copy(self):\r
-        c = super(Keyword,self).copy()\r
-        c.identChars = Keyword.DEFAULT_KEYWORD_CHARS\r
-        return c\r
-\r
-    @staticmethod\r
-    def setDefaultKeywordChars( chars ):\r
-        """Overrides the default Keyword chars\r
-        """\r
-        Keyword.DEFAULT_KEYWORD_CHARS = chars\r
-\r
-class CaselessLiteral(Literal):\r
-    """\r
-    Token to match a specified string, ignoring case of letters.\r
-    Note: the matched results will always be in the case of the given\r
-    match string, NOT the case of the input text.\r
-\r
-    Example::\r
-        OneOrMore(CaselessLiteral("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD', 'CMD']\r
-\r
-    (Contrast with example for L{CaselessKeyword}.)\r
-    """\r
-    def __init__( self, matchString ):\r
-        super(CaselessLiteral,self).__init__( matchString.upper() )\r
-        # Preserve the defining literal.\r
-        self.returnString = matchString\r
-        self.name = "'%s'" % self.returnString\r
-        self.errmsg = "Expected " + self.name\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if instring[ loc:loc+self.matchLen ].upper() == self.match:\r
-            return loc+self.matchLen, self.returnString\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-class CaselessKeyword(Keyword):\r
-    """\r
-    Caseless version of L{Keyword}.\r
-\r
-    Example::\r
-        OneOrMore(CaselessKeyword("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD']\r
-\r
-    (Contrast with example for L{CaselessLiteral}.)\r
-    """\r
-    def __init__( self, matchString, identChars=None ):\r
-        super(CaselessKeyword,self).__init__( matchString, identChars, caseless=True )\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if ( (instring[ loc:loc+self.matchLen ].upper() == self.caselessmatch) and\r
-             (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen].upper() not in self.identChars) ):\r
-            return loc+self.matchLen, self.match\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-class CloseMatch(Token):\r
-    """\r
-    A variation on L{Literal} which matches "close" matches, that is,\r
-    strings with at most 'n' mismatching characters. C{CloseMatch} takes parameters:\r
-     - C{match_string} - string to be matched\r
-     - C{maxMismatches} - (C{default=1}) maximum number of mismatches allowed to count as a match\r
-\r
-    The results from a successful parse will contain the matched text from the input string and the following named results:\r
-     - C{mismatches} - a list of the positions within the match_string where mismatches were found\r
-     - C{original} - the original match_string used to compare against the input string\r
-\r
-    If C{mismatches} is an empty list, then the match was an exact match.\r
-\r
-    Example::\r
-        patt = CloseMatch("ATCATCGAATGGA")\r
-        patt.parseString("ATCATCGAAXGGA") # -> (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']})\r
-        patt.parseString("ATCAXCGAAXGGA") # -> Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1)\r
-\r
-        # exact match\r
-        patt.parseString("ATCATCGAATGGA") # -> (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']})\r
-\r
-        # close match allowing up to 2 mismatches\r
-        patt = CloseMatch("ATCATCGAATGGA", maxMismatches=2)\r
-        patt.parseString("ATCAXCGAAXGGA") # -> (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']})\r
-    """\r
-    def __init__(self, match_string, maxMismatches=1):\r
-        super(CloseMatch,self).__init__()\r
-        self.name = match_string\r
-        self.match_string = match_string\r
-        self.maxMismatches = maxMismatches\r
-        self.errmsg = "Expected %r (with up to %d mismatches)" % (self.match_string, self.maxMismatches)\r
-        self.mayIndexError = False\r
-        self.mayReturnEmpty = False\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        start = loc\r
-        instrlen = len(instring)\r
-        maxloc = start + len(self.match_string)\r
-\r
-        if maxloc <= instrlen:\r
-            match_string = self.match_string\r
-            match_stringloc = 0\r
-            mismatches = []\r
-            maxMismatches = self.maxMismatches\r
-\r
-            for match_stringloc,s_m in enumerate(zip(instring[loc:maxloc], self.match_string)):\r
-                src,mat = s_m\r
-                if src != mat:\r
-                    mismatches.append(match_stringloc)\r
-                    if len(mismatches) > maxMismatches:\r
-                        break\r
-            else:\r
-                loc = match_stringloc + 1\r
-                results = ParseResults([instring[start:loc]])\r
-                results['original'] = self.match_string\r
-                results['mismatches'] = mismatches\r
-                return loc, results\r
-\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-\r
-class Word(Token):\r
-    """\r
-    Token for matching words composed of allowed character sets.\r
-    Defined with string containing all allowed initial characters,\r
-    an optional string containing allowed body characters (if omitted,\r
-    defaults to the initial character set), and an optional minimum,\r
-    maximum, and/or exact length.  The default value for C{min} is 1 (a\r
-    minimum value < 1 is not valid); the default values for C{max} and C{exact}\r
-    are 0, meaning no maximum or exact length restriction. An optional\r
-    C{excludeChars} parameter can list characters that might be found in\r
-    the input C{bodyChars} string; useful to define a word of all printables\r
-    except for one or two characters, for instance.\r
-\r
-    L{srange} is useful for defining custom character set strings for defining\r
-    C{Word} expressions, using range notation from regular expression character sets.\r
-\r
-    A common mistake is to use C{Word} to match a specific literal string, as in\r
-    C{Word("Address")}. Remember that C{Word} uses the string argument to define\r
-    I{sets} of matchable characters. This expression would match "Add", "AAA",\r
-    "dAred", or any other word made up of the characters 'A', 'd', 'r', 'e', and 's'.\r
-    To match an exact literal string, use L{Literal} or L{Keyword}.\r
-\r
-    pyparsing includes helper strings for building Words:\r
-     - L{alphas}\r
-     - L{nums}\r
-     - L{alphanums}\r
-     - L{hexnums}\r
-     - L{alphas8bit} (alphabetic characters in ASCII range 128-255 - accented, tilded, umlauted, etc.)\r
-     - L{punc8bit} (non-alphabetic characters in ASCII range 128-255 - currency, symbols, superscripts, diacriticals, etc.)\r
-     - L{printables} (any non-whitespace character)\r
-\r
-    Example::\r
-        # a word composed of digits\r
-        integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9"))\r
-\r
-        # a word with a leading capital, and zero or more lowercase\r
-        capital_word = Word(alphas.upper(), alphas.lower())\r
-\r
-        # hostnames are alphanumeric, with leading alpha, and '-'\r
-        hostname = Word(alphas, alphanums+'-')\r
-\r
-        # roman numeral (not a strict parser, accepts invalid mix of characters)\r
-        roman = Word("IVXLCDM")\r
-\r
-        # any string of non-whitespace characters, except for ','\r
-        csv_value = Word(printables, excludeChars=",")\r
-    """\r
-    def __init__( self, initChars, bodyChars=None, min=1, max=0, exact=0, asKeyword=False, excludeChars=None ):\r
-        super(Word,self).__init__()\r
-        if excludeChars:\r
-            initChars = ''.join(c for c in initChars if c not in excludeChars)\r
-            if bodyChars:\r
-                bodyChars = ''.join(c for c in bodyChars if c not in excludeChars)\r
-        self.initCharsOrig = initChars\r
-        self.initChars = set(initChars)\r
-        if bodyChars :\r
-            self.bodyCharsOrig = bodyChars\r
-            self.bodyChars = set(bodyChars)\r
-        else:\r
-            self.bodyCharsOrig = initChars\r
-            self.bodyChars = set(initChars)\r
-\r
-        self.maxSpecified = max > 0\r
-\r
-        if min < 1:\r
-            raise ValueError("cannot specify a minimum length < 1; use Optional(Word()) if zero-length word is permitted")\r
-\r
-        self.minLen = min\r
-\r
-        if max > 0:\r
-            self.maxLen = max\r
-        else:\r
-            self.maxLen = _MAX_INT\r
-\r
-        if exact > 0:\r
-            self.maxLen = exact\r
-            self.minLen = exact\r
-\r
-        self.name = _ustr(self)\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayIndexError = False\r
-        self.asKeyword = asKeyword\r
-\r
-        if ' ' not in self.initCharsOrig+self.bodyCharsOrig and (min==1 and max==0 and exact==0):\r
-            if self.bodyCharsOrig == self.initCharsOrig:\r
-                self.reString = "[%s]+" % _escapeRegexRangeChars(self.initCharsOrig)\r
-            elif len(self.initCharsOrig) == 1:\r
-                self.reString = "%s[%s]*" % \\r
-                                      (re.escape(self.initCharsOrig),\r
-                                      _escapeRegexRangeChars(self.bodyCharsOrig),)\r
-            else:\r
-                self.reString = "[%s][%s]*" % \\r
-                                      (_escapeRegexRangeChars(self.initCharsOrig),\r
-                                      _escapeRegexRangeChars(self.bodyCharsOrig),)\r
-            if self.asKeyword:\r
-                self.reString = r"\b"+self.reString+r"\b"\r
-            try:\r
-                self.re = re.compile( self.reString )\r
-            except Exception:\r
-                self.re = None\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if self.re:\r
-            result = self.re.match(instring,loc)\r
-            if not result:\r
-                raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-            loc = result.end()\r
-            return loc, result.group()\r
-\r
-        if not(instring[ loc ] in self.initChars):\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        start = loc\r
-        loc += 1\r
-        instrlen = len(instring)\r
-        bodychars = self.bodyChars\r
-        maxloc = start + self.maxLen\r
-        maxloc = min( maxloc, instrlen )\r
-        while loc < maxloc and instring[loc] in bodychars:\r
-            loc += 1\r
-\r
-        throwException = False\r
-        if loc - start < self.minLen:\r
-            throwException = True\r
-        if self.maxSpecified and loc < instrlen and instring[loc] in bodychars:\r
-            throwException = True\r
-        if self.asKeyword:\r
-            if (start>0 and instring[start-1] in bodychars) or (loc<instrlen and instring[loc] in bodychars):\r
-                throwException = True\r
-\r
-        if throwException:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        return loc, instring[start:loc]\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(Word,self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-\r
-        if self.strRepr is None:\r
-\r
-            def charsAsStr(s):\r
-                if len(s)>4:\r
-                    return s[:4]+"..."\r
-                else:\r
-                    return s\r
-\r
-            if ( self.initCharsOrig != self.bodyCharsOrig ):\r
-                self.strRepr = "W:(%s,%s)" % ( charsAsStr(self.initCharsOrig), charsAsStr(self.bodyCharsOrig) )\r
-            else:\r
-                self.strRepr = "W:(%s)" % charsAsStr(self.initCharsOrig)\r
-\r
-        return self.strRepr\r
-\r
-\r
-class Char(Word):\r
-    """\r
-    A short-cut class for defining C{Word(characters, exact=1)},\r
-    when defining a match of any single character in a string of characters.\r
-    """\r
-    def __init__(self, charset):\r
-        super(Char, self).__init__(charset, exact=1)\r
-        self.reString = "[%s]" % _escapeRegexRangeChars(self.initCharsOrig)\r
-        self.re = re.compile( self.reString )\r
-\r
-\r
-class Regex(Token):\r
-    r"""\r
-    Token for matching strings that match a given regular expression.\r
-    Defined with string specifying the regular expression in a form recognized by the inbuilt Python re module.\r
-    If the given regex contains named groups (defined using C{(?P<name>...)}), these will be preserved as\r
-    named parse results.\r
-\r
-    Example::\r
-        realnum = Regex(r"[+-]?\d+\.\d*")\r
-        date = Regex(r'(?P<year>\d{4})-(?P<month>\d\d?)-(?P<day>\d\d?)')\r
-        # ref: http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression\r
-        roman = Regex(r"M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})")\r
-\r
-        make_html = Regex(r"(\w+):(.*?):").sub(r"<\1>\2</\1>")\r
-        print(make_html.transformString("h1:main title:"))\r
-        # prints "<h1>main title</h1>"\r
-    """\r
-    compiledREtype = type(re.compile("[A-Z]"))\r
-    def __init__( self, pattern, flags=0, asGroupList=False, asMatch=False):\r
-        """The parameters C{pattern} and C{flags} are passed to the C{re.compile()} function as-is. See the Python C{re} module for an explanation of the acceptable patterns and flags."""\r
-        super(Regex,self).__init__()\r
-\r
-        if isinstance(pattern, basestring):\r
-            if not pattern:\r
-                warnings.warn("null string passed to Regex; use Empty() instead",\r
-                        SyntaxWarning, stacklevel=2)\r
-\r
-            self.pattern = pattern\r
-            self.flags = flags\r
-\r
-            try:\r
-                self.re = re.compile(self.pattern, self.flags)\r
-                self.reString = self.pattern\r
-            except sre_constants.error:\r
-                warnings.warn("invalid pattern (%s) passed to Regex" % pattern,\r
-                    SyntaxWarning, stacklevel=2)\r
-                raise\r
-\r
-        elif isinstance(pattern, Regex.compiledREtype):\r
-            self.re = pattern\r
-            self.pattern = \\r
-            self.reString = str(pattern)\r
-            self.flags = flags\r
-\r
-        else:\r
-            raise ValueError("Regex may only be constructed with a string or a compiled RE object")\r
-\r
-        self.name = _ustr(self)\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayIndexError = False\r
-        self.mayReturnEmpty = True\r
-        self.asGroupList = asGroupList\r
-        self.asMatch = asMatch\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        result = self.re.match(instring,loc)\r
-        if not result:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        loc = result.end()\r
-        d = result.groupdict()\r
-        if self.asMatch:\r
-            ret = result\r
-        elif self.asGroupList:\r
-            ret = result.groups()\r
-        else:\r
-            ret = ParseResults(result.group())\r
-            if d:\r
-                for k in d:\r
-                    ret[k] = d[k]\r
-        return loc,ret\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(Regex,self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "Re:(%s)" % repr(self.pattern)\r
-\r
-        return self.strRepr\r
-\r
-    def sub(self, repl):\r
-        """\r
-        Return Regex with an attached parse action to transform the parsed\r
-        result as if called using C{re.sub(expr, repl, string)}.\r
-        """\r
-        if self.asGroupList:\r
-            warnings.warn("cannot use sub() with Regex(asGroupList=True)",\r
-                           SyntaxWarning, stacklevel=2)\r
-            raise SyntaxError()\r
-\r
-        if self.asMatch and callable(repl):\r
-            warnings.warn("cannot use sub() with a callable with Regex(asMatch=True)",\r
-                           SyntaxWarning, stacklevel=2)\r
-            raise SyntaxError()\r
-\r
-        if self.asMatch:\r
-            def pa(tokens):\r
-                return tokens[0].expand(repl)\r
-        else:\r
-            def pa(tokens):\r
-                return self.re.sub(repl, tokens[0])\r
-        return self.addParseAction(pa)\r
-\r
-class QuotedString(Token):\r
-    r"""\r
-    Token for matching strings that are delimited by quoting characters.\r
-\r
-    Defined with the following parameters:\r
-        - quoteChar - string of one or more characters defining the quote delimiting string\r
-        - escChar - character to escape quotes, typically backslash (default=C{None})\r
-        - escQuote - special quote sequence to escape an embedded quote string (such as SQL's "" to escape an embedded ") (default=C{None})\r
-        - multiline - boolean indicating whether quotes can span multiple lines (default=C{False})\r
-        - unquoteResults - boolean indicating whether the matched text should be unquoted (default=C{True})\r
-        - endQuoteChar - string of one or more characters defining the end of the quote delimited string (default=C{None} => same as quoteChar)\r
-        - convertWhitespaceEscapes - convert escaped whitespace (C{'\t'}, C{'\n'}, etc.) to actual whitespace (default=C{True})\r
-\r
-    Example::\r
-        qs = QuotedString('"')\r
-        print(qs.searchString('lsjdf "This is the quote" sldjf'))\r
-        complex_qs = QuotedString('{{', endQuoteChar='}}')\r
-        print(complex_qs.searchString('lsjdf {{This is the "quote"}} sldjf'))\r
-        sql_qs = QuotedString('"', escQuote='""')\r
-        print(sql_qs.searchString('lsjdf "This is the quote with ""embedded"" quotes" sldjf'))\r
-    prints::\r
-        [['This is the quote']]\r
-        [['This is the "quote"']]\r
-        [['This is the quote with "embedded" quotes']]\r
-    """\r
-    def __init__( self, quoteChar, escChar=None, escQuote=None, multiline=False, unquoteResults=True, endQuoteChar=None, convertWhitespaceEscapes=True):\r
-        super(QuotedString,self).__init__()\r
-\r
-        # remove white space from quote chars - wont work anyway\r
-        quoteChar = quoteChar.strip()\r
-        if not quoteChar:\r
-            warnings.warn("quoteChar cannot be the empty string",SyntaxWarning,stacklevel=2)\r
-            raise SyntaxError()\r
-\r
-        if endQuoteChar is None:\r
-            endQuoteChar = quoteChar\r
-        else:\r
-            endQuoteChar = endQuoteChar.strip()\r
-            if not endQuoteChar:\r
-                warnings.warn("endQuoteChar cannot be the empty string",SyntaxWarning,stacklevel=2)\r
-                raise SyntaxError()\r
-\r
-        self.quoteChar = quoteChar\r
-        self.quoteCharLen = len(quoteChar)\r
-        self.firstQuoteChar = quoteChar[0]\r
-        self.endQuoteChar = endQuoteChar\r
-        self.endQuoteCharLen = len(endQuoteChar)\r
-        self.escChar = escChar\r
-        self.escQuote = escQuote\r
-        self.unquoteResults = unquoteResults\r
-        self.convertWhitespaceEscapes = convertWhitespaceEscapes\r
-\r
-        if multiline:\r
-            self.flags = re.MULTILINE | re.DOTALL\r
-            self.pattern = r'%s(?:[^%s%s]' % \\r
-                ( re.escape(self.quoteChar),\r
-                  _escapeRegexRangeChars(self.endQuoteChar[0]),\r
-                  (escChar is not None and _escapeRegexRangeChars(escChar) or '') )\r
-        else:\r
-            self.flags = 0\r
-            self.pattern = r'%s(?:[^%s\n\r%s]' % \\r
-                ( re.escape(self.quoteChar),\r
-                  _escapeRegexRangeChars(self.endQuoteChar[0]),\r
-                  (escChar is not None and _escapeRegexRangeChars(escChar) or '') )\r
-        if len(self.endQuoteChar) > 1:\r
-            self.pattern += (\r
-                '|(?:' + ')|(?:'.join("%s[^%s]" % (re.escape(self.endQuoteChar[:i]),\r
-                                               _escapeRegexRangeChars(self.endQuoteChar[i]))\r
-                                    for i in range(len(self.endQuoteChar)-1,0,-1)) + ')'\r
-                )\r
-        if escQuote:\r
-            self.pattern += (r'|(?:%s)' % re.escape(escQuote))\r
-        if escChar:\r
-            self.pattern += (r'|(?:%s.)' % re.escape(escChar))\r
-            self.escCharReplacePattern = re.escape(self.escChar)+"(.)"\r
-        self.pattern += (r')*%s' % re.escape(self.endQuoteChar))\r
-\r
-        try:\r
-            self.re = re.compile(self.pattern, self.flags)\r
-            self.reString = self.pattern\r
-        except sre_constants.error:\r
-            warnings.warn("invalid pattern (%s) passed to Regex" % self.pattern,\r
-                SyntaxWarning, stacklevel=2)\r
-            raise\r
-\r
-        self.name = _ustr(self)\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayIndexError = False\r
-        self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        result = instring[loc] == self.firstQuoteChar and self.re.match(instring,loc) or None\r
-        if not result:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        loc = result.end()\r
-        ret = result.group()\r
-\r
-        if self.unquoteResults:\r
-\r
-            # strip off quotes\r
-            ret = ret[self.quoteCharLen:-self.endQuoteCharLen]\r
-\r
-            if isinstance(ret,basestring):\r
-                # replace escaped whitespace\r
-                if '\\' in ret and self.convertWhitespaceEscapes:\r
-                    ws_map = {\r
-                        r'\t' : '\t',\r
-                        r'\n' : '\n',\r
-                        r'\f' : '\f',\r
-                        r'\r' : '\r',\r
-                    }\r
-                    for wslit,wschar in ws_map.items():\r
-                        ret = ret.replace(wslit, wschar)\r
-\r
-                # replace escaped characters\r
-                if self.escChar:\r
-                    ret = re.sub(self.escCharReplacePattern, r"\g<1>", ret)\r
-\r
-                # replace escaped quotes\r
-                if self.escQuote:\r
-                    ret = ret.replace(self.escQuote, self.endQuoteChar)\r
-\r
-        return loc, ret\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(QuotedString,self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "quoted string, starting with %s ending with %s" % (self.quoteChar, self.endQuoteChar)\r
-\r
-        return self.strRepr\r
-\r
-\r
-class CharsNotIn(Token):\r
-    """\r
-    Token for matching words composed of characters I{not} in a given set (will\r
-    include whitespace in matched characters if not listed in the provided exclusion set - see example).\r
-    Defined with string containing all disallowed characters, and an optional\r
-    minimum, maximum, and/or exact length.  The default value for C{min} is 1 (a\r
-    minimum value < 1 is not valid); the default values for C{max} and C{exact}\r
-    are 0, meaning no maximum or exact length restriction.\r
-\r
-    Example::\r
-        # define a comma-separated-value as anything that is not a ','\r
-        csv_value = CharsNotIn(',')\r
-        print(delimitedList(csv_value).parseString("dkls,lsdkjf,s12 34,@!#,213"))\r
-    prints::\r
-        ['dkls', 'lsdkjf', 's12 34', '@!#', '213']\r
-    """\r
-    def __init__( self, notChars, min=1, max=0, exact=0 ):\r
-        super(CharsNotIn,self).__init__()\r
-        self.skipWhitespace = False\r
-        self.notChars = notChars\r
-\r
-        if min < 1:\r
-            raise ValueError("cannot specify a minimum length < 1; use Optional(CharsNotIn()) if zero-length char group is permitted")\r
-\r
-        self.minLen = min\r
-\r
-        if max > 0:\r
-            self.maxLen = max\r
-        else:\r
-            self.maxLen = _MAX_INT\r
-\r
-        if exact > 0:\r
-            self.maxLen = exact\r
-            self.minLen = exact\r
-\r
-        self.name = _ustr(self)\r
-        self.errmsg = "Expected " + self.name\r
-        self.mayReturnEmpty = ( self.minLen == 0 )\r
-        self.mayIndexError = False\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if instring[loc] in self.notChars:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        start = loc\r
-        loc += 1\r
-        notchars = self.notChars\r
-        maxlen = min( start+self.maxLen, len(instring) )\r
-        while loc < maxlen and \\r
-              (instring[loc] not in notchars):\r
-            loc += 1\r
-\r
-        if loc - start < self.minLen:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        return loc, instring[start:loc]\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(CharsNotIn, self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-        if self.strRepr is None:\r
-            if len(self.notChars) > 4:\r
-                self.strRepr = "!W:(%s...)" % self.notChars[:4]\r
-            else:\r
-                self.strRepr = "!W:(%s)" % self.notChars\r
-\r
-        return self.strRepr\r
-\r
-class White(Token):\r
-    """\r
-    Special matching class for matching whitespace.  Normally, whitespace is ignored\r
-    by pyparsing grammars.  This class is included when some whitespace structures\r
-    are significant.  Define with a string containing the whitespace characters to be\r
-    matched; default is C{" \\t\\r\\n"}.  Also takes optional C{min}, C{max}, and C{exact} arguments,\r
-    as defined for the C{L{Word}} class.\r
-    """\r
-    whiteStrs = {\r
-        " " : "<SPC>",\r
-        "\t": "<TAB>",\r
-        "\n": "<LF>",\r
-        "\r": "<CR>",\r
-        "\f": "<FF>",\r
-        }\r
-    def __init__(self, ws=" \t\r\n", min=1, max=0, exact=0):\r
-        super(White,self).__init__()\r
-        self.matchWhite = ws\r
-        self.setWhitespaceChars( "".join(c for c in self.whiteChars if c not in self.matchWhite) )\r
-        #~ self.leaveWhitespace()\r
-        self.name = ("".join(White.whiteStrs[c] for c in self.matchWhite))\r
-        self.mayReturnEmpty = True\r
-        self.errmsg = "Expected " + self.name\r
-\r
-        self.minLen = min\r
-\r
-        if max > 0:\r
-            self.maxLen = max\r
-        else:\r
-            self.maxLen = _MAX_INT\r
-\r
-        if exact > 0:\r
-            self.maxLen = exact\r
-            self.minLen = exact\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if not(instring[ loc ] in self.matchWhite):\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-        start = loc\r
-        loc += 1\r
-        maxloc = start + self.maxLen\r
-        maxloc = min( maxloc, len(instring) )\r
-        while loc < maxloc and instring[loc] in self.matchWhite:\r
-            loc += 1\r
-\r
-        if loc - start < self.minLen:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        return loc, instring[start:loc]\r
-\r
-\r
-class _PositionToken(Token):\r
-    def __init__( self ):\r
-        super(_PositionToken,self).__init__()\r
-        self.name=self.__class__.__name__\r
-        self.mayReturnEmpty = True\r
-        self.mayIndexError = False\r
-\r
-class GoToColumn(_PositionToken):\r
-    """\r
-    Token to advance to a specific column of input text; useful for tabular report scraping.\r
-    """\r
-    def __init__( self, colno ):\r
-        super(GoToColumn,self).__init__()\r
-        self.col = colno\r
-\r
-    def preParse( self, instring, loc ):\r
-        if col(loc,instring) != self.col:\r
-            instrlen = len(instring)\r
-            if self.ignoreExprs:\r
-                loc = self._skipIgnorables( instring, loc )\r
-            while loc < instrlen and instring[loc].isspace() and col( loc, instring ) != self.col :\r
-                loc += 1\r
-        return loc\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        thiscol = col( loc, instring )\r
-        if thiscol > self.col:\r
-            raise ParseException( instring, loc, "Text not in expected column", self )\r
-        newloc = loc + self.col - thiscol\r
-        ret = instring[ loc: newloc ]\r
-        return newloc, ret\r
-\r
-\r
-class LineStart(_PositionToken):\r
-    """\r
-    Matches if current position is at the beginning of a line within the parse string\r
-\r
-    Example::\r
-\r
-        test = '''\\r
-        AAA this line\r
-        AAA and this line\r
-          AAA but not this one\r
-        B AAA and definitely not this one\r
-        '''\r
-\r
-        for t in (LineStart() + 'AAA' + restOfLine).searchString(test):\r
-            print(t)\r
-\r
-    Prints::\r
-        ['AAA', ' this line']\r
-        ['AAA', ' and this line']\r
-\r
-    """\r
-    def __init__( self ):\r
-        super(LineStart,self).__init__()\r
-        self.errmsg = "Expected start of line"\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if col(loc, instring) == 1:\r
-            return loc, []\r
-        raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-class LineEnd(_PositionToken):\r
-    """\r
-    Matches if current position is at the end of a line within the parse string\r
-    """\r
-    def __init__( self ):\r
-        super(LineEnd,self).__init__()\r
-        self.setWhitespaceChars( ParserElement.DEFAULT_WHITE_CHARS.replace("\n","") )\r
-        self.errmsg = "Expected end of line"\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if loc<len(instring):\r
-            if instring[loc] == "\n":\r
-                return loc+1, "\n"\r
-            else:\r
-                raise ParseException(instring, loc, self.errmsg, self)\r
-        elif loc == len(instring):\r
-            return loc+1, []\r
-        else:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-class StringStart(_PositionToken):\r
-    """\r
-    Matches if current position is at the beginning of the parse string\r
-    """\r
-    def __init__( self ):\r
-        super(StringStart,self).__init__()\r
-        self.errmsg = "Expected start of text"\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if loc != 0:\r
-            # see if entire string up to here is just whitespace and ignoreables\r
-            if loc != self.preParse( instring, 0 ):\r
-                raise ParseException(instring, loc, self.errmsg, self)\r
-        return loc, []\r
-\r
-class StringEnd(_PositionToken):\r
-    """\r
-    Matches if current position is at the end of the parse string\r
-    """\r
-    def __init__( self ):\r
-        super(StringEnd,self).__init__()\r
-        self.errmsg = "Expected end of text"\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if loc < len(instring):\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-        elif loc == len(instring):\r
-            return loc+1, []\r
-        elif loc > len(instring):\r
-            return loc, []\r
-        else:\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-class WordStart(_PositionToken):\r
-    """\r
-    Matches if the current position is at the beginning of a Word, and\r
-    is not preceded by any character in a given set of C{wordChars}\r
-    (default=C{printables}). To emulate the C{\b} behavior of regular expressions,\r
-    use C{WordStart(alphanums)}. C{WordStart} will also match at the beginning of\r
-    the string being parsed, or at the beginning of a line.\r
-    """\r
-    def __init__(self, wordChars = printables):\r
-        super(WordStart,self).__init__()\r
-        self.wordChars = set(wordChars)\r
-        self.errmsg = "Not at the start of a word"\r
-\r
-    def parseImpl(self, instring, loc, doActions=True ):\r
-        if loc != 0:\r
-            if (instring[loc-1] in self.wordChars or\r
-                instring[loc] not in self.wordChars):\r
-                raise ParseException(instring, loc, self.errmsg, self)\r
-        return loc, []\r
-\r
-class WordEnd(_PositionToken):\r
-    """\r
-    Matches if the current position is at the end of a Word, and\r
-    is not followed by any character in a given set of C{wordChars}\r
-    (default=C{printables}). To emulate the C{\b} behavior of regular expressions,\r
-    use C{WordEnd(alphanums)}. C{WordEnd} will also match at the end of\r
-    the string being parsed, or at the end of a line.\r
-    """\r
-    def __init__(self, wordChars = printables):\r
-        super(WordEnd,self).__init__()\r
-        self.wordChars = set(wordChars)\r
-        self.skipWhitespace = False\r
-        self.errmsg = "Not at the end of a word"\r
-\r
-    def parseImpl(self, instring, loc, doActions=True ):\r
-        instrlen = len(instring)\r
-        if instrlen>0 and loc<instrlen:\r
-            if (instring[loc] in self.wordChars or\r
-                instring[loc-1] not in self.wordChars):\r
-                raise ParseException(instring, loc, self.errmsg, self)\r
-        return loc, []\r
-\r
-\r
-class ParseExpression(ParserElement):\r
-    """\r
-    Abstract subclass of ParserElement, for combining and post-processing parsed tokens.\r
-    """\r
-    def __init__( self, exprs, savelist = False ):\r
-        super(ParseExpression,self).__init__(savelist)\r
-        if isinstance( exprs, _generatorType ):\r
-            exprs = list(exprs)\r
-\r
-        if isinstance( exprs, basestring ):\r
-            self.exprs = [ ParserElement._literalStringClass( exprs ) ]\r
-        elif isinstance( exprs, Iterable ):\r
-            exprs = list(exprs)\r
-            # if sequence of strings provided, wrap with Literal\r
-            if all(isinstance(expr, basestring) for expr in exprs):\r
-                exprs = map(ParserElement._literalStringClass, exprs)\r
-            self.exprs = list(exprs)\r
-        else:\r
-            try:\r
-                self.exprs = list( exprs )\r
-            except TypeError:\r
-                self.exprs = [ exprs ]\r
-        self.callPreparse = False\r
-\r
-    def __getitem__( self, i ):\r
-        return self.exprs[i]\r
-\r
-    def append( self, other ):\r
-        self.exprs.append( other )\r
-        self.strRepr = None\r
-        return self\r
-\r
-    def leaveWhitespace( self ):\r
-        """Extends C{leaveWhitespace} defined in base class, and also invokes C{leaveWhitespace} on\r
-           all contained expressions."""\r
-        self.skipWhitespace = False\r
-        self.exprs = [ e.copy() for e in self.exprs ]\r
-        for e in self.exprs:\r
-            e.leaveWhitespace()\r
-        return self\r
-\r
-    def ignore( self, other ):\r
-        if isinstance( other, Suppress ):\r
-            if other not in self.ignoreExprs:\r
-                super( ParseExpression, self).ignore( other )\r
-                for e in self.exprs:\r
-                    e.ignore( self.ignoreExprs[-1] )\r
-        else:\r
-            super( ParseExpression, self).ignore( other )\r
-            for e in self.exprs:\r
-                e.ignore( self.ignoreExprs[-1] )\r
-        return self\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(ParseExpression,self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.exprs) )\r
-        return self.strRepr\r
-\r
-    def streamline( self ):\r
-        super(ParseExpression,self).streamline()\r
-\r
-        for e in self.exprs:\r
-            e.streamline()\r
-\r
-        # collapse nested And's of the form And( And( And( a,b), c), d) to And( a,b,c,d )\r
-        # but only if there are no parse actions or resultsNames on the nested And's\r
-        # (likewise for Or's and MatchFirst's)\r
-        if ( len(self.exprs) == 2 ):\r
-            other = self.exprs[0]\r
-            if ( isinstance( other, self.__class__ ) and\r
-                  not(other.parseAction) and\r
-                  other.resultsName is None and\r
-                  not other.debug ):\r
-                self.exprs = other.exprs[:] + [ self.exprs[1] ]\r
-                self.strRepr = None\r
-                self.mayReturnEmpty |= other.mayReturnEmpty\r
-                self.mayIndexError  |= other.mayIndexError\r
-\r
-            other = self.exprs[-1]\r
-            if ( isinstance( other, self.__class__ ) and\r
-                  not(other.parseAction) and\r
-                  other.resultsName is None and\r
-                  not other.debug ):\r
-                self.exprs = self.exprs[:-1] + other.exprs[:]\r
-                self.strRepr = None\r
-                self.mayReturnEmpty |= other.mayReturnEmpty\r
-                self.mayIndexError  |= other.mayIndexError\r
-\r
-        self.errmsg = "Expected " + _ustr(self)\r
-\r
-        return self\r
-\r
-    def setResultsName( self, name, listAllMatches=False ):\r
-        ret = super(ParseExpression,self).setResultsName(name,listAllMatches)\r
-        return ret\r
-\r
-    def validate( self, validateTrace=[] ):\r
-        tmp = validateTrace[:]+[self]\r
-        for e in self.exprs:\r
-            e.validate(tmp)\r
-        self.checkRecursion( [] )\r
-\r
-    def copy(self):\r
-        ret = super(ParseExpression,self).copy()\r
-        ret.exprs = [e.copy() for e in self.exprs]\r
-        return ret\r
-\r
-class And(ParseExpression):\r
-    """\r
-    Requires all given C{ParseExpression}s to be found in the given order.\r
-    Expressions may be separated by whitespace.\r
-    May be constructed using the C{'+'} operator.\r
-    May also be constructed using the C{'-'} operator, which will suppress backtracking.\r
-\r
-    Example::\r
-        integer = Word(nums)\r
-        name_expr = OneOrMore(Word(alphas))\r
-\r
-        expr = And([integer("id"),name_expr("name"),integer("age")])\r
-        # more easily written as:\r
-        expr = integer("id") + name_expr("name") + integer("age")\r
-    """\r
-\r
-    class _ErrorStop(Empty):\r
-        def __init__(self, *args, **kwargs):\r
-            super(And._ErrorStop,self).__init__(*args, **kwargs)\r
-            self.name = '-'\r
-            self.leaveWhitespace()\r
-\r
-    def __init__( self, exprs, savelist = True ):\r
-        super(And,self).__init__(exprs, savelist)\r
-        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)\r
-        self.setWhitespaceChars( self.exprs[0].whiteChars )\r
-        self.skipWhitespace = self.exprs[0].skipWhitespace\r
-        self.callPreparse = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        # pass False as last arg to _parse for first element, since we already\r
-        # pre-parsed the string as part of our And pre-parsing\r
-        loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )\r
-        errorStop = False\r
-        for e in self.exprs[1:]:\r
-            if isinstance(e, And._ErrorStop):\r
-                errorStop = True\r
-                continue\r
-            if errorStop:\r
-                try:\r
-                    loc, exprtokens = e._parse( instring, loc, doActions )\r
-                except ParseSyntaxException:\r
-                    raise\r
-                except ParseBaseException as pe:\r
-                    pe.__traceback__ = None\r
-                    raise ParseSyntaxException._from_exception(pe)\r
-                except IndexError:\r
-                    raise ParseSyntaxException(instring, len(instring), self.errmsg, self)\r
-            else:\r
-                loc, exprtokens = e._parse( instring, loc, doActions )\r
-            if exprtokens or exprtokens.haskeys():\r
-                resultlist += exprtokens\r
-        return loc, resultlist\r
-\r
-    def __iadd__(self, other ):\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        return self.append( other ) #And( [ self, other ] )\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        subRecCheckList = parseElementList[:] + [ self ]\r
-        for e in self.exprs:\r
-            e.checkRecursion( subRecCheckList )\r
-            if not e.mayReturnEmpty:\r
-                break\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "{" + " ".join(_ustr(e) for e in self.exprs) + "}"\r
-\r
-        return self.strRepr\r
-\r
-\r
-class Or(ParseExpression):\r
-    """\r
-    Requires that at least one C{ParseExpression} is found.\r
-    If two expressions match, the expression that matches the longest string will be used.\r
-    May be constructed using the C{'^'} operator.\r
-\r
-    Example::\r
-        # construct Or using '^' operator\r
-\r
-        number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums))\r
-        print(number.searchString("123 3.1416 789"))\r
-    prints::\r
-        [['123'], ['3.1416'], ['789']]\r
-    """\r
-    def __init__( self, exprs, savelist = False ):\r
-        super(Or,self).__init__(exprs, savelist)\r
-        if self.exprs:\r
-            self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs)\r
-        else:\r
-            self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        maxExcLoc = -1\r
-        maxException = None\r
-        matches = []\r
-        for e in self.exprs:\r
-            try:\r
-                loc2 = e.tryParse( instring, loc )\r
-            except ParseException as err:\r
-                err.__traceback__ = None\r
-                if err.loc > maxExcLoc:\r
-                    maxException = err\r
-                    maxExcLoc = err.loc\r
-            except IndexError:\r
-                if len(instring) > maxExcLoc:\r
-                    maxException = ParseException(instring,len(instring),e.errmsg,self)\r
-                    maxExcLoc = len(instring)\r
-            else:\r
-                # save match among all matches, to retry longest to shortest\r
-                matches.append((loc2, e))\r
-\r
-        if matches:\r
-            matches.sort(key=lambda x: -x[0])\r
-            for _,e in matches:\r
-                try:\r
-                    return e._parse( instring, loc, doActions )\r
-                except ParseException as err:\r
-                    err.__traceback__ = None\r
-                    if err.loc > maxExcLoc:\r
-                        maxException = err\r
-                        maxExcLoc = err.loc\r
-\r
-        if maxException is not None:\r
-            maxException.msg = self.errmsg\r
-            raise maxException\r
-        else:\r
-            raise ParseException(instring, loc, "no defined alternatives to match", self)\r
-\r
-\r
-    def __ixor__(self, other ):\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        return self.append( other ) #Or( [ self, other ] )\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "{" + " ^ ".join(_ustr(e) for e in self.exprs) + "}"\r
-\r
-        return self.strRepr\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        subRecCheckList = parseElementList[:] + [ self ]\r
-        for e in self.exprs:\r
-            e.checkRecursion( subRecCheckList )\r
-\r
-\r
-class MatchFirst(ParseExpression):\r
-    """\r
-    Requires that at least one C{ParseExpression} is found.\r
-    If two expressions match, the first one listed is the one that will match.\r
-    May be constructed using the C{'|'} operator.\r
-\r
-    Example::\r
-        # construct MatchFirst using '|' operator\r
-\r
-        # watch the order of expressions to match\r
-        number = Word(nums) | Combine(Word(nums) + '.' + Word(nums))\r
-        print(number.searchString("123 3.1416 789")) #  Fail! -> [['123'], ['3'], ['1416'], ['789']]\r
-\r
-        # put more selective expression first\r
-        number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums)\r
-        print(number.searchString("123 3.1416 789")) #  Better -> [['123'], ['3.1416'], ['789']]\r
-    """\r
-    def __init__( self, exprs, savelist = False ):\r
-        super(MatchFirst,self).__init__(exprs, savelist)\r
-        if self.exprs:\r
-            self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs)\r
-        else:\r
-            self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        maxExcLoc = -1\r
-        maxException = None\r
-        for e in self.exprs:\r
-            try:\r
-                ret = e._parse( instring, loc, doActions )\r
-                return ret\r
-            except ParseException as err:\r
-                if err.loc > maxExcLoc:\r
-                    maxException = err\r
-                    maxExcLoc = err.loc\r
-            except IndexError:\r
-                if len(instring) > maxExcLoc:\r
-                    maxException = ParseException(instring,len(instring),e.errmsg,self)\r
-                    maxExcLoc = len(instring)\r
-\r
-        # only got here if no expression matched, raise exception for match that made it the furthest\r
-        else:\r
-            if maxException is not None:\r
-                maxException.msg = self.errmsg\r
-                raise maxException\r
-            else:\r
-                raise ParseException(instring, loc, "no defined alternatives to match", self)\r
-\r
-    def __ior__(self, other ):\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass( other )\r
-        return self.append( other ) #MatchFirst( [ self, other ] )\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "{" + " | ".join(_ustr(e) for e in self.exprs) + "}"\r
-\r
-        return self.strRepr\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        subRecCheckList = parseElementList[:] + [ self ]\r
-        for e in self.exprs:\r
-            e.checkRecursion( subRecCheckList )\r
-\r
-\r
-class Each(ParseExpression):\r
-    """\r
-    Requires all given C{ParseExpression}s to be found, but in any order.\r
-    Expressions may be separated by whitespace.\r
-    May be constructed using the C{'&'} operator.\r
-\r
-    Example::\r
-        color = oneOf("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN")\r
-        shape_type = oneOf("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON")\r
-        integer = Word(nums)\r
-        shape_attr = "shape:" + shape_type("shape")\r
-        posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn")\r
-        color_attr = "color:" + color("color")\r
-        size_attr = "size:" + integer("size")\r
-\r
-        # use Each (using operator '&') to accept attributes in any order\r
-        # (shape and posn are required, color and size are optional)\r
-        shape_spec = shape_attr & posn_attr & Optional(color_attr) & Optional(size_attr)\r
-\r
-        shape_spec.runTests('''\r
-            shape: SQUARE color: BLACK posn: 100, 120\r
-            shape: CIRCLE size: 50 color: BLUE posn: 50,80\r
-            color:GREEN size:20 shape:TRIANGLE posn:20,40\r
-            '''\r
-            )\r
-    prints::\r
-        shape: SQUARE color: BLACK posn: 100, 120\r
-        ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']]\r
-        - color: BLACK\r
-        - posn: ['100', ',', '120']\r
-          - x: 100\r
-          - y: 120\r
-        - shape: SQUARE\r
-\r
-\r
-        shape: CIRCLE size: 50 color: BLUE posn: 50,80\r
-        ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']]\r
-        - color: BLUE\r
-        - posn: ['50', ',', '80']\r
-          - x: 50\r
-          - y: 80\r
-        - shape: CIRCLE\r
-        - size: 50\r
-\r
-\r
-        color: GREEN size: 20 shape: TRIANGLE posn: 20,40\r
-        ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']]\r
-        - color: GREEN\r
-        - posn: ['20', ',', '40']\r
-          - x: 20\r
-          - y: 40\r
-        - shape: TRIANGLE\r
-        - size: 20\r
-    """\r
-    def __init__( self, exprs, savelist = True ):\r
-        super(Each,self).__init__(exprs, savelist)\r
-        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)\r
-        self.skipWhitespace = True\r
-        self.initExprGroups = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if self.initExprGroups:\r
-            self.opt1map = dict((id(e.expr),e) for e in self.exprs if isinstance(e,Optional))\r
-            opt1 = [ e.expr for e in self.exprs if isinstance(e,Optional) ]\r
-            opt2 = [ e for e in self.exprs if e.mayReturnEmpty and not isinstance(e,Optional)]\r
-            self.optionals = opt1 + opt2\r
-            self.multioptionals = [ e.expr for e in self.exprs if isinstance(e,ZeroOrMore) ]\r
-            self.multirequired = [ e.expr for e in self.exprs if isinstance(e,OneOrMore) ]\r
-            self.required = [ e for e in self.exprs if not isinstance(e,(Optional,ZeroOrMore,OneOrMore)) ]\r
-            self.required += self.multirequired\r
-            self.initExprGroups = False\r
-        tmpLoc = loc\r
-        tmpReqd = self.required[:]\r
-        tmpOpt  = self.optionals[:]\r
-        matchOrder = []\r
-\r
-        keepMatching = True\r
-        while keepMatching:\r
-            tmpExprs = tmpReqd + tmpOpt + self.multioptionals + self.multirequired\r
-            failed = []\r
-            for e in tmpExprs:\r
-                try:\r
-                    tmpLoc = e.tryParse( instring, tmpLoc )\r
-                except ParseException:\r
-                    failed.append(e)\r
-                else:\r
-                    matchOrder.append(self.opt1map.get(id(e),e))\r
-                    if e in tmpReqd:\r
-                        tmpReqd.remove(e)\r
-                    elif e in tmpOpt:\r
-                        tmpOpt.remove(e)\r
-            if len(failed) == len(tmpExprs):\r
-                keepMatching = False\r
-\r
-        if tmpReqd:\r
-            missing = ", ".join(_ustr(e) for e in tmpReqd)\r
-            raise ParseException(instring,loc,"Missing one or more required elements (%s)" % missing )\r
-\r
-        # add any unmatched Optionals, in case they have default values defined\r
-        matchOrder += [e for e in self.exprs if isinstance(e,Optional) and e.expr in tmpOpt]\r
-\r
-        resultlist = []\r
-        for e in matchOrder:\r
-            loc,results = e._parse(instring,loc,doActions)\r
-            resultlist.append(results)\r
-\r
-        finalResults = sum(resultlist, ParseResults([]))\r
-        return loc, finalResults\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "{" + " & ".join(_ustr(e) for e in self.exprs) + "}"\r
-\r
-        return self.strRepr\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        subRecCheckList = parseElementList[:] + [ self ]\r
-        for e in self.exprs:\r
-            e.checkRecursion( subRecCheckList )\r
-\r
-\r
-class ParseElementEnhance(ParserElement):\r
-    """\r
-    Abstract subclass of C{ParserElement}, for combining and post-processing parsed tokens.\r
-    """\r
-    def __init__( self, expr, savelist=False ):\r
-        super(ParseElementEnhance,self).__init__(savelist)\r
-        if isinstance( expr, basestring ):\r
-            if issubclass(ParserElement._literalStringClass, Token):\r
-                expr = ParserElement._literalStringClass(expr)\r
-            else:\r
-                expr = ParserElement._literalStringClass(Literal(expr))\r
-        self.expr = expr\r
-        self.strRepr = None\r
-        if expr is not None:\r
-            self.mayIndexError = expr.mayIndexError\r
-            self.mayReturnEmpty = expr.mayReturnEmpty\r
-            self.setWhitespaceChars( expr.whiteChars )\r
-            self.skipWhitespace = expr.skipWhitespace\r
-            self.saveAsList = expr.saveAsList\r
-            self.callPreparse = expr.callPreparse\r
-            self.ignoreExprs.extend(expr.ignoreExprs)\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if self.expr is not None:\r
-            return self.expr._parse( instring, loc, doActions, callPreParse=False )\r
-        else:\r
-            raise ParseException("",loc,self.errmsg,self)\r
-\r
-    def leaveWhitespace( self ):\r
-        self.skipWhitespace = False\r
-        self.expr = self.expr.copy()\r
-        if self.expr is not None:\r
-            self.expr.leaveWhitespace()\r
-        return self\r
-\r
-    def ignore( self, other ):\r
-        if isinstance( other, Suppress ):\r
-            if other not in self.ignoreExprs:\r
-                super( ParseElementEnhance, self).ignore( other )\r
-                if self.expr is not None:\r
-                    self.expr.ignore( self.ignoreExprs[-1] )\r
-        else:\r
-            super( ParseElementEnhance, self).ignore( other )\r
-            if self.expr is not None:\r
-                self.expr.ignore( self.ignoreExprs[-1] )\r
-        return self\r
-\r
-    def streamline( self ):\r
-        super(ParseElementEnhance,self).streamline()\r
-        if self.expr is not None:\r
-            self.expr.streamline()\r
-        return self\r
-\r
-    def checkRecursion( self, parseElementList ):\r
-        if self in parseElementList:\r
-            raise RecursiveGrammarException( parseElementList+[self] )\r
-        subRecCheckList = parseElementList[:] + [ self ]\r
-        if self.expr is not None:\r
-            self.expr.checkRecursion( subRecCheckList )\r
-\r
-    def validate( self, validateTrace=[] ):\r
-        tmp = validateTrace[:]+[self]\r
-        if self.expr is not None:\r
-            self.expr.validate(tmp)\r
-        self.checkRecursion( [] )\r
-\r
-    def __str__( self ):\r
-        try:\r
-            return super(ParseElementEnhance,self).__str__()\r
-        except Exception:\r
-            pass\r
-\r
-        if self.strRepr is None and self.expr is not None:\r
-            self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.expr) )\r
-        return self.strRepr\r
-\r
-\r
-class FollowedBy(ParseElementEnhance):\r
-    """\r
-    Lookahead matching of the given parse expression.  C{FollowedBy}\r
-    does I{not} advance the parsing position within the input string, it only\r
-    verifies that the specified parse expression matches at the current\r
-    position.  C{FollowedBy} always returns a null token list. If any\r
-    results names are defined in the lookahead expression, those *will* be\r
-    returned for access by name.\r
-\r
-    Example::\r
-        # use FollowedBy to match a label only if it is followed by a ':'\r
-        data_word = Word(alphas)\r
-        label = data_word + FollowedBy(':')\r
-        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r
-\r
-        OneOrMore(attr_expr).parseString("shape: SQUARE color: BLACK posn: upper left").pprint()\r
-    prints::\r
-        [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']]\r
-    """\r
-    def __init__( self, expr ):\r
-        super(FollowedBy,self).__init__(expr)\r
-        self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        _, ret = self.expr._parse(instring, loc, doActions=doActions)\r
-        del ret[:]\r
-        return loc, ret\r
-\r
-\r
-class PrecededBy(ParseElementEnhance):\r
-    """\r
-    Lookbehind matching of the given parse expression.  C{PrecededBy}\r
-    does not advance the parsing position within the input string, it only\r
-    verifies that the specified parse expression matches prior to the current\r
-    position.  C{PrecededBy} always returns a null token list, but if\r
-    a results name is defined on the given expression, it is returned.\r
-\r
-    Parameters:\r
-     - expr - expression that must match prior to the current parse location\r
-     - retreat - (default=C{None}) - (int) maximum number of characters to\r
-       lookbehind prior to the current parse location\r
-\r
-    If the lookbehind expression is a string, Literal, Keyword, or a\r
-    Word or CharsNotIn with a specified exact or maximum length, then\r
-    the retreat parameter is not required. Otherwise, retreat must be\r
-    specified to give a maximum number of characters to look back from\r
-    the current parse position for a lookbehind match.\r
-\r
-    Example::\r
-\r
-        # VB-style variable names with type prefixes\r
-        int_var = PrecededBy("#") + pyparsing_common.identifier\r
-        str_var = PrecededBy("$") + pyparsing_common.identifier\r
-\r
-    """\r
-    def __init__(self, expr, retreat=None):\r
-        super(PrecededBy, self).__init__(expr)\r
-        self.expr = self.expr().leaveWhitespace()\r
-        self.mayReturnEmpty = True\r
-        self.mayIndexError = False\r
-        self.exact = False\r
-        if isinstance(expr, str):\r
-            retreat = len(expr)\r
-            self.exact = True\r
-        elif isinstance(expr, (Literal, Keyword)):\r
-            retreat = expr.matchLen\r
-            self.exact = True\r
-        elif isinstance(expr, (Word, CharsNotIn)) and expr.maxLen != _MAX_INT:\r
-            retreat = expr.maxLen\r
-            self.exact = True\r
-        elif isinstance(expr, _PositionToken):\r
-            retreat = 0\r
-            self.exact = True\r
-        self.retreat = retreat\r
-        self.errmsg = "not preceded by " + str(expr)\r
-        self.skipWhitespace = False\r
-\r
-    def parseImpl(self, instring, loc=0, doActions=True):\r
-        if self.exact:\r
-            if loc < self.retreat:\r
-                raise ParseException(instring, loc, self.errmsg)\r
-            start = loc - self.retreat\r
-            _, ret = self.expr._parse(instring, start)\r
-        else:\r
-            # retreat specified a maximum lookbehind window, iterate\r
-            test_expr = self.expr + StringEnd()\r
-            instring_slice = instring[:loc]\r
-            last_expr = ParseException(instring, loc, self.errmsg)\r
-            for offset in range(1, min(loc, self.retreat+1)):\r
-                try:\r
-                    _, ret = test_expr._parse(instring_slice, loc-offset)\r
-                except ParseBaseException as pbe:\r
-                    last_expr = pbe\r
-                else:\r
-                    break\r
-            else:\r
-                raise last_expr\r
-        # return empty list of tokens, but preserve any defined results names\r
-        del ret[:]\r
-        return loc, ret\r
-\r
-\r
-class NotAny(ParseElementEnhance):\r
-    """\r
-    Lookahead to disallow matching with the given parse expression.  C{NotAny}\r
-    does I{not} advance the parsing position within the input string, it only\r
-    verifies that the specified parse expression does I{not} match at the current\r
-    position.  Also, C{NotAny} does I{not} skip over leading whitespace. C{NotAny}\r
-    always returns a null token list.  May be constructed using the '~' operator.\r
-\r
-    Example::\r
-        AND, OR, NOT = map(CaselessKeyword, "AND OR NOT".split())\r
-\r
-        # take care not to mistake keywords for identifiers\r
-        ident = ~(AND | OR | NOT) + Word(alphas)\r
-        boolean_term = Optional(NOT) + ident\r
-\r
-        # very crude boolean expression - to support parenthesis groups and\r
-        # operation hierarchy, use infixNotation\r
-        boolean_expr = boolean_term + ZeroOrMore((AND | OR) + boolean_term)\r
-\r
-        # integers that are followed by "." are actually floats\r
-        integer = Word(nums) + ~Char(".")\r
-    """\r
-    def __init__( self, expr ):\r
-        super(NotAny,self).__init__(expr)\r
-        #~ self.leaveWhitespace()\r
-        self.skipWhitespace = False  # do NOT use self.leaveWhitespace(), don't want to propagate to exprs\r
-        self.mayReturnEmpty = True\r
-        self.errmsg = "Found unwanted token, "+_ustr(self.expr)\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        if self.expr.canParseNext(instring, loc):\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-        return loc, []\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "~{" + _ustr(self.expr) + "}"\r
-\r
-        return self.strRepr\r
-\r
-class _MultipleMatch(ParseElementEnhance):\r
-    def __init__( self, expr, stopOn=None):\r
-        super(_MultipleMatch, self).__init__(expr)\r
-        self.saveAsList = True\r
-        ender = stopOn\r
-        if isinstance(ender, basestring):\r
-            ender = ParserElement._literalStringClass(ender)\r
-        self.not_ender = ~ender if ender is not None else None\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        self_expr_parse = self.expr._parse\r
-        self_skip_ignorables = self._skipIgnorables\r
-        check_ender = self.not_ender is not None\r
-        if check_ender:\r
-            try_not_ender = self.not_ender.tryParse\r
-\r
-        # must be at least one (but first see if we are the stopOn sentinel;\r
-        # if so, fail)\r
-        if check_ender:\r
-            try_not_ender(instring, loc)\r
-        loc, tokens = self_expr_parse( instring, loc, doActions, callPreParse=False )\r
-        try:\r
-            hasIgnoreExprs = (not not self.ignoreExprs)\r
-            while 1:\r
-                if check_ender:\r
-                    try_not_ender(instring, loc)\r
-                if hasIgnoreExprs:\r
-                    preloc = self_skip_ignorables( instring, loc )\r
-                else:\r
-                    preloc = loc\r
-                loc, tmptokens = self_expr_parse( instring, preloc, doActions )\r
-                if tmptokens or tmptokens.haskeys():\r
-                    tokens += tmptokens\r
-        except (ParseException,IndexError):\r
-            pass\r
-\r
-        return loc, tokens\r
-\r
-class OneOrMore(_MultipleMatch):\r
-    """\r
-    Repetition of one or more of the given expression.\r
-\r
-    Parameters:\r
-     - expr - expression that must match one or more times\r
-     - stopOn - (default=C{None}) - expression for a terminating sentinel\r
-          (only required if the sentinel would ordinarily match the repetition\r
-          expression)\r
-\r
-    Example::\r
-        data_word = Word(alphas)\r
-        label = data_word + FollowedBy(':')\r
-        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))\r
-\r
-        text = "shape: SQUARE posn: upper left color: BLACK"\r
-        OneOrMore(attr_expr).parseString(text).pprint()  # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']]\r
-\r
-        # use stopOn attribute for OneOrMore to avoid reading label string as part of the data\r
-        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r
-        OneOrMore(attr_expr).parseString(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']]\r
-\r
-        # could also be written as\r
-        (attr_expr * (1,)).parseString(text).pprint()\r
-    """\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "{" + _ustr(self.expr) + "}..."\r
-\r
-        return self.strRepr\r
-\r
-class ZeroOrMore(_MultipleMatch):\r
-    """\r
-    Optional repetition of zero or more of the given expression.\r
-\r
-    Parameters:\r
-     - expr - expression that must match zero or more times\r
-     - stopOn - (default=C{None}) - expression for a terminating sentinel\r
-          (only required if the sentinel would ordinarily match the repetition\r
-          expression)\r
-\r
-    Example: similar to L{OneOrMore}\r
-    """\r
-    def __init__( self, expr, stopOn=None):\r
-        super(ZeroOrMore,self).__init__(expr, stopOn=stopOn)\r
-        self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        try:\r
-            return super(ZeroOrMore, self).parseImpl(instring, loc, doActions)\r
-        except (ParseException,IndexError):\r
-            return loc, []\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "[" + _ustr(self.expr) + "]..."\r
-\r
-        return self.strRepr\r
-\r
-class _NullToken(object):\r
-    def __bool__(self):\r
-        return False\r
-    __nonzero__ = __bool__\r
-    def __str__(self):\r
-        return ""\r
-\r
-_optionalNotMatched = _NullToken()\r
-class Optional(ParseElementEnhance):\r
-    """\r
-    Optional matching of the given expression.\r
-\r
-    Parameters:\r
-     - expr - expression that must match zero or more times\r
-     - default (optional) - value to be returned if the optional expression is not found.\r
-\r
-    Example::\r
-        # US postal code can be a 5-digit zip, plus optional 4-digit qualifier\r
-        zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4)))\r
-        zip.runTests('''\r
-            # traditional ZIP code\r
-            12345\r
-\r
-            # ZIP+4 form\r
-            12101-0001\r
-\r
-            # invalid ZIP\r
-            98765-\r
-            ''')\r
-    prints::\r
-        # traditional ZIP code\r
-        12345\r
-        ['12345']\r
-\r
-        # ZIP+4 form\r
-        12101-0001\r
-        ['12101-0001']\r
-\r
-        # invalid ZIP\r
-        98765-\r
-             ^\r
-        FAIL: Expected end of text (at char 5), (line:1, col:6)\r
-    """\r
-    def __init__( self, expr, default=_optionalNotMatched ):\r
-        super(Optional,self).__init__( expr, savelist=False )\r
-        self.saveAsList = self.expr.saveAsList\r
-        self.defaultValue = default\r
-        self.mayReturnEmpty = True\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        try:\r
-            loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )\r
-        except (ParseException,IndexError):\r
-            if self.defaultValue is not _optionalNotMatched:\r
-                if self.expr.resultsName:\r
-                    tokens = ParseResults([ self.defaultValue ])\r
-                    tokens[self.expr.resultsName] = self.defaultValue\r
-                else:\r
-                    tokens = [ self.defaultValue ]\r
-            else:\r
-                tokens = []\r
-        return loc, tokens\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-\r
-        if self.strRepr is None:\r
-            self.strRepr = "[" + _ustr(self.expr) + "]"\r
-\r
-        return self.strRepr\r
-\r
-class SkipTo(ParseElementEnhance):\r
-    """\r
-    Token for skipping over all undefined text until the matched expression is found.\r
-\r
-    Parameters:\r
-     - expr - target expression marking the end of the data to be skipped\r
-     - include - (default=C{False}) if True, the target expression is also parsed\r
-          (the skipped text and target expression are returned as a 2-element list).\r
-     - ignore - (default=C{None}) used to define grammars (typically quoted strings and\r
-          comments) that might contain false matches to the target expression\r
-     - failOn - (default=C{None}) define expressions that are not allowed to be\r
-          included in the skipped test; if found before the target expression is found,\r
-          the SkipTo is not a match\r
-\r
-    Example::\r
-        report = '''\r
-            Outstanding Issues Report - 1 Jan 2000\r
-\r
-               # | Severity | Description                               |  Days Open\r
-            -----+----------+-------------------------------------------+-----------\r
-             101 | Critical | Intermittent system crash                 |          6\r
-              94 | Cosmetic | Spelling error on Login ('log|n')         |         14\r
-              79 | Minor    | System slow when running too many reports |         47\r
-            '''\r
-        integer = Word(nums)\r
-        SEP = Suppress('|')\r
-        # use SkipTo to simply match everything up until the next SEP\r
-        # - ignore quoted strings, so that a '|' character inside a quoted string does not match\r
-        # - parse action will call token.strip() for each matched token, i.e., the description body\r
-        string_data = SkipTo(SEP, ignore=quotedString)\r
-        string_data.setParseAction(tokenMap(str.strip))\r
-        ticket_expr = (integer("issue_num") + SEP\r
-                      + string_data("sev") + SEP\r
-                      + string_data("desc") + SEP\r
-                      + integer("days_open"))\r
-\r
-        for tkt in ticket_expr.searchString(report):\r
-            print tkt.dump()\r
-    prints::\r
-        ['101', 'Critical', 'Intermittent system crash', '6']\r
-        - days_open: 6\r
-        - desc: Intermittent system crash\r
-        - issue_num: 101\r
-        - sev: Critical\r
-        ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14']\r
-        - days_open: 14\r
-        - desc: Spelling error on Login ('log|n')\r
-        - issue_num: 94\r
-        - sev: Cosmetic\r
-        ['79', 'Minor', 'System slow when running too many reports', '47']\r
-        - days_open: 47\r
-        - desc: System slow when running too many reports\r
-        - issue_num: 79\r
-        - sev: Minor\r
-    """\r
-    def __init__( self, other, include=False, ignore=None, failOn=None ):\r
-        super( SkipTo, self ).__init__( other )\r
-        self.ignoreExpr = ignore\r
-        self.mayReturnEmpty = True\r
-        self.mayIndexError = False\r
-        self.includeMatch = include\r
-        self.saveAsList = False\r
-        if isinstance(failOn, basestring):\r
-            self.failOn = ParserElement._literalStringClass(failOn)\r
-        else:\r
-            self.failOn = failOn\r
-        self.errmsg = "No match found for "+_ustr(self.expr)\r
-\r
-    def parseImpl( self, instring, loc, doActions=True ):\r
-        startloc = loc\r
-        instrlen = len(instring)\r
-        expr = self.expr\r
-        expr_parse = self.expr._parse\r
-        self_failOn_canParseNext = self.failOn.canParseNext if self.failOn is not None else None\r
-        self_ignoreExpr_tryParse = self.ignoreExpr.tryParse if self.ignoreExpr is not None else None\r
-\r
-        tmploc = loc\r
-        while tmploc <= instrlen:\r
-            if self_failOn_canParseNext is not None:\r
-                # break if failOn expression matches\r
-                if self_failOn_canParseNext(instring, tmploc):\r
-                    break\r
-\r
-            if self_ignoreExpr_tryParse is not None:\r
-                # advance past ignore expressions\r
-                while 1:\r
-                    try:\r
-                        tmploc = self_ignoreExpr_tryParse(instring, tmploc)\r
-                    except ParseBaseException:\r
-                        break\r
-\r
-            try:\r
-                expr_parse(instring, tmploc, doActions=False, callPreParse=False)\r
-            except (ParseException, IndexError):\r
-                # no match, advance loc in string\r
-                tmploc += 1\r
-            else:\r
-                # matched skipto expr, done\r
-                break\r
-\r
-        else:\r
-            # ran off the end of the input string without matching skipto expr, fail\r
-            raise ParseException(instring, loc, self.errmsg, self)\r
-\r
-        # build up return values\r
-        loc = tmploc\r
-        skiptext = instring[startloc:loc]\r
-        skipresult = ParseResults(skiptext)\r
-\r
-        if self.includeMatch:\r
-            loc, mat = expr_parse(instring,loc,doActions,callPreParse=False)\r
-            skipresult += mat\r
-\r
-        return loc, skipresult\r
-\r
-class Forward(ParseElementEnhance):\r
-    """\r
-    Forward declaration of an expression to be defined later -\r
-    used for recursive grammars, such as algebraic infix notation.\r
-    When the expression is known, it is assigned to the C{Forward} variable using the '<<' operator.\r
-\r
-    Note: take care when assigning to C{Forward} not to overlook precedence of operators.\r
-    Specifically, '|' has a lower precedence than '<<', so that::\r
-        fwdExpr << a | b | c\r
-    will actually be evaluated as::\r
-        (fwdExpr << a) | b | c\r
-    thereby leaving b and c out as parseable alternatives.  It is recommended that you\r
-    explicitly group the values inserted into the C{Forward}::\r
-        fwdExpr << (a | b | c)\r
-    Converting to use the '<<=' operator instead will avoid this problem.\r
-\r
-    See L{ParseResults.pprint} for an example of a recursive parser created using\r
-    C{Forward}.\r
-    """\r
-    def __init__( self, other=None ):\r
-        super(Forward,self).__init__( other, savelist=False )\r
-\r
-    def __lshift__( self, other ):\r
-        if isinstance( other, basestring ):\r
-            other = ParserElement._literalStringClass(other)\r
-        self.expr = other\r
-        self.strRepr = None\r
-        self.mayIndexError = self.expr.mayIndexError\r
-        self.mayReturnEmpty = self.expr.mayReturnEmpty\r
-        self.setWhitespaceChars( self.expr.whiteChars )\r
-        self.skipWhitespace = self.expr.skipWhitespace\r
-        self.saveAsList = self.expr.saveAsList\r
-        self.ignoreExprs.extend(self.expr.ignoreExprs)\r
-        return self\r
-\r
-    def __ilshift__(self, other):\r
-        return self << other\r
-\r
-    def leaveWhitespace( self ):\r
-        self.skipWhitespace = False\r
-        return self\r
-\r
-    def streamline( self ):\r
-        if not self.streamlined:\r
-            self.streamlined = True\r
-            if self.expr is not None:\r
-                self.expr.streamline()\r
-        return self\r
-\r
-    def validate( self, validateTrace=[] ):\r
-        if self not in validateTrace:\r
-            tmp = validateTrace[:]+[self]\r
-            if self.expr is not None:\r
-                self.expr.validate(tmp)\r
-        self.checkRecursion([])\r
-\r
-    def __str__( self ):\r
-        if hasattr(self,"name"):\r
-            return self.name\r
-        return self.__class__.__name__ + ": ..."\r
-\r
-        # stubbed out for now - creates awful memory and perf issues\r
-        self._revertClass = self.__class__\r
-        self.__class__ = _ForwardNoRecurse\r
-        try:\r
-            if self.expr is not None:\r
-                retString = _ustr(self.expr)\r
-            else:\r
-                retString = "None"\r
-        finally:\r
-            self.__class__ = self._revertClass\r
-        return self.__class__.__name__ + ": " + retString\r
-\r
-    def copy(self):\r
-        if self.expr is not None:\r
-            return super(Forward,self).copy()\r
-        else:\r
-            ret = Forward()\r
-            ret <<= self\r
-            return ret\r
-\r
-class _ForwardNoRecurse(Forward):\r
-    def __str__( self ):\r
-        return "..."\r
-\r
-class TokenConverter(ParseElementEnhance):\r
-    """\r
-    Abstract subclass of C{ParseExpression}, for converting parsed results.\r
-    """\r
-    def __init__( self, expr, savelist=False ):\r
-        super(TokenConverter,self).__init__( expr )#, savelist )\r
-        self.saveAsList = False\r
-\r
-class Combine(TokenConverter):\r
-    """\r
-    Converter to concatenate all matching tokens to a single string.\r
-    By default, the matching patterns must also be contiguous in the input string;\r
-    this can be disabled by specifying C{'adjacent=False'} in the constructor.\r
-\r
-    Example::\r
-        real = Word(nums) + '.' + Word(nums)\r
-        print(real.parseString('3.1416')) # -> ['3', '.', '1416']\r
-        # will also erroneously match the following\r
-        print(real.parseString('3. 1416')) # -> ['3', '.', '1416']\r
-\r
-        real = Combine(Word(nums) + '.' + Word(nums))\r
-        print(real.parseString('3.1416')) # -> ['3.1416']\r
-        # no match when there are internal spaces\r
-        print(real.parseString('3. 1416')) # -> Exception: Expected W:(0123...)\r
-    """\r
-    def __init__( self, expr, joinString="", adjacent=True ):\r
-        super(Combine,self).__init__( expr )\r
-        # suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself\r
-        if adjacent:\r
-            self.leaveWhitespace()\r
-        self.adjacent = adjacent\r
-        self.skipWhitespace = True\r
-        self.joinString = joinString\r
-        self.callPreparse = True\r
-\r
-    def ignore( self, other ):\r
-        if self.adjacent:\r
-            ParserElement.ignore(self, other)\r
-        else:\r
-            super( Combine, self).ignore( other )\r
-        return self\r
-\r
-    def postParse( self, instring, loc, tokenlist ):\r
-        retToks = tokenlist.copy()\r
-        del retToks[:]\r
-        retToks += ParseResults([ "".join(tokenlist._asStringList(self.joinString)) ], modal=self.modalResults)\r
-\r
-        if self.resultsName and retToks.haskeys():\r
-            return [ retToks ]\r
-        else:\r
-            return retToks\r
-\r
-class Group(TokenConverter):\r
-    """\r
-    Converter to return the matched tokens as a list - useful for returning tokens of C{L{ZeroOrMore}} and C{L{OneOrMore}} expressions.\r
-\r
-    Example::\r
-        ident = Word(alphas)\r
-        num = Word(nums)\r
-        term = ident | num\r
-        func = ident + Optional(delimitedList(term))\r
-        print(func.parseString("fn a,b,100"))  # -> ['fn', 'a', 'b', '100']\r
-\r
-        func = ident + Group(Optional(delimitedList(term)))\r
-        print(func.parseString("fn a,b,100"))  # -> ['fn', ['a', 'b', '100']]\r
-    """\r
-    def __init__( self, expr ):\r
-        super(Group,self).__init__( expr )\r
-        self.saveAsList = True\r
-\r
-    def postParse( self, instring, loc, tokenlist ):\r
-        return [ tokenlist ]\r
-\r
-class Dict(TokenConverter):\r
-    """\r
-    Converter to return a repetitive expression as a list, but also as a dictionary.\r
-    Each element can also be referenced using the first token in the expression as its key.\r
-    Useful for tabular report scraping when the first column can be used as a item key.\r
-\r
-    Example::\r
-        data_word = Word(alphas)\r
-        label = data_word + FollowedBy(':')\r
-        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))\r
-\r
-        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"\r
-        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r
-\r
-        # print attributes as plain groups\r
-        print(OneOrMore(attr_expr).parseString(text).dump())\r
-\r
-        # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names\r
-        result = Dict(OneOrMore(Group(attr_expr))).parseString(text)\r
-        print(result.dump())\r
-\r
-        # access named fields as dict entries, or output as dict\r
-        print(result['shape'])\r
-        print(result.asDict())\r
-    prints::\r
-        ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap']\r
-\r
-        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]\r
-        - color: light blue\r
-        - posn: upper left\r
-        - shape: SQUARE\r
-        - texture: burlap\r
-        SQUARE\r
-        {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'}\r
-    See more examples at L{ParseResults} of accessing fields by results name.\r
-    """\r
-    def __init__( self, expr ):\r
-        super(Dict,self).__init__( expr )\r
-        self.saveAsList = True\r
-\r
-    def postParse( self, instring, loc, tokenlist ):\r
-        for i,tok in enumerate(tokenlist):\r
-            if len(tok) == 0:\r
-                continue\r
-            ikey = tok[0]\r
-            if isinstance(ikey,int):\r
-                ikey = _ustr(tok[0]).strip()\r
-            if len(tok)==1:\r
-                tokenlist[ikey] = _ParseResultsWithOffset("",i)\r
-            elif len(tok)==2 and not isinstance(tok[1],ParseResults):\r
-                tokenlist[ikey] = _ParseResultsWithOffset(tok[1],i)\r
-            else:\r
-                dictvalue = tok.copy() #ParseResults(i)\r
-                del dictvalue[0]\r
-                if len(dictvalue)!= 1 or (isinstance(dictvalue,ParseResults) and dictvalue.haskeys()):\r
-                    tokenlist[ikey] = _ParseResultsWithOffset(dictvalue,i)\r
-                else:\r
-                    tokenlist[ikey] = _ParseResultsWithOffset(dictvalue[0],i)\r
-\r
-        if self.resultsName:\r
-            return [ tokenlist ]\r
-        else:\r
-            return tokenlist\r
-\r
-\r
-class Suppress(TokenConverter):\r
-    """\r
-    Converter for ignoring the results of a parsed expression.\r
-\r
-    Example::\r
-        source = "a, b, c,d"\r
-        wd = Word(alphas)\r
-        wd_list1 = wd + ZeroOrMore(',' + wd)\r
-        print(wd_list1.parseString(source))\r
-\r
-        # often, delimiters that are useful during parsing are just in the\r
-        # way afterward - use Suppress to keep them out of the parsed output\r
-        wd_list2 = wd + ZeroOrMore(Suppress(',') + wd)\r
-        print(wd_list2.parseString(source))\r
-    prints::\r
-        ['a', ',', 'b', ',', 'c', ',', 'd']\r
-        ['a', 'b', 'c', 'd']\r
-    (See also L{delimitedList}.)\r
-    """\r
-    def postParse( self, instring, loc, tokenlist ):\r
-        return []\r
-\r
-    def suppress( self ):\r
-        return self\r
-\r
-\r
-class OnlyOnce(object):\r
-    """\r
-    Wrapper for parse actions, to ensure they are only called once.\r
-    """\r
-    def __init__(self, methodCall):\r
-        self.callable = _trim_arity(methodCall)\r
-        self.called = False\r
-    def __call__(self,s,l,t):\r
-        if not self.called:\r
-            results = self.callable(s,l,t)\r
-            self.called = True\r
-            return results\r
-        raise ParseException(s,l,"")\r
-    def reset(self):\r
-        self.called = False\r
-\r
-def traceParseAction(f):\r
-    """\r
-    Decorator for debugging parse actions.\r
-\r
-    When the parse action is called, this decorator will print C{">> entering I{method-name}(line:I{current_source_line}, I{parse_location}, I{matched_tokens})".}\r
-    When the parse action completes, the decorator will print C{"<<"} followed by the returned value, or any exception that the parse action raised.\r
-\r
-    Example::\r
-        wd = Word(alphas)\r
-\r
-        @traceParseAction\r
-        def remove_duplicate_chars(tokens):\r
-            return ''.join(sorted(set(''.join(tokens))))\r
-\r
-        wds = OneOrMore(wd).setParseAction(remove_duplicate_chars)\r
-        print(wds.parseString("slkdjs sld sldd sdlf sdljf"))\r
-    prints::\r
-        >>entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {}))\r
-        <<leaving remove_duplicate_chars (ret: 'dfjkls')\r
-        ['dfjkls']\r
-    """\r
-    f = _trim_arity(f)\r
-    def z(*paArgs):\r
-        thisFunc = f.__name__\r
-        s,l,t = paArgs[-3:]\r
-        if len(paArgs)>3:\r
-            thisFunc = paArgs[0].__class__.__name__ + '.' + thisFunc\r
-        sys.stderr.write( ">>entering %s(line: '%s', %d, %r)\n" % (thisFunc,line(l,s),l,t) )\r
-        try:\r
-            ret = f(*paArgs)\r
-        except Exception as exc:\r
-            sys.stderr.write( "<<leaving %s (exception: %s)\n" % (thisFunc,exc) )\r
-            raise\r
-        sys.stderr.write( "<<leaving %s (ret: %r)\n" % (thisFunc,ret) )\r
-        return ret\r
-    try:\r
-        z.__name__ = f.__name__\r
-    except AttributeError:\r
-        pass\r
-    return z\r
-\r
-#\r
-# global helpers\r
-#\r
-def delimitedList( expr, delim=",", combine=False ):\r
-    """\r
-    Helper to define a delimited list of expressions - the delimiter defaults to ','.\r
-    By default, the list elements and delimiters can have intervening whitespace, and\r
-    comments, but this can be overridden by passing C{combine=True} in the constructor.\r
-    If C{combine} is set to C{True}, the matching tokens are returned as a single token\r
-    string, with the delimiters included; otherwise, the matching tokens are returned\r
-    as a list of tokens, with the delimiters suppressed.\r
-\r
-    Example::\r
-        delimitedList(Word(alphas)).parseString("aa,bb,cc") # -> ['aa', 'bb', 'cc']\r
-        delimitedList(Word(hexnums), delim=':', combine=True).parseString("AA:BB:CC:DD:EE") # -> ['AA:BB:CC:DD:EE']\r
-    """\r
-    dlName = _ustr(expr)+" ["+_ustr(delim)+" "+_ustr(expr)+"]..."\r
-    if combine:\r
-        return Combine( expr + ZeroOrMore( delim + expr ) ).setName(dlName)\r
-    else:\r
-        return ( expr + ZeroOrMore( Suppress( delim ) + expr ) ).setName(dlName)\r
-\r
-def countedArray( expr, intExpr=None ):\r
-    """\r
-    Helper to define a counted list of expressions.\r
-    This helper defines a pattern of the form::\r
-        integer expr expr expr...\r
-    where the leading integer tells how many expr expressions follow.\r
-    The matched tokens returns the array of expr tokens as a list - the leading count token is suppressed.\r
-\r
-    If C{intExpr} is specified, it should be a pyparsing expression that produces an integer value.\r
-\r
-    Example::\r
-        countedArray(Word(alphas)).parseString('2 ab cd ef')  # -> ['ab', 'cd']\r
-\r
-        # in this parser, the leading integer value is given in binary,\r
-        # '10' indicating that 2 values are in the array\r
-        binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2))\r
-        countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef')  # -> ['ab', 'cd']\r
-    """\r
-    arrayExpr = Forward()\r
-    def countFieldParseAction(s,l,t):\r
-        n = t[0]\r
-        arrayExpr << (n and Group(And([expr]*n)) or Group(empty))\r
-        return []\r
-    if intExpr is None:\r
-        intExpr = Word(nums).setParseAction(lambda t:int(t[0]))\r
-    else:\r
-        intExpr = intExpr.copy()\r
-    intExpr.setName("arrayLen")\r
-    intExpr.addParseAction(countFieldParseAction, callDuringTry=True)\r
-    return ( intExpr + arrayExpr ).setName('(len) ' + _ustr(expr) + '...')\r
-\r
-def _flatten(L):\r
-    ret = []\r
-    for i in L:\r
-        if isinstance(i,list):\r
-            ret.extend(_flatten(i))\r
-        else:\r
-            ret.append(i)\r
-    return ret\r
-\r
-def matchPreviousLiteral(expr):\r
-    """\r
-    Helper to define an expression that is indirectly defined from\r
-    the tokens matched in a previous expression, that is, it looks\r
-    for a 'repeat' of a previous expression.  For example::\r
-        first = Word(nums)\r
-        second = matchPreviousLiteral(first)\r
-        matchExpr = first + ":" + second\r
-    will match C{"1:1"}, but not C{"1:2"}.  Because this matches a\r
-    previous literal, will also match the leading C{"1:1"} in C{"1:10"}.\r
-    If this is not desired, use C{matchPreviousExpr}.\r
-    Do I{not} use with packrat parsing enabled.\r
-    """\r
-    rep = Forward()\r
-    def copyTokenToRepeater(s,l,t):\r
-        if t:\r
-            if len(t) == 1:\r
-                rep << t[0]\r
-            else:\r
-                # flatten t tokens\r
-                tflat = _flatten(t.asList())\r
-                rep << And(Literal(tt) for tt in tflat)\r
-        else:\r
-            rep << Empty()\r
-    expr.addParseAction(copyTokenToRepeater, callDuringTry=True)\r
-    rep.setName('(prev) ' + _ustr(expr))\r
-    return rep\r
-\r
-def matchPreviousExpr(expr):\r
-    """\r
-    Helper to define an expression that is indirectly defined from\r
-    the tokens matched in a previous expression, that is, it looks\r
-    for a 'repeat' of a previous expression.  For example::\r
-        first = Word(nums)\r
-        second = matchPreviousExpr(first)\r
-        matchExpr = first + ":" + second\r
-    will match C{"1:1"}, but not C{"1:2"}.  Because this matches by\r
-    expressions, will I{not} match the leading C{"1:1"} in C{"1:10"};\r
-    the expressions are evaluated first, and then compared, so\r
-    C{"1"} is compared with C{"10"}.\r
-    Do I{not} use with packrat parsing enabled.\r
-    """\r
-    rep = Forward()\r
-    e2 = expr.copy()\r
-    rep <<= e2\r
-    def copyTokenToRepeater(s,l,t):\r
-        matchTokens = _flatten(t.asList())\r
-        def mustMatchTheseTokens(s,l,t):\r
-            theseTokens = _flatten(t.asList())\r
-            if  theseTokens != matchTokens:\r
-                raise ParseException("",0,"")\r
-        rep.setParseAction( mustMatchTheseTokens, callDuringTry=True )\r
-    expr.addParseAction(copyTokenToRepeater, callDuringTry=True)\r
-    rep.setName('(prev) ' + _ustr(expr))\r
-    return rep\r
-\r
-def _escapeRegexRangeChars(s):\r
-    #~  escape these chars: ^-]\r
-    for c in r"\^-]":\r
-        s = s.replace(c,_bslash+c)\r
-    s = s.replace("\n",r"\n")\r
-    s = s.replace("\t",r"\t")\r
-    return _ustr(s)\r
-\r
-def oneOf( strs, caseless=False, useRegex=True ):\r
-    """\r
-    Helper to quickly define a set of alternative Literals, and makes sure to do\r
-    longest-first testing when there is a conflict, regardless of the input order,\r
-    but returns a C{L{MatchFirst}} for best performance.\r
-\r
-    Parameters:\r
-     - strs - a string of space-delimited literals, or a collection of string literals\r
-     - caseless - (default=C{False}) - treat all literals as caseless\r
-     - useRegex - (default=C{True}) - as an optimization, will generate a Regex\r
-          object; otherwise, will generate a C{MatchFirst} object (if C{caseless=True}, or\r
-          if creating a C{Regex} raises an exception)\r
-\r
-    Example::\r
-        comp_oper = oneOf("< = > <= >= !=")\r
-        var = Word(alphas)\r
-        number = Word(nums)\r
-        term = var | number\r
-        comparison_expr = term + comp_oper + term\r
-        print(comparison_expr.searchString("B = 12  AA=23 B<=AA AA>12"))\r
-    prints::\r
-        [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']]\r
-    """\r
-    if caseless:\r
-        isequal = ( lambda a,b: a.upper() == b.upper() )\r
-        masks = ( lambda a,b: b.upper().startswith(a.upper()) )\r
-        parseElementClass = CaselessLiteral\r
-    else:\r
-        isequal = ( lambda a,b: a == b )\r
-        masks = ( lambda a,b: b.startswith(a) )\r
-        parseElementClass = Literal\r
-\r
-    symbols = []\r
-    if isinstance(strs,basestring):\r
-        symbols = strs.split()\r
-    elif isinstance(strs, Iterable):\r
-        symbols = list(strs)\r
-    else:\r
-        warnings.warn("Invalid argument to oneOf, expected string or iterable",\r
-                SyntaxWarning, stacklevel=2)\r
-    if not symbols:\r
-        return NoMatch()\r
-\r
-    i = 0\r
-    while i < len(symbols)-1:\r
-        cur = symbols[i]\r
-        for j,other in enumerate(symbols[i+1:]):\r
-            if ( isequal(other, cur) ):\r
-                del symbols[i+j+1]\r
-                break\r
-            elif ( masks(cur, other) ):\r
-                del symbols[i+j+1]\r
-                symbols.insert(i,other)\r
-                cur = other\r
-                break\r
-        else:\r
-            i += 1\r
-\r
-    if not caseless and useRegex:\r
-        #~ print (strs,"->", "|".join( [ _escapeRegexChars(sym) for sym in symbols] ))\r
-        try:\r
-            if len(symbols)==len("".join(symbols)):\r
-                return Regex( "[%s]" % "".join(_escapeRegexRangeChars(sym) for sym in symbols) ).setName(' | '.join(symbols))\r
-            else:\r
-                return Regex( "|".join(re.escape(sym) for sym in symbols) ).setName(' | '.join(symbols))\r
-        except Exception:\r
-            warnings.warn("Exception creating Regex for oneOf, building MatchFirst",\r
-                    SyntaxWarning, stacklevel=2)\r
-\r
-\r
-    # last resort, just use MatchFirst\r
-    return MatchFirst(parseElementClass(sym) for sym in symbols).setName(' | '.join(symbols))\r
-\r
-def dictOf( key, value ):\r
-    """\r
-    Helper to easily and clearly define a dictionary by specifying the respective patterns\r
-    for the key and value.  Takes care of defining the C{L{Dict}}, C{L{ZeroOrMore}}, and C{L{Group}} tokens\r
-    in the proper order.  The key pattern can include delimiting markers or punctuation,\r
-    as long as they are suppressed, thereby leaving the significant key text.  The value\r
-    pattern can include named results, so that the C{Dict} results can include named token\r
-    fields.\r
-\r
-    Example::\r
-        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"\r
-        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))\r
-        print(OneOrMore(attr_expr).parseString(text).dump())\r
-\r
-        attr_label = label\r
-        attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)\r
-\r
-        # similar to Dict, but simpler call format\r
-        result = dictOf(attr_label, attr_value).parseString(text)\r
-        print(result.dump())\r
-        print(result['shape'])\r
-        print(result.shape)  # object attribute access works too\r
-        print(result.asDict())\r
-    prints::\r
-        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]\r
-        - color: light blue\r
-        - posn: upper left\r
-        - shape: SQUARE\r
-        - texture: burlap\r
-        SQUARE\r
-        SQUARE\r
-        {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'}\r
-    """\r
-    return Dict( ZeroOrMore( Group ( key + value ) ) )\r
-\r
-def originalTextFor(expr, asString=True):\r
-    """\r
-    Helper to return the original, untokenized text for a given expression.  Useful to\r
-    restore the parsed fields of an HTML start tag into the raw tag text itself, or to\r
-    revert separate tokens with intervening whitespace back to the original matching\r
-    input text. By default, returns astring containing the original parsed text.\r
-\r
-    If the optional C{asString} argument is passed as C{False}, then the return value is a\r
-    C{L{ParseResults}} containing any results names that were originally matched, and a\r
-    single token containing the original matched text from the input string.  So if\r
-    the expression passed to C{L{originalTextFor}} contains expressions with defined\r
-    results names, you must set C{asString} to C{False} if you want to preserve those\r
-    results name values.\r
-\r
-    Example::\r
-        src = "this is test <b> bold <i>text</i> </b> normal text "\r
-        for tag in ("b","i"):\r
-            opener,closer = makeHTMLTags(tag)\r
-            patt = originalTextFor(opener + SkipTo(closer) + closer)\r
-            print(patt.searchString(src)[0])\r
-    prints::\r
-        ['<b> bold <i>text</i> </b>']\r
-        ['<i>text</i>']\r
-    """\r
-    locMarker = Empty().setParseAction(lambda s,loc,t: loc)\r
-    endlocMarker = locMarker.copy()\r
-    endlocMarker.callPreparse = False\r
-    matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end")\r
-    if asString:\r
-        extractText = lambda s,l,t: s[t._original_start:t._original_end]\r
-    else:\r
-        def extractText(s,l,t):\r
-            t[:] = [s[t.pop('_original_start'):t.pop('_original_end')]]\r
-    matchExpr.setParseAction(extractText)\r
-    matchExpr.ignoreExprs = expr.ignoreExprs\r
-    return matchExpr\r
-\r
-def ungroup(expr):\r
-    """\r
-    Helper to undo pyparsing's default grouping of And expressions, even\r
-    if all but one are non-empty.\r
-    """\r
-    return TokenConverter(expr).setParseAction(lambda t:t[0])\r
-\r
-def locatedExpr(expr):\r
-    """\r
-    Helper to decorate a returned token with its starting and ending locations in the input string.\r
-    This helper adds the following results names:\r
-     - locn_start = location where matched expression begins\r
-     - locn_end = location where matched expression ends\r
-     - value = the actual parsed results\r
-\r
-    Be careful if the input text contains C{<TAB>} characters, you may want to call\r
-    C{L{ParserElement.parseWithTabs}}\r
-\r
-    Example::\r
-        wd = Word(alphas)\r
-        for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"):\r
-            print(match)\r
-    prints::\r
-        [[0, 'ljsdf', 5]]\r
-        [[8, 'lksdjjf', 15]]\r
-        [[18, 'lkkjj', 23]]\r
-    """\r
-    locator = Empty().setParseAction(lambda s,l,t: l)\r
-    return Group(locator("locn_start") + expr("value") + locator.copy().leaveWhitespace()("locn_end"))\r
-\r
-\r
-# convenience constants for positional expressions\r
-empty       = Empty().setName("empty")\r
-lineStart   = LineStart().setName("lineStart")\r
-lineEnd     = LineEnd().setName("lineEnd")\r
-stringStart = StringStart().setName("stringStart")\r
-stringEnd   = StringEnd().setName("stringEnd")\r
-\r
-_escapedPunc = Word( _bslash, r"\[]-*.$+^?()~ ", exact=2 ).setParseAction(lambda s,l,t:t[0][1])\r
-_escapedHexChar = Regex(r"\\0?[xX][0-9a-fA-F]+").setParseAction(lambda s,l,t:unichr(int(t[0].lstrip(r'\0x'),16)))\r
-_escapedOctChar = Regex(r"\\0[0-7]+").setParseAction(lambda s,l,t:unichr(int(t[0][1:],8)))\r
-_singleChar = _escapedPunc | _escapedHexChar | _escapedOctChar | CharsNotIn(r'\]', exact=1)\r
-_charRange = Group(_singleChar + Suppress("-") + _singleChar)\r
-_reBracketExpr = Literal("[") + Optional("^").setResultsName("negate") + Group( OneOrMore( _charRange | _singleChar ) ).setResultsName("body") + "]"\r
-\r
-def srange(s):\r
-    r"""\r
-    Helper to easily define string ranges for use in Word construction.  Borrows\r
-    syntax from regexp '[]' string range definitions::\r
-        srange("[0-9]")   -> "0123456789"\r
-        srange("[a-z]")   -> "abcdefghijklmnopqrstuvwxyz"\r
-        srange("[a-z$_]") -> "abcdefghijklmnopqrstuvwxyz$_"\r
-    The input string must be enclosed in []'s, and the returned string is the expanded\r
-    character set joined into a single string.\r
-    The values enclosed in the []'s may be:\r
-     - a single character\r
-     - an escaped character with a leading backslash (such as C{\-} or C{\]})\r
-     - an escaped hex character with a leading C{'\x'} (C{\x21}, which is a C{'!'} character)\r
-         (C{\0x##} is also supported for backwards compatibility)\r
-     - an escaped octal character with a leading C{'\0'} (C{\041}, which is a C{'!'} character)\r
-     - a range of any of the above, separated by a dash (C{'a-z'}, etc.)\r
-     - any combination of the above (C{'aeiouy'}, C{'a-zA-Z0-9_$'}, etc.)\r
-    """\r
-    _expanded = lambda p: p if not isinstance(p,ParseResults) else ''.join(unichr(c) for c in range(ord(p[0]),ord(p[1])+1))\r
-    try:\r
-        return "".join(_expanded(part) for part in _reBracketExpr.parseString(s).body)\r
-    except Exception:\r
-        return ""\r
-\r
-def matchOnlyAtCol(n):\r
-    """\r
-    Helper method for defining parse actions that require matching at a specific\r
-    column in the input text.\r
-    """\r
-    def verifyCol(strg,locn,toks):\r
-        if col(locn,strg) != n:\r
-            raise ParseException(strg,locn,"matched token not at column %d" % n)\r
-    return verifyCol\r
-\r
-def replaceWith(replStr):\r
-    """\r
-    Helper method for common parse actions that simply return a literal value.  Especially\r
-    useful when used with C{L{transformString<ParserElement.transformString>}()}.\r
-\r
-    Example::\r
-        num = Word(nums).setParseAction(lambda toks: int(toks[0]))\r
-        na = oneOf("N/A NA").setParseAction(replaceWith(math.nan))\r
-        term = na | num\r
-\r
-        OneOrMore(term).parseString("324 234 N/A 234") # -> [324, 234, nan, 234]\r
-    """\r
-    return lambda s,l,t: [replStr]\r
-\r
-def removeQuotes(s,l,t):\r
-    """\r
-    Helper parse action for removing quotation marks from parsed quoted strings.\r
-\r
-    Example::\r
-        # by default, quotation marks are included in parsed results\r
-        quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["'Now is the Winter of our Discontent'"]\r
-\r
-        # use removeQuotes to strip quotation marks from parsed results\r
-        quotedString.setParseAction(removeQuotes)\r
-        quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["Now is the Winter of our Discontent"]\r
-    """\r
-    return t[0][1:-1]\r
-\r
-def tokenMap(func, *args):\r
-    """\r
-    Helper to define a parse action by mapping a function to all elements of a ParseResults list.If any additional\r
-    args are passed, they are forwarded to the given function as additional arguments after\r
-    the token, as in C{hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))}, which will convert the\r
-    parsed data to an integer using base 16.\r
-\r
-    Example (compare the last to example in L{ParserElement.transformString}::\r
-        hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))\r
-        hex_ints.runTests('''\r
-            00 11 22 aa FF 0a 0d 1a\r
-            ''')\r
-\r
-        upperword = Word(alphas).setParseAction(tokenMap(str.upper))\r
-        OneOrMore(upperword).runTests('''\r
-            my kingdom for a horse\r
-            ''')\r
-\r
-        wd = Word(alphas).setParseAction(tokenMap(str.title))\r
-        OneOrMore(wd).setParseAction(' '.join).runTests('''\r
-            now is the winter of our discontent made glorious summer by this sun of york\r
-            ''')\r
-    prints::\r
-        00 11 22 aa FF 0a 0d 1a\r
-        [0, 17, 34, 170, 255, 10, 13, 26]\r
-\r
-        my kingdom for a horse\r
-        ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE']\r
-\r
-        now is the winter of our discontent made glorious summer by this sun of york\r
-        ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York']\r
-    """\r
-    def pa(s,l,t):\r
-        return [func(tokn, *args) for tokn in t]\r
-\r
-    try:\r
-        func_name = getattr(func, '__name__',\r
-                            getattr(func, '__class__').__name__)\r
-    except Exception:\r
-        func_name = str(func)\r
-    pa.__name__ = func_name\r
-\r
-    return pa\r
-\r
-upcaseTokens = tokenMap(lambda t: _ustr(t).upper())\r
-"""(Deprecated) Helper parse action to convert tokens to upper case. Deprecated in favor of L{pyparsing_common.upcaseTokens}"""\r
-\r
-downcaseTokens = tokenMap(lambda t: _ustr(t).lower())\r
-"""(Deprecated) Helper parse action to convert tokens to lower case. Deprecated in favor of L{pyparsing_common.downcaseTokens}"""\r
-\r
-def _makeTags(tagStr, xml):\r
-    """Internal helper to construct opening and closing tag expressions, given a tag name"""\r
-    if isinstance(tagStr,basestring):\r
-        resname = tagStr\r
-        tagStr = Keyword(tagStr, caseless=not xml)\r
-    else:\r
-        resname = tagStr.name\r
-\r
-    tagAttrName = Word(alphas,alphanums+"_-:")\r
-    if (xml):\r
-        tagAttrValue = dblQuotedString.copy().setParseAction( removeQuotes )\r
-        openTag = Suppress("<") + tagStr("tag") + \\r
-                Dict(ZeroOrMore(Group( tagAttrName + Suppress("=") + tagAttrValue ))) + \\r
-                Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">")\r
-    else:\r
-        printablesLessRAbrack = "".join(c for c in printables if c not in ">")\r
-        tagAttrValue = quotedString.copy().setParseAction( removeQuotes ) | Word(printablesLessRAbrack)\r
-        openTag = Suppress("<") + tagStr("tag") + \\r
-                Dict(ZeroOrMore(Group( tagAttrName.setParseAction(downcaseTokens) + \\r
-                Optional( Suppress("=") + tagAttrValue ) ))) + \\r
-                Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">")\r
-    closeTag = Combine(_L("</") + tagStr + ">")\r
-\r
-    openTag = openTag.setResultsName("start"+"".join(resname.replace(":"," ").title().split())).setName("<%s>" % resname)\r
-    closeTag = closeTag.setResultsName("end"+"".join(resname.replace(":"," ").title().split())).setName("</%s>" % resname)\r
-    openTag.tag = resname\r
-    closeTag.tag = resname\r
-    return openTag, closeTag\r
-\r
-def makeHTMLTags(tagStr):\r
-    """\r
-    Helper to construct opening and closing tag expressions for HTML, given a tag name. Matches\r
-    tags in either upper or lower case, attributes with namespaces and with quoted or unquoted values.\r
-\r
-    Example::\r
-        text = '<td>More info at the <a href="http://pyparsing.wikispaces.com">pyparsing</a> wiki page</td>'\r
-        # makeHTMLTags returns pyparsing expressions for the opening and closing tags as a 2-tuple\r
-        a,a_end = makeHTMLTags("A")\r
-        link_expr = a + SkipTo(a_end)("link_text") + a_end\r
-\r
-        for link in link_expr.searchString(text):\r
-            # attributes in the <A> tag (like "href" shown here) are also accessible as named results\r
-            print(link.link_text, '->', link.href)\r
-    prints::\r
-        pyparsing -> http://pyparsing.wikispaces.com\r
-    """\r
-    return _makeTags( tagStr, False )\r
-\r
-def makeXMLTags(tagStr):\r
-    """\r
-    Helper to construct opening and closing tag expressions for XML, given a tag name. Matches\r
-    tags only in the given upper/lower case.\r
-\r
-    Example: similar to L{makeHTMLTags}\r
-    """\r
-    return _makeTags( tagStr, True )\r
-\r
-def withAttribute(*args,**attrDict):\r
-    """\r
-    Helper to create a validating parse action to be used with start tags created\r
-    with C{L{makeXMLTags}} or C{L{makeHTMLTags}}. Use C{withAttribute} to qualify a starting tag\r
-    with a required attribute value, to avoid false matches on common tags such as\r
-    C{<TD>} or C{<DIV>}.\r
-\r
-    Call C{withAttribute} with a series of attribute names and values. Specify the list\r
-    of filter attributes names and values as:\r
-     - keyword arguments, as in C{(align="right")}, or\r
-     - as an explicit dict with C{**} operator, when an attribute name is also a Python\r
-          reserved word, as in C{**{"class":"Customer", "align":"right"}}\r
-     - a list of name-value tuples, as in ( ("ns1:class", "Customer"), ("ns2:align","right") )\r
-    For attribute names with a namespace prefix, you must use the second form.  Attribute\r
-    names are matched insensitive to upper/lower case.\r
-\r
-    If just testing for C{class} (with or without a namespace), use C{L{withClass}}.\r
-\r
-    To verify that the attribute exists, but without specifying a value, pass\r
-    C{withAttribute.ANY_VALUE} as the value.\r
-\r
-    Example::\r
-        html = '''\r
-            <div>\r
-            Some text\r
-            <div type="grid">1 4 0 1 0</div>\r
-            <div type="graph">1,3 2,3 1,1</div>\r
-            <div>this has no type</div>\r
-            </div>\r
-\r
-        '''\r
-        div,div_end = makeHTMLTags("div")\r
-\r
-        # only match div tag having a type attribute with value "grid"\r
-        div_grid = div().setParseAction(withAttribute(type="grid"))\r
-        grid_expr = div_grid + SkipTo(div | div_end)("body")\r
-        for grid_header in grid_expr.searchString(html):\r
-            print(grid_header.body)\r
-\r
-        # construct a match with any div tag having a type attribute, regardless of the value\r
-        div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE))\r
-        div_expr = div_any_type + SkipTo(div | div_end)("body")\r
-        for div_header in div_expr.searchString(html):\r
-            print(div_header.body)\r
-    prints::\r
-        1 4 0 1 0\r
-\r
-        1 4 0 1 0\r
-        1,3 2,3 1,1\r
-    """\r
-    if args:\r
-        attrs = args[:]\r
-    else:\r
-        attrs = attrDict.items()\r
-    attrs = [(k,v) for k,v in attrs]\r
-    def pa(s,l,tokens):\r
-        for attrName,attrValue in attrs:\r
-            if attrName not in tokens:\r
-                raise ParseException(s,l,"no matching attribute " + attrName)\r
-            if attrValue != withAttribute.ANY_VALUE and tokens[attrName] != attrValue:\r
-                raise ParseException(s,l,"attribute '%s' has value '%s', must be '%s'" %\r
-                                            (attrName, tokens[attrName], attrValue))\r
-    return pa\r
-withAttribute.ANY_VALUE = object()\r
-\r
-def withClass(classname, namespace=''):\r
-    """\r
-    Simplified version of C{L{withAttribute}} when matching on a div class - made\r
-    difficult because C{class} is a reserved word in Python.\r
-\r
-    Example::\r
-        html = '''\r
-            <div>\r
-            Some text\r
-            <div class="grid">1 4 0 1 0</div>\r
-            <div class="graph">1,3 2,3 1,1</div>\r
-            <div>this &lt;div&gt; has no class</div>\r
-            </div>\r
-\r
-        '''\r
-        div,div_end = makeHTMLTags("div")\r
-        div_grid = div().setParseAction(withClass("grid"))\r
-\r
-        grid_expr = div_grid + SkipTo(div | div_end)("body")\r
-        for grid_header in grid_expr.searchString(html):\r
-            print(grid_header.body)\r
-\r
-        div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE))\r
-        div_expr = div_any_type + SkipTo(div | div_end)("body")\r
-        for div_header in div_expr.searchString(html):\r
-            print(div_header.body)\r
-    prints::\r
-        1 4 0 1 0\r
-\r
-        1 4 0 1 0\r
-        1,3 2,3 1,1\r
-    """\r
-    classattr = "%s:class" % namespace if namespace else "class"\r
-    return withAttribute(**{classattr : classname})\r
-\r
-opAssoc = SimpleNamespace()\r
-opAssoc.LEFT = object()\r
-opAssoc.RIGHT = object()\r
-\r
-def infixNotation( baseExpr, opList, lpar=Suppress('('), rpar=Suppress(')') ):\r
-    """\r
-    Helper method for constructing grammars of expressions made up of\r
-    operators working in a precedence hierarchy.  Operators may be unary or\r
-    binary, left- or right-associative.  Parse actions can also be attached\r
-    to operator expressions. The generated parser will also recognize the use\r
-    of parentheses to override operator precedences (see example below).\r
-\r
-    Note: if you define a deep operator list, you may see performance issues\r
-    when using infixNotation. See L{ParserElement.enablePackrat} for a\r
-    mechanism to potentially improve your parser performance.\r
-\r
-    Parameters:\r
-     - baseExpr - expression representing the most basic element for the nested\r
-     - opList - list of tuples, one for each operator precedence level in the\r
-      expression grammar; each tuple is of the form\r
-      (opExpr, numTerms, rightLeftAssoc, parseAction), where:\r
-       - opExpr is the pyparsing expression for the operator;\r
-          may also be a string, which will be converted to a Literal;\r
-          if numTerms is 3, opExpr is a tuple of two expressions, for the\r
-          two operators separating the 3 terms\r
-       - numTerms is the number of terms for this operator (must\r
-          be 1, 2, or 3)\r
-       - rightLeftAssoc is the indicator whether the operator is\r
-          right or left associative, using the pyparsing-defined\r
-          constants C{opAssoc.RIGHT} and C{opAssoc.LEFT}.\r
-       - parseAction is the parse action to be associated with\r
-          expressions matching this operator expression (the\r
-          parse action tuple member may be omitted); if the parse action\r
-          is passed a tuple or list of functions, this is equivalent to\r
-          calling C{setParseAction(*fn)} (L{ParserElement.setParseAction})\r
-     - lpar - expression for matching left-parentheses (default=C{Suppress('(')})\r
-     - rpar - expression for matching right-parentheses (default=C{Suppress(')')})\r
-\r
-    Example::\r
-        # simple example of four-function arithmetic with ints and variable names\r
-        integer = pyparsing_common.signed_integer\r
-        varname = pyparsing_common.identifier\r
-\r
-        arith_expr = infixNotation(integer | varname,\r
-            [\r
-            ('-', 1, opAssoc.RIGHT),\r
-            (oneOf('* /'), 2, opAssoc.LEFT),\r
-            (oneOf('+ -'), 2, opAssoc.LEFT),\r
-            ])\r
-\r
-        arith_expr.runTests('''\r
-            5+3*6\r
-            (5+3)*6\r
-            -2--11\r
-            ''', fullDump=False)\r
-    prints::\r
-        5+3*6\r
-        [[5, '+', [3, '*', 6]]]\r
-\r
-        (5+3)*6\r
-        [[[5, '+', 3], '*', 6]]\r
-\r
-        -2--11\r
-        [[['-', 2], '-', ['-', 11]]]\r
-    """\r
-    # captive version of FollowedBy that does not do parse actions or capture results names\r
-    class _FB(FollowedBy):\r
-        def parseImpl(self, instring, loc, doActions=True):\r
-            self.expr.tryParse(instring, loc)\r
-            return loc, []\r
-\r
-    ret = Forward()\r
-    lastExpr = baseExpr | ( lpar + ret + rpar )\r
-    for i,operDef in enumerate(opList):\r
-        opExpr,arity,rightLeftAssoc,pa = (operDef + (None,))[:4]\r
-        termName = "%s term" % opExpr if arity < 3 else "%s%s term" % opExpr\r
-        if arity == 3:\r
-            if opExpr is None or len(opExpr) != 2:\r
-                raise ValueError("if numterms=3, opExpr must be a tuple or list of two expressions")\r
-            opExpr1, opExpr2 = opExpr\r
-        thisExpr = Forward().setName(termName)\r
-        if rightLeftAssoc == opAssoc.LEFT:\r
-            if arity == 1:\r
-                matchExpr = _FB(lastExpr + opExpr) + Group( lastExpr + OneOrMore( opExpr ) )\r
-            elif arity == 2:\r
-                if opExpr is not None:\r
-                    matchExpr = _FB(lastExpr + opExpr + lastExpr) + Group( lastExpr + OneOrMore( opExpr + lastExpr ) )\r
-                else:\r
-                    matchExpr = _FB(lastExpr+lastExpr) + Group( lastExpr + OneOrMore(lastExpr) )\r
-            elif arity == 3:\r
-                matchExpr = _FB(lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr) + \\r
-                            Group( lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr )\r
-            else:\r
-                raise ValueError("operator must be unary (1), binary (2), or ternary (3)")\r
-        elif rightLeftAssoc == opAssoc.RIGHT:\r
-            if arity == 1:\r
-                # try to avoid LR with this extra test\r
-                if not isinstance(opExpr, Optional):\r
-                    opExpr = Optional(opExpr)\r
-                matchExpr = _FB(opExpr.expr + thisExpr) + Group( opExpr + thisExpr )\r
-            elif arity == 2:\r
-                if opExpr is not None:\r
-                    matchExpr = _FB(lastExpr + opExpr + thisExpr) + Group( lastExpr + OneOrMore( opExpr + thisExpr ) )\r
-                else:\r
-                    matchExpr = _FB(lastExpr + thisExpr) + Group( lastExpr + OneOrMore( thisExpr ) )\r
-            elif arity == 3:\r
-                matchExpr = _FB(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) + \\r
-                            Group( lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr )\r
-            else:\r
-                raise ValueError("operator must be unary (1), binary (2), or ternary (3)")\r
-        else:\r
-            raise ValueError("operator must indicate right or left associativity")\r
-        if pa:\r
-            if isinstance(pa, (tuple, list)):\r
-                matchExpr.setParseAction(*pa)\r
-            else:\r
-                matchExpr.setParseAction(pa)\r
-        thisExpr <<= ( matchExpr.setName(termName) | lastExpr )\r
-        lastExpr = thisExpr\r
-    ret <<= lastExpr\r
-    return ret\r
-\r
-operatorPrecedence = infixNotation\r
-"""(Deprecated) Former name of C{L{infixNotation}}, will be dropped in a future release."""\r
-\r
-dblQuotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"').setName("string enclosed in double quotes")\r
-sglQuotedString = Combine(Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("string enclosed in single quotes")\r
-quotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"'|\r
-                       Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("quotedString using single or double quotes")\r
-unicodeString = Combine(_L('u') + quotedString.copy()).setName("unicode string literal")\r
-\r
-def nestedExpr(opener="(", closer=")", content=None, ignoreExpr=quotedString.copy()):\r
-    """\r
-    Helper method for defining nested lists enclosed in opening and closing\r
-    delimiters ("(" and ")" are the default).\r
-\r
-    Parameters:\r
-     - opener - opening character for a nested list (default=C{"("}); can also be a pyparsing expression\r
-     - closer - closing character for a nested list (default=C{")"}); can also be a pyparsing expression\r
-     - content - expression for items within the nested lists (default=C{None})\r
-     - ignoreExpr - expression for ignoring opening and closing delimiters (default=C{quotedString})\r
-\r
-    If an expression is not provided for the content argument, the nested\r
-    expression will capture all whitespace-delimited content between delimiters\r
-    as a list of separate values.\r
-\r
-    Use the C{ignoreExpr} argument to define expressions that may contain\r
-    opening or closing characters that should not be treated as opening\r
-    or closing characters for nesting, such as quotedString or a comment\r
-    expression.  Specify multiple expressions using an C{L{Or}} or C{L{MatchFirst}}.\r
-    The default is L{quotedString}, but if no expressions are to be ignored,\r
-    then pass C{None} for this argument.\r
-\r
-    Example::\r
-        data_type = oneOf("void int short long char float double")\r
-        decl_data_type = Combine(data_type + Optional(Word('*')))\r
-        ident = Word(alphas+'_', alphanums+'_')\r
-        number = pyparsing_common.number\r
-        arg = Group(decl_data_type + ident)\r
-        LPAR,RPAR = map(Suppress, "()")\r
-\r
-        code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment))\r
-\r
-        c_function = (decl_data_type("type")\r
-                      + ident("name")\r
-                      + LPAR + Optional(delimitedList(arg), [])("args") + RPAR\r
-                      + code_body("body"))\r
-        c_function.ignore(cStyleComment)\r
-\r
-        source_code = '''\r
-            int is_odd(int x) {\r
-                return (x%2);\r
-            }\r
-\r
-            int dec_to_hex(char hchar) {\r
-                if (hchar >= '0' && hchar <= '9') {\r
-                    return (ord(hchar)-ord('0'));\r
-                } else {\r
-                    return (10+ord(hchar)-ord('A'));\r
-                }\r
-            }\r
-        '''\r
-        for func in c_function.searchString(source_code):\r
-            print("%(name)s (%(type)s) args: %(args)s" % func)\r
-\r
-    prints::\r
-        is_odd (int) args: [['int', 'x']]\r
-        dec_to_hex (int) args: [['char', 'hchar']]\r
-    """\r
-    if opener == closer:\r
-        raise ValueError("opening and closing strings cannot be the same")\r
-    if content is None:\r
-        if isinstance(opener,basestring) and isinstance(closer,basestring):\r
-            if len(opener) == 1 and len(closer)==1:\r
-                if ignoreExpr is not None:\r
-                    content = (Combine(OneOrMore(~ignoreExpr +\r
-                                    CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS,exact=1))\r
-                                ).setParseAction(lambda t:t[0].strip()))\r
-                else:\r
-                    content = (empty.copy()+CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS\r
-                                ).setParseAction(lambda t:t[0].strip()))\r
-            else:\r
-                if ignoreExpr is not None:\r
-                    content = (Combine(OneOrMore(~ignoreExpr +\r
-                                    ~Literal(opener) + ~Literal(closer) +\r
-                                    CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1))\r
-                                ).setParseAction(lambda t:t[0].strip()))\r
-                else:\r
-                    content = (Combine(OneOrMore(~Literal(opener) + ~Literal(closer) +\r
-                                    CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1))\r
-                                ).setParseAction(lambda t:t[0].strip()))\r
-        else:\r
-            raise ValueError("opening and closing arguments must be strings if no content expression is given")\r
-    ret = Forward()\r
-    if ignoreExpr is not None:\r
-        ret <<= Group( Suppress(opener) + ZeroOrMore( ignoreExpr | ret | content ) + Suppress(closer) )\r
-    else:\r
-        ret <<= Group( Suppress(opener) + ZeroOrMore( ret | content )  + Suppress(closer) )\r
-    ret.setName('nested %s%s expression' % (opener,closer))\r
-    return ret\r
-\r
-def indentedBlock(blockStatementExpr, indentStack, indent=True):\r
-    """\r
-    Helper method for defining space-delimited indentation blocks, such as\r
-    those used to define block statements in Python source code.\r
-\r
-    Parameters:\r
-     - blockStatementExpr - expression defining syntax of statement that\r
-            is repeated within the indented block\r
-     - indentStack - list created by caller to manage indentation stack\r
-            (multiple statementWithIndentedBlock expressions within a single grammar\r
-            should share a common indentStack)\r
-     - indent - boolean indicating whether block must be indented beyond the\r
-            the current level; set to False for block of left-most statements\r
-            (default=C{True})\r
-\r
-    A valid block must contain at least one C{blockStatement}.\r
-\r
-    Example::\r
-        data = '''\r
-        def A(z):\r
-          A1\r
-          B = 100\r
-          G = A2\r
-          A2\r
-          A3\r
-        B\r
-        def BB(a,b,c):\r
-          BB1\r
-          def BBA():\r
-            bba1\r
-            bba2\r
-            bba3\r
-        C\r
-        D\r
-        def spam(x,y):\r
-             def eggs(z):\r
-                 pass\r
-        '''\r
-\r
-\r
-        indentStack = [1]\r
-        stmt = Forward()\r
-\r
-        identifier = Word(alphas, alphanums)\r
-        funcDecl = ("def" + identifier + Group( "(" + Optional( delimitedList(identifier) ) + ")" ) + ":")\r
-        func_body = indentedBlock(stmt, indentStack)\r
-        funcDef = Group( funcDecl + func_body )\r
-\r
-        rvalue = Forward()\r
-        funcCall = Group(identifier + "(" + Optional(delimitedList(rvalue)) + ")")\r
-        rvalue << (funcCall | identifier | Word(nums))\r
-        assignment = Group(identifier + "=" + rvalue)\r
-        stmt << ( funcDef | assignment | identifier )\r
-\r
-        module_body = OneOrMore(stmt)\r
-\r
-        parseTree = module_body.parseString(data)\r
-        parseTree.pprint()\r
-    prints::\r
-        [['def',\r
-          'A',\r
-          ['(', 'z', ')'],\r
-          ':',\r
-          [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]],\r
-         'B',\r
-         ['def',\r
-          'BB',\r
-          ['(', 'a', 'b', 'c', ')'],\r
-          ':',\r
-          [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]],\r
-         'C',\r
-         'D',\r
-         ['def',\r
-          'spam',\r
-          ['(', 'x', 'y', ')'],\r
-          ':',\r
-          [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]]\r
-    """\r
-    def checkPeerIndent(s,l,t):\r
-        if l >= len(s): return\r
-        curCol = col(l,s)\r
-        if curCol != indentStack[-1]:\r
-            if curCol > indentStack[-1]:\r
-                raise ParseFatalException(s,l,"illegal nesting")\r
-            raise ParseException(s,l,"not a peer entry")\r
-\r
-    def checkSubIndent(s,l,t):\r
-        curCol = col(l,s)\r
-        if curCol > indentStack[-1]:\r
-            indentStack.append( curCol )\r
-        else:\r
-            raise ParseException(s,l,"not a subentry")\r
-\r
-    def checkUnindent(s,l,t):\r
-        if l >= len(s): return\r
-        curCol = col(l,s)\r
-        if not(indentStack and curCol < indentStack[-1] and curCol <= indentStack[-2]):\r
-            raise ParseException(s,l,"not an unindent")\r
-        indentStack.pop()\r
-\r
-    NL = OneOrMore(LineEnd().setWhitespaceChars("\t ").suppress())\r
-    INDENT = (Empty() + Empty().setParseAction(checkSubIndent)).setName('INDENT')\r
-    PEER   = Empty().setParseAction(checkPeerIndent).setName('')\r
-    UNDENT = Empty().setParseAction(checkUnindent).setName('UNINDENT')\r
-    if indent:\r
-        smExpr = Group( Optional(NL) +\r
-            #~ FollowedBy(blockStatementExpr) +\r
-            INDENT + (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) + UNDENT)\r
-    else:\r
-        smExpr = Group( Optional(NL) +\r
-            (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) )\r
-    blockStatementExpr.ignore(_bslash + LineEnd())\r
-    return smExpr.setName('indented block')\r
-\r
-alphas8bit = srange(r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]")\r
-punc8bit = srange(r"[\0xa1-\0xbf\0xd7\0xf7]")\r
-\r
-anyOpenTag,anyCloseTag = makeHTMLTags(Word(alphas,alphanums+"_:").setName('any tag'))\r
-_htmlEntityMap = dict(zip("gt lt amp nbsp quot apos".split(),'><& "\''))\r
-commonHTMLEntity = Regex('&(?P<entity>' + '|'.join(_htmlEntityMap.keys()) +");").setName("common HTML entity")\r
-def replaceHTMLEntity(t):\r
-    """Helper parser action to replace common HTML entities with their special characters"""\r
-    return _htmlEntityMap.get(t.entity)\r
-\r
-# it's easy to get these comment structures wrong - they're very common, so may as well make them available\r
-cStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/').setName("C style comment")\r
-"Comment of the form C{/* ... */}"\r
-\r
-htmlComment = Regex(r"<!--[\s\S]*?-->").setName("HTML comment")\r
-"Comment of the form C{<!-- ... -->}"\r
-\r
-restOfLine = Regex(r".*").leaveWhitespace().setName("rest of line")\r
-dblSlashComment = Regex(r"//(?:\\\n|[^\n])*").setName("// comment")\r
-"Comment of the form C{// ... (to end of line)}"\r
-\r
-cppStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/'| dblSlashComment).setName("C++ style comment")\r
-"Comment of either form C{L{cStyleComment}} or C{L{dblSlashComment}}"\r
-\r
-javaStyleComment = cppStyleComment\r
-"Same as C{L{cppStyleComment}}"\r
-\r
-pythonStyleComment = Regex(r"#.*").setName("Python style comment")\r
-"Comment of the form C{# ... (to end of line)}"\r
-\r
-_commasepitem = Combine(OneOrMore(Word(printables, excludeChars=',') +\r
-                                  Optional( Word(" \t") +\r
-                                            ~Literal(",") + ~LineEnd() ) ) ).streamline().setName("commaItem")\r
-commaSeparatedList = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("commaSeparatedList")\r
-"""(Deprecated) Predefined expression of 1 or more printable words or quoted strings, separated by commas.\r
-   This expression is deprecated in favor of L{pyparsing_common.comma_separated_list}."""\r
-\r
-# some other useful expressions - using lower-case class name since we are really using this as a namespace\r
-class pyparsing_common:\r
-    """\r
-    Here are some common low-level expressions that may be useful in jump-starting parser development:\r
-     - numeric forms (L{integers<integer>}, L{reals<real>}, L{scientific notation<sci_real>})\r
-     - common L{programming identifiers<identifier>}\r
-     - network addresses (L{MAC<mac_address>}, L{IPv4<ipv4_address>}, L{IPv6<ipv6_address>})\r
-     - ISO8601 L{dates<iso8601_date>} and L{datetime<iso8601_datetime>}\r
-     - L{UUID<uuid>}\r
-     - L{comma-separated list<comma_separated_list>}\r
-    Parse actions:\r
-     - C{L{convertToInteger}}\r
-     - C{L{convertToFloat}}\r
-     - C{L{convertToDate}}\r
-     - C{L{convertToDatetime}}\r
-     - C{L{stripHTMLTags}}\r
-     - C{L{upcaseTokens}}\r
-     - C{L{downcaseTokens}}\r
-\r
-    Example::\r
-        pyparsing_common.number.runTests('''\r
-            # any int or real number, returned as the appropriate type\r
-            100\r
-            -100\r
-            +100\r
-            3.14159\r
-            6.02e23\r
-            1e-12\r
-            ''')\r
-\r
-        pyparsing_common.fnumber.runTests('''\r
-            # any int or real number, returned as float\r
-            100\r
-            -100\r
-            +100\r
-            3.14159\r
-            6.02e23\r
-            1e-12\r
-            ''')\r
-\r
-        pyparsing_common.hex_integer.runTests('''\r
-            # hex numbers\r
-            100\r
-            FF\r
-            ''')\r
-\r
-        pyparsing_common.fraction.runTests('''\r
-            # fractions\r
-            1/2\r
-            -3/4\r
-            ''')\r
-\r
-        pyparsing_common.mixed_integer.runTests('''\r
-            # mixed fractions\r
-            1\r
-            1/2\r
-            -3/4\r
-            1-3/4\r
-            ''')\r
-\r
-        import uuid\r
-        pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID))\r
-        pyparsing_common.uuid.runTests('''\r
-            # uuid\r
-            12345678-1234-5678-1234-567812345678\r
-            ''')\r
-    prints::\r
-        # any int or real number, returned as the appropriate type\r
-        100\r
-        [100]\r
-\r
-        -100\r
-        [-100]\r
-\r
-        +100\r
-        [100]\r
-\r
-        3.14159\r
-        [3.14159]\r
-\r
-        6.02e23\r
-        [6.02e+23]\r
-\r
-        1e-12\r
-        [1e-12]\r
-\r
-        # any int or real number, returned as float\r
-        100\r
-        [100.0]\r
-\r
-        -100\r
-        [-100.0]\r
-\r
-        +100\r
-        [100.0]\r
-\r
-        3.14159\r
-        [3.14159]\r
-\r
-        6.02e23\r
-        [6.02e+23]\r
-\r
-        1e-12\r
-        [1e-12]\r
-\r
-        # hex numbers\r
-        100\r
-        [256]\r
-\r
-        FF\r
-        [255]\r
-\r
-        # fractions\r
-        1/2\r
-        [0.5]\r
-\r
-        -3/4\r
-        [-0.75]\r
-\r
-        # mixed fractions\r
-        1\r
-        [1]\r
-\r
-        1/2\r
-        [0.5]\r
-\r
-        -3/4\r
-        [-0.75]\r
-\r
-        1-3/4\r
-        [1.75]\r
-\r
-        # uuid\r
-        12345678-1234-5678-1234-567812345678\r
-        [UUID('12345678-1234-5678-1234-567812345678')]\r
-    """\r
-\r
-    convertToInteger = tokenMap(int)\r
-    """\r
-    Parse action for converting parsed integers to Python int\r
-    """\r
-\r
-    convertToFloat = tokenMap(float)\r
-    """\r
-    Parse action for converting parsed numbers to Python float\r
-    """\r
-\r
-    integer = Word(nums).setName("integer").setParseAction(convertToInteger)\r
-    """expression that parses an unsigned integer, returns an int"""\r
-\r
-    hex_integer = Word(hexnums).setName("hex integer").setParseAction(tokenMap(int,16))\r
-    """expression that parses a hexadecimal integer, returns an int"""\r
-\r
-    signed_integer = Regex(r'[+-]?\d+').setName("signed integer").setParseAction(convertToInteger)\r
-    """expression that parses an integer with optional leading sign, returns an int"""\r
-\r
-    fraction = (signed_integer().setParseAction(convertToFloat) + '/' + signed_integer().setParseAction(convertToFloat)).setName("fraction")\r
-    """fractional expression of an integer divided by an integer, returns a float"""\r
-    fraction.addParseAction(lambda t: t[0]/t[-1])\r
-\r
-    mixed_integer = (fraction | signed_integer + Optional(Optional('-').suppress() + fraction)).setName("fraction or mixed integer-fraction")\r
-    """mixed integer of the form 'integer - fraction', with optional leading integer, returns float"""\r
-    mixed_integer.addParseAction(sum)\r
-\r
-    real = Regex(r'[+-]?\d+\.\d*').setName("real number").setParseAction(convertToFloat)\r
-    """expression that parses a floating point number and returns a float"""\r
-\r
-    sci_real = Regex(r'[+-]?\d+([eE][+-]?\d+|\.\d*([eE][+-]?\d+)?)').setName("real number with scientific notation").setParseAction(convertToFloat)\r
-    """expression that parses a floating point number with optional scientific notation and returns a float"""\r
-\r
-    # streamlining this expression makes the docs nicer-looking\r
-    number = (sci_real | real | signed_integer).streamline()\r
-    """any numeric expression, returns the corresponding Python type"""\r
-\r
-    fnumber = Regex(r'[+-]?\d+\.?\d*([eE][+-]?\d+)?').setName("fnumber").setParseAction(convertToFloat)\r
-    """any int or real number, returned as float"""\r
-\r
-    identifier = Word(alphas+'_', alphanums+'_').setName("identifier")\r
-    """typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')"""\r
-\r
-    ipv4_address = Regex(r'(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}').setName("IPv4 address")\r
-    "IPv4 address (C{0.0.0.0 - 255.255.255.255})"\r
-\r
-    _ipv6_part = Regex(r'[0-9a-fA-F]{1,4}').setName("hex_integer")\r
-    _full_ipv6_address = (_ipv6_part + (':' + _ipv6_part)*7).setName("full IPv6 address")\r
-    _short_ipv6_address = (Optional(_ipv6_part + (':' + _ipv6_part)*(0,6)) + "::" + Optional(_ipv6_part + (':' + _ipv6_part)*(0,6))).setName("short IPv6 address")\r
-    _short_ipv6_address.addCondition(lambda t: sum(1 for tt in t if pyparsing_common._ipv6_part.matches(tt)) < 8)\r
-    _mixed_ipv6_address = ("::ffff:" + ipv4_address).setName("mixed IPv6 address")\r
-    ipv6_address = Combine((_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).setName("IPv6 address")).setName("IPv6 address")\r
-    "IPv6 address (long, short, or mixed form)"\r
-\r
-    mac_address = Regex(r'[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}').setName("MAC address")\r
-    "MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)"\r
-\r
-    @staticmethod\r
-    def convertToDate(fmt="%Y-%m-%d"):\r
-        """\r
-        Helper to create a parse action for converting parsed date string to Python datetime.date\r
-\r
-        Params -\r
-         - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%d"})\r
-\r
-        Example::\r
-            date_expr = pyparsing_common.iso8601_date.copy()\r
-            date_expr.setParseAction(pyparsing_common.convertToDate())\r
-            print(date_expr.parseString("1999-12-31"))\r
-        prints::\r
-            [datetime.date(1999, 12, 31)]\r
-        """\r
-        def cvt_fn(s,l,t):\r
-            try:\r
-                return datetime.strptime(t[0], fmt).date()\r
-            except ValueError as ve:\r
-                raise ParseException(s, l, str(ve))\r
-        return cvt_fn\r
-\r
-    @staticmethod\r
-    def convertToDatetime(fmt="%Y-%m-%dT%H:%M:%S.%f"):\r
-        """\r
-        Helper to create a parse action for converting parsed datetime string to Python datetime.datetime\r
-\r
-        Params -\r
-         - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%dT%H:%M:%S.%f"})\r
-\r
-        Example::\r
-            dt_expr = pyparsing_common.iso8601_datetime.copy()\r
-            dt_expr.setParseAction(pyparsing_common.convertToDatetime())\r
-            print(dt_expr.parseString("1999-12-31T23:59:59.999"))\r
-        prints::\r
-            [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)]\r
-        """\r
-        def cvt_fn(s,l,t):\r
-            try:\r
-                return datetime.strptime(t[0], fmt)\r
-            except ValueError as ve:\r
-                raise ParseException(s, l, str(ve))\r
-        return cvt_fn\r
-\r
-    iso8601_date = Regex(r'(?P<year>\d{4})(?:-(?P<month>\d\d)(?:-(?P<day>\d\d))?)?').setName("ISO8601 date")\r
-    "ISO8601 date (C{yyyy-mm-dd})"\r
-\r
-    iso8601_datetime = Regex(r'(?P<year>\d{4})-(?P<month>\d\d)-(?P<day>\d\d)[T ](?P<hour>\d\d):(?P<minute>\d\d)(:(?P<second>\d\d(\.\d*)?)?)?(?P<tz>Z|[+-]\d\d:?\d\d)?').setName("ISO8601 datetime")\r
-    "ISO8601 datetime (C{yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)}) - trailing seconds, milliseconds, and timezone optional; accepts separating C{'T'} or C{' '}"\r
-\r
-    uuid = Regex(r'[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}').setName("UUID")\r
-    "UUID (C{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})"\r
-\r
-    _html_stripper = anyOpenTag.suppress() | anyCloseTag.suppress()\r
-    @staticmethod\r
-    def stripHTMLTags(s, l, tokens):\r
-        """\r
-        Parse action to remove HTML tags from web page HTML source\r
-\r
-        Example::\r
-            # strip HTML links from normal text\r
-            text = '<td>More info at the <a href="http://pyparsing.wikispaces.com">pyparsing</a> wiki page</td>'\r
-            td,td_end = makeHTMLTags("TD")\r
-            table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end\r
-\r
-            print(table_text.parseString(text).body) # -> 'More info at the pyparsing wiki page'\r
-        """\r
-        return pyparsing_common._html_stripper.transformString(tokens[0])\r
-\r
-    _commasepitem = Combine(OneOrMore(~Literal(",") + ~LineEnd() + Word(printables, excludeChars=',')\r
-                                        + Optional( White(" \t") ) ) ).streamline().setName("commaItem")\r
-    comma_separated_list = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("comma separated list")\r
-    """Predefined expression of 1 or more printable words or quoted strings, separated by commas."""\r
-\r
-    upcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).upper()))\r
-    """Parse action to convert tokens to upper case."""\r
-\r
-    downcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).lower()))\r
-    """Parse action to convert tokens to lower case."""\r
-\r
-\r
-class _lazyclassproperty(object):\r
-    def __init__(self, fn):\r
-        self.fn = fn\r
-\r
-    def __get__(self, obj, cls):\r
-        if cls is None:\r
-            cls = type(obj)\r
-        ret = self.fn(cls)\r
-        setattr(cls, self.fn.__name__, ret)\r
-        return ret\r
-\r
-\r
-class unicode_set:\r
-    _ranges = []\r
-\r
-    @_lazyclassproperty\r
-    def printables(cls):\r
-        return ''.join(filterfalse(unicode.isspace, (unichr(c) for r in cls._ranges for c in range(r[0], r[-1] + 1))))\r
-\r
-    @_lazyclassproperty\r
-    def alphas(cls):\r
-        return ''.join(filter(unicode.isalpha, (unichr(c) for r in cls._ranges for c in range(r[0], r[-1] + 1))))\r
-\r
-    @_lazyclassproperty\r
-    def nums(cls):\r
-        return ''.join(filter(unicode.isdigit, (unichr(c) for r in cls._ranges for c in range(r[0], r[-1] + 1))))\r
-\r
-    @_lazyclassproperty\r
-    def alphanums(cls):\r
-        return cls.alphas + cls.nums\r
-\r
-\r
-class pyparsing_unicode(unicode_set):\r
-    _ranges = [(32, sys.maxunicode)]\r
-\r
-    class Latin1(unicode_set):\r
-        _ranges = [\r
-            (0x0020, 0x007e), (0x00a0, 0x00ff),\r
-        ]\r
-\r
-    class Greek(unicode_set):\r
-        _ranges = [\r
-            (0x0370, 0x03ff), (0x1f00, 0x1f15), (0x1f18, 0x1f1d), (0x1f20, 0x1f45), (0x1f48, 0x1f4d),\r
-            (0x1f50, 0x1f57), (0x1f59,), (0x1f5b,), (0x1f5d,), (0x1f5f, 0x1f7d), (0x1f80, 0x1fb4), (0x1fb6, 0x1fc4),\r
-            (0x1fc6, 0x1fd3), (0x1fd6, 0x1fdb), (0x1fdd, 0x1fef), (0x1ff2, 0x1ff4), (0x1ff6, 0x1ffe),\r
-        ]\r
-\r
-    class Cyrillic(unicode_set):\r
-        _ranges = [(0x0400, 0x04ff)]\r
-\r
-    class Chinese(unicode_set):\r
-        _ranges = [(0x4e00, 0x9fff)]\r
-\r
-    class Japanese(unicode_set):\r
-        _ranges = [ ] # sum of Kanji, Hiragana, and Katakana ranges\r
-\r
-        class Kanji(unicode_set):\r
-            _ranges = [(0x4E00, 0x9Fbf), ]\r
-\r
-        class Hiragana(unicode_set):\r
-            _ranges = [(0x3040, 0x309f), ]\r
-\r
-        class Katakana(unicode_set):\r
-            _ranges = [(0x30a0, 0x30ff), ]\r
-\r
-    class Korean(unicode_set):\r
-        _ranges = [(0xac00, 0xd7af), (0x1100, 0x11ff), (0x3130, 0x318f), (0xa960, 0xa97f), (0xd7b0, 0xd7ff), ]\r
-\r
-    class CJK(unicode_set):\r
-        _ranges = [  # sum of Chinese, Japanese, and Korean ranges\r
-        ]\r
-\r
-    class Thai(unicode_set):\r
-        _ranges = [(0x0e01, 0x0e3a), (0x0e3f, 0x0e5b), ]\r
-\r
-    class Arabic(unicode_set):\r
-        _ranges = [(0x0600, 0x061b), (0x061e, 0x06ff), (0x0700, 0x077f), ]\r
-\r
-    class Hebrew(unicode_set):\r
-        _ranges = [(0x0590, 0x05ff), ]\r
-\r
-    class Devanagari(unicode_set):\r
-        _ranges = [(0x0900, 0x097f), (0xa8e0, 0xa8ff)]\r
-\r
-pyparsing_unicode.Japanese._ranges = pyparsing_unicode.Japanese.Kanji._ranges + pyparsing_unicode.Japanese.Hiragana._ranges + pyparsing_unicode.Japanese.Katakana._ranges\r
-pyparsing_unicode.CJK._ranges = pyparsing_unicode.Chinese._ranges + pyparsing_unicode.Japanese._ranges + pyparsing_unicode.Korean._ranges\r
-\r
-# define ranges in language character sets\r
-if PY_3:\r
-    setattr(pyparsing_unicode, "العربية", pyparsing_unicode.Arabic)\r
-    setattr(pyparsing_unicode, "中文", pyparsing_unicode.Chinese)\r
-    setattr(pyparsing_unicode, "кириллица", pyparsing_unicode.Cyrillic)\r
-    setattr(pyparsing_unicode, "Ελληνικά", pyparsing_unicode.Greek)\r
-    setattr(pyparsing_unicode, "עִברִית", pyparsing_unicode.Hebrew)\r
-    setattr(pyparsing_unicode, "日本語", pyparsing_unicode.Japanese)\r
-    setattr(pyparsing_unicode.Japanese, "漢字", pyparsing_unicode.Japanese.Kanji)\r
-    setattr(pyparsing_unicode.Japanese, "カタカナ", pyparsing_unicode.Japanese.Katakana)\r
-    setattr(pyparsing_unicode.Japanese, "ひらがな", pyparsing_unicode.Japanese.Hiragana)\r
-    setattr(pyparsing_unicode, "한국어", pyparsing_unicode.Korean)\r
-    setattr(pyparsing_unicode, "ไทย", pyparsing_unicode.Thai)\r
-    setattr(pyparsing_unicode, "देवनागरी", pyparsing_unicode.Devanagari)\r
-\r
-\r
-if __name__ == "__main__":\r
-\r
-    selectToken    = CaselessLiteral("select")\r
-    fromToken      = CaselessLiteral("from")\r
-\r
-    ident          = Word(alphas, alphanums + "_$")\r
-\r
-    columnName     = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens)\r
-    columnNameList = Group(delimitedList(columnName)).setName("columns")\r
-    columnSpec     = ('*' | columnNameList)\r
-\r
-    tableName      = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens)\r
-    tableNameList  = Group(delimitedList(tableName)).setName("tables")\r
-\r
-    simpleSQL      = selectToken("command") + columnSpec("columns") + fromToken + tableNameList("tables")\r
-\r
-    # demo runTests method, including embedded comments in test string\r
-    simpleSQL.runTests("""\r
-        # '*' as column list and dotted table name\r
-        select * from SYS.XYZZY\r
-\r
-        # caseless match on "SELECT", and casts back to "select"\r
-        SELECT * from XYZZY, ABC\r
-\r
-        # list of column names, and mixed case SELECT keyword\r
-        Select AA,BB,CC from Sys.dual\r
-\r
-        # multiple tables\r
-        Select A, B, C from Sys.dual, Table2\r
-\r
-        # invalid SELECT keyword - should fail\r
-        Xelect A, B, C from Sys.dual\r
-\r
-        # incomplete command - should fail\r
-        Select\r
-\r
-        # invalid column name - should fail\r
-        Select ^^^ frox Sys.dual\r
-\r
-        """)\r
-\r
-    pyparsing_common.number.runTests("""\r
-        100\r
-        -100\r
-        +100\r
-        3.14159\r
-        6.02e23\r
-        1e-12\r
-        """)\r
-\r
-    # any int or real number, returned as float\r
-    pyparsing_common.fnumber.runTests("""\r
-        100\r
-        -100\r
-        +100\r
-        3.14159\r
-        6.02e23\r
-        1e-12\r
-        """)\r
-\r
-    pyparsing_common.hex_integer.runTests("""\r
-        100\r
-        FF\r
-        """)\r
-\r
-    import uuid\r
-    pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID))\r
-    pyparsing_common.uuid.runTests("""\r
-        12345678-1234-5678-1234-567812345678\r
-        """)\r
+#-*- coding: utf-8 -*-
+# module pyparsing.py
+#
+# Copyright (c) 2003-2019  Paul T. McGuire
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__doc__ = \
+"""
+pyparsing module - Classes and methods to define and execute parsing grammars
+=============================================================================
+
+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.  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 :class:`'+'<ParserElement.__add__>` operators create :class:`And` expressions,
+and the strings are auto-converted to :class:`Literal` expressions)::
+
+    from pyparsing import Word, alphas
+
+    # define grammar of a greeting
+    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 '^' operators.
+
+The :class:`ParseResults` object returned from
+:class:`ParserElement.parseString` 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.setResultsName`
+ - find some helpful expression short-cuts like :class:`delimitedList`
+   and :class:`oneOf`
+ - find more useful common expressions in the :class:`pyparsing_common`
+   namespace class
+"""
+
+__version__ = "2.3.1"
+__versionTime__ = "09 Jan 2019 23:26 UTC"
+__author__ = "Paul McGuire <ptmcg@users.sourceforge.net>"
+
+import string
+from weakref import ref as wkref
+import copy
+import sys
+import warnings
+import re
+import sre_constants
+import collections
+import pprint
+import traceback
+import types
+from datetime import datetime
+
+try:
+    # Python 3
+    from itertools import filterfalse
+except ImportError:
+    from itertools import ifilterfalse as filterfalse
+
+try:
+    from _thread import RLock
+except ImportError:
+    from threading import RLock
+
+try:
+    # Python 3
+    from collections.abc import Iterable
+    from collections.abc import MutableMapping
+except ImportError:
+    # Python 2.7
+    from collections import Iterable
+    from collections import MutableMapping
+
+try:
+    from collections import OrderedDict as _OrderedDict
+except ImportError:
+    try:
+        from ordereddict import OrderedDict as _OrderedDict
+    except ImportError:
+        _OrderedDict = None
+
+try:
+    from types import SimpleNamespace
+except ImportError:
+    class SimpleNamespace: pass
+
+
+#~ sys.stderr.write( "testing pyparsing module, version %s, %s\n" % (__version__,__versionTime__ ) )
+
+__all__ = [
+'And', 'CaselessKeyword', 'CaselessLiteral', 'CharsNotIn', 'Combine', 'Dict', 'Each', 'Empty',
+'FollowedBy', 'Forward', 'GoToColumn', 'Group', 'Keyword', 'LineEnd', 'LineStart', 'Literal',
+'PrecededBy', 'MatchFirst', 'NoMatch', 'NotAny', 'OneOrMore', 'OnlyOnce', 'Optional', 'Or',
+'ParseBaseException', 'ParseElementEnhance', 'ParseException', 'ParseExpression', 'ParseFatalException',
+'ParseResults', 'ParseSyntaxException', 'ParserElement', 'QuotedString', 'RecursiveGrammarException',
+'Regex', 'SkipTo', 'StringEnd', 'StringStart', 'Suppress', 'Token', 'TokenConverter',
+'White', 'Word', 'WordEnd', 'WordStart', 'ZeroOrMore', 'Char',
+'alphanums', 'alphas', 'alphas8bit', 'anyCloseTag', 'anyOpenTag', 'cStyleComment', 'col',
+'commaSeparatedList', 'commonHTMLEntity', 'countedArray', 'cppStyleComment', 'dblQuotedString',
+'dblSlashComment', 'delimitedList', 'dictOf', 'downcaseTokens', 'empty', 'hexnums',
+'htmlComment', 'javaStyleComment', 'line', 'lineEnd', 'lineStart', 'lineno',
+'makeHTMLTags', 'makeXMLTags', 'matchOnlyAtCol', 'matchPreviousExpr', 'matchPreviousLiteral',
+'nestedExpr', 'nullDebugAction', 'nums', 'oneOf', 'opAssoc', 'operatorPrecedence', 'printables',
+'punc8bit', 'pythonStyleComment', 'quotedString', 'removeQuotes', 'replaceHTMLEntity',
+'replaceWith', 'restOfLine', 'sglQuotedString', 'srange', 'stringEnd',
+'stringStart', 'traceParseAction', 'unicodeString', 'upcaseTokens', 'withAttribute',
+'indentedBlock', 'originalTextFor', 'ungroup', 'infixNotation','locatedExpr', 'withClass',
+'CloseMatch', 'tokenMap', 'pyparsing_common', 'pyparsing_unicode', 'unicode_set',
+]
+
+system_version = tuple(sys.version_info)[:3]
+PY_3 = system_version[0] == 3
+if PY_3:
+    _MAX_INT = sys.maxsize
+    basestring = str
+    unichr = chr
+    unicode = str
+    _ustr = str
+
+    # build list of single arg builtins, that can be used as parse actions
+    singleArgBuiltins = [sum, len, sorted, reversed, list, tuple, set, any, all, min, max]
+
+else:
+    _MAX_INT = sys.maxint
+    range = xrange
+
+    def _ustr(obj):
+        """Drop-in replacement for str(obj) that tries to be Unicode
+        friendly. It first tries str(obj). If that fails with
+        a UnicodeEncodeError, then it tries unicode(obj). It then
+        < returns the unicode object | encodes it with the default
+        encoding | ... >.
+        """
+        if isinstance(obj,unicode):
+            return obj
+
+        try:
+            # If this works, then _ustr(obj) has the same behaviour as str(obj), so
+            # it won't break any existing code.
+            return str(obj)
+
+        except UnicodeEncodeError:
+            # Else encode it
+            ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace')
+            xmlcharref = Regex(r'&#\d+;')
+            xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:])
+            return xmlcharref.transformString(ret)
+
+    # build list of single arg builtins, tolerant of Python version, that can be used as parse actions
+    singleArgBuiltins = []
+    import __builtin__
+    for fname in "sum len sorted reversed list tuple set any all min max".split():
+        try:
+            singleArgBuiltins.append(getattr(__builtin__,fname))
+        except AttributeError:
+            continue
+
+_generatorType = type((y for y in range(1)))
+
+def _xml_escape(data):
+    """Escape &, <, >, ", ', etc. in a string of data."""
+
+    # ampersand must be replaced first
+    from_symbols = '&><"\''
+    to_symbols = ('&'+s+';' for s in "amp gt lt quot apos".split())
+    for from_,to_ in zip(from_symbols, to_symbols):
+        data = data.replace(from_, to_)
+    return data
+
+alphas     = string.ascii_uppercase + string.ascii_lowercase
+nums       = "0123456789"
+hexnums    = nums + "ABCDEFabcdef"
+alphanums  = alphas + nums
+_bslash    = chr(92)
+printables = "".join(c for c in string.printable if c not in string.whitespace)
+
+class ParseBaseException(Exception):
+    """base exception class for all parsing runtime exceptions"""
+    # Performance tuning: we construct a *lot* of these, so keep this
+    # constructor as small and fast as possible
+    def __init__( self, pstr, loc=0, msg=None, elem=None ):
+        self.loc = loc
+        if msg is None:
+            self.msg = pstr
+            self.pstr = ""
+        else:
+            self.msg = msg
+            self.pstr = pstr
+        self.parserElement = elem
+        self.args = (pstr, loc, msg)
+
+    @classmethod
+    def _from_exception(cls, pe):
+        """
+        internal factory method to simplify creating one type of ParseException
+        from another - avoids having __init__ signature conflicts among subclasses
+        """
+        return cls(pe.pstr, pe.loc, pe.msg, pe.parserElement)
+
+    def __getattr__( self, aname ):
+        """supported attributes by name are:
+           - lineno - returns the line number of the exception text
+           - col - returns the column number of the exception text
+           - line - returns the line containing the exception text
+        """
+        if( aname == "lineno" ):
+            return lineno( self.loc, self.pstr )
+        elif( aname in ("col", "column") ):
+            return col( self.loc, self.pstr )
+        elif( aname == "line" ):
+            return line( self.loc, self.pstr )
+        else:
+            raise AttributeError(aname)
+
+    def __str__( self ):
+        return "%s (at char %d), (line:%d, col:%d)" % \
+                ( self.msg, self.loc, self.lineno, self.column )
+    def __repr__( self ):
+        return _ustr(self)
+    def markInputline( self, markerString = ">!<" ):
+        """Extracts the exception line from the input string, and marks
+           the location of the exception with a special symbol.
+        """
+        line_str = self.line
+        line_column = self.column - 1
+        if markerString:
+            line_str = "".join((line_str[:line_column],
+                                markerString, line_str[line_column:]))
+        return line_str.strip()
+    def __dir__(self):
+        return "lineno col line".split() + dir(type(self))
+
+class ParseException(ParseBaseException):
+    """
+    Exception thrown when parse expressions don't match class;
+    supported attributes by name are:
+    - lineno - returns the line number of the exception text
+    - col - returns the column number of the exception text
+    - line - returns the line containing the exception text
+
+    Example::
+
+        try:
+            Word(nums).setName("integer").parseString("ABC")
+        except ParseException as pe:
+            print(pe)
+            print("column: {}".format(pe.col))
+
+    prints::
+
+       Expected integer (at char 0), (line:1, col:1)
+        column: 1
+
+    """
+
+    @staticmethod
+    def explain(exc, depth=16):
+        """
+        Method to take an exception and translate the Python internal traceback into a list
+        of the pyparsing expressions that caused the exception to be raised.
+
+        Parameters:
+
+         - exc - exception raised during parsing (need not be a ParseException, in support
+           of Python exceptions that might be raised in a parse action)
+         - depth (default=16) - number of levels back in the stack trace to list expression
+           and function names; if None, the full stack trace names will be listed; if 0, only
+           the failing input line, marker, and exception string will be shown
+
+        Returns a multi-line string listing the ParserElements and/or function names in the
+        exception's stack trace.
+
+        Note: the diagnostic output will include string representations of the expressions
+        that failed to parse. These representations will be more helpful if you use `setName` to
+        give identifiable names to your expressions. Otherwise they will use the default string
+        forms, which may be cryptic to read.
+
+        explain() is only supported under Python 3.
+        """
+        import inspect
+
+        if depth is None:
+            depth = sys.getrecursionlimit()
+        ret = []
+        if isinstance(exc, ParseBaseException):
+            ret.append(exc.line)
+            ret.append(' ' * (exc.col - 1) + '^')
+        ret.append("{0}: {1}".format(type(exc).__name__, exc))
+
+        if depth > 0:
+            callers = inspect.getinnerframes(exc.__traceback__, context=depth)
+            seen = set()
+            for i, ff in enumerate(callers[-depth:]):
+                frm = ff.frame
+
+                f_self = frm.f_locals.get('self', None)
+                if isinstance(f_self, ParserElement):
+                    if frm.f_code.co_name not in ('parseImpl', '_parseNoCache'):
+                        continue
+                    if f_self in seen:
+                        continue
+                    seen.add(f_self)
+
+                    self_type = type(f_self)
+                    ret.append("{0}.{1} - {2}".format(self_type.__module__,
+                                                      self_type.__name__,
+                                                      f_self))
+                elif f_self is not None:
+                    self_type = type(f_self)
+                    ret.append("{0}.{1}".format(self_type.__module__,
+                                                self_type.__name__))
+                else:
+                    code = frm.f_code
+                    if code.co_name in ('wrapper', '<module>'):
+                        continue
+
+                    ret.append("{0}".format(code.co_name))
+
+                depth -= 1
+                if not depth:
+                    break
+
+        return '\n'.join(ret)
+
+
+class ParseFatalException(ParseBaseException):
+    """user-throwable exception thrown when inconsistent parse content
+       is found; stops all parsing immediately"""
+    pass
+
+class ParseSyntaxException(ParseFatalException):
+    """just like :class:`ParseFatalException`, but thrown internally
+    when an :class:`ErrorStop<And._ErrorStop>` ('-' operator) indicates
+    that parsing is to stop immediately because an unbacktrackable
+    syntax error has been found.
+    """
+    pass
+
+#~ class ReparseException(ParseBaseException):
+    #~ """Experimental class - parse actions can raise this exception to cause
+       #~ pyparsing to reparse the input string:
+        #~ - with a modified input string, and/or
+        #~ - with a modified start location
+       #~ Set the values of the ReparseException in the constructor, and raise the
+       #~ exception in a parse action to cause pyparsing to use the new string/location.
+       #~ Setting the values as None causes no change to be made.
+       #~ """
+    #~ def __init_( self, newstring, restartLoc ):
+        #~ self.newParseText = newstring
+        #~ self.reparseLoc = restartLoc
+
+class RecursiveGrammarException(Exception):
+    """exception thrown by :class:`ParserElement.validate` if the
+    grammar could be improperly recursive
+    """
+    def __init__( self, parseElementList ):
+        self.parseElementTrace = parseElementList
+
+    def __str__( self ):
+        return "RecursiveGrammarException: %s" % self.parseElementTrace
+
+class _ParseResultsWithOffset(object):
+    def __init__(self,p1,p2):
+        self.tup = (p1,p2)
+    def __getitem__(self,i):
+        return self.tup[i]
+    def __repr__(self):
+        return repr(self.tup[0])
+    def setOffset(self,i):
+        self.tup = (self.tup[0],i)
+
+class ParseResults(object):
+    """Structured parse results, to provide multiple means of access to
+    the parsed data:
+
+       - as a list (``len(results)``)
+       - by list index (``results[0], results[1]``, etc.)
+       - by attribute (``results.<resultsName>`` - see :class:`ParserElement.setResultsName`)
+
+    Example::
+
+        integer = Word(nums)
+        date_str = (integer.setResultsName("year") + '/'
+                        + integer.setResultsName("month") + '/'
+                        + integer.setResultsName("day"))
+        # equivalent form:
+        # date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+        # parseString returns a ParseResults object
+        result = date_str.parseString("1999/12/31")
+
+        def test(s, fn=repr):
+            print("%s -> %s" % (s, fn(eval(s))))
+        test("list(result)")
+        test("result[0]")
+        test("result['month']")
+        test("result.day")
+        test("'month' in result")
+        test("'minutes' in result")
+        test("result.dump()", str)
+
+    prints::
+
+        list(result) -> ['1999', '/', '12', '/', '31']
+        result[0] -> '1999'
+        result['month'] -> '12'
+        result.day -> '31'
+        'month' in result -> True
+        'minutes' in result -> False
+        result.dump() -> ['1999', '/', '12', '/', '31']
+        - day: 31
+        - month: 12
+        - year: 1999
+    """
+    def __new__(cls, toklist=None, name=None, asList=True, modal=True ):
+        if isinstance(toklist, cls):
+            return toklist
+        retobj = object.__new__(cls)
+        retobj.__doinit = True
+        return retobj
+
+    # Performance tuning: we construct a *lot* of these, so keep this
+    # constructor as small and fast as possible
+    def __init__( self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance ):
+        if self.__doinit:
+            self.__doinit = False
+            self.__name = None
+            self.__parent = None
+            self.__accumNames = {}
+            self.__asList = asList
+            self.__modal = modal
+            if toklist is None:
+                toklist = []
+            if isinstance(toklist, list):
+                self.__toklist = toklist[:]
+            elif isinstance(toklist, _generatorType):
+                self.__toklist = list(toklist)
+            else:
+                self.__toklist = [toklist]
+            self.__tokdict = dict()
+
+        if name is not None and name:
+            if not modal:
+                self.__accumNames[name] = 0
+            if isinstance(name,int):
+                name = _ustr(name) # will always return a str, but use _ustr for consistency
+            self.__name = name
+            if not (isinstance(toklist, (type(None), basestring, list)) and toklist in (None,'',[])):
+                if isinstance(toklist,basestring):
+                    toklist = [ toklist ]
+                if asList:
+                    if isinstance(toklist,ParseResults):
+                        self[name] = _ParseResultsWithOffset(ParseResults(toklist.__toklist), 0)
+                    else:
+                        self[name] = _ParseResultsWithOffset(ParseResults(toklist[0]),0)
+                    self[name].__name = name
+                else:
+                    try:
+                        self[name] = toklist[0]
+                    except (KeyError,TypeError,IndexError):
+                        self[name] = toklist
+
+    def __getitem__( self, i ):
+        if isinstance( i, (int,slice) ):
+            return self.__toklist[i]
+        else:
+            if i not in self.__accumNames:
+                return self.__tokdict[i][-1][0]
+            else:
+                return ParseResults([ v[0] for v in self.__tokdict[i] ])
+
+    def __setitem__( self, k, v, isinstance=isinstance ):
+        if isinstance(v,_ParseResultsWithOffset):
+            self.__tokdict[k] = self.__tokdict.get(k,list()) + [v]
+            sub = v[0]
+        elif isinstance(k,(int,slice)):
+            self.__toklist[k] = v
+            sub = v
+        else:
+            self.__tokdict[k] = self.__tokdict.get(k,list()) + [_ParseResultsWithOffset(v,0)]
+            sub = v
+        if isinstance(sub,ParseResults):
+            sub.__parent = wkref(self)
+
+    def __delitem__( self, i ):
+        if isinstance(i,(int,slice)):
+            mylen = len( self.__toklist )
+            del self.__toklist[i]
+
+            # convert int to slice
+            if isinstance(i, int):
+                if i < 0:
+                    i += mylen
+                i = slice(i, i+1)
+            # get removed indices
+            removed = list(range(*i.indices(mylen)))
+            removed.reverse()
+            # fixup indices in token dictionary
+            for name,occurrences in self.__tokdict.items():
+                for j in removed:
+                    for k, (value, position) in enumerate(occurrences):
+                        occurrences[k] = _ParseResultsWithOffset(value, position - (position > j))
+        else:
+            del self.__tokdict[i]
+
+    def __contains__( self, k ):
+        return k in self.__tokdict
+
+    def __len__( self ): return len( self.__toklist )
+    def __bool__(self): return ( not not self.__toklist )
+    __nonzero__ = __bool__
+    def __iter__( self ): return iter( self.__toklist )
+    def __reversed__( self ): return iter( self.__toklist[::-1] )
+    def _iterkeys( self ):
+        if hasattr(self.__tokdict, "iterkeys"):
+            return self.__tokdict.iterkeys()
+        else:
+            return iter(self.__tokdict)
+
+    def _itervalues( self ):
+        return (self[k] for k in self._iterkeys())
+
+    def _iteritems( self ):
+        return ((k, self[k]) for k in self._iterkeys())
+
+    if PY_3:
+        keys = _iterkeys
+        """Returns an iterator of all named result keys."""
+
+        values = _itervalues
+        """Returns an iterator of all named result values."""
+
+        items = _iteritems
+        """Returns an iterator of all named result key-value tuples."""
+
+    else:
+        iterkeys = _iterkeys
+        """Returns an iterator of all named result keys (Python 2.x only)."""
+
+        itervalues = _itervalues
+        """Returns an iterator of all named result values (Python 2.x only)."""
+
+        iteritems = _iteritems
+        """Returns an iterator of all named result key-value tuples (Python 2.x only)."""
+
+        def keys( self ):
+            """Returns all named result keys (as a list in Python 2.x, as an iterator in Python 3.x)."""
+            return list(self.iterkeys())
+
+        def values( self ):
+            """Returns all named result values (as a list in Python 2.x, as an iterator in Python 3.x)."""
+            return list(self.itervalues())
+
+        def items( self ):
+            """Returns all named result key-values (as a list of tuples in Python 2.x, as an iterator in Python 3.x)."""
+            return list(self.iteritems())
+
+    def haskeys( self ):
+        """Since keys() returns an iterator, this method is helpful in bypassing
+           code that looks for the existence of any defined results names."""
+        return bool(self.__tokdict)
+
+    def pop( self, *args, **kwargs):
+        """
+        Removes and returns item at specified index (default= ``last``).
+        Supports both ``list`` and ``dict`` semantics for ``pop()``. If
+        passed no argument or an integer argument, it will use ``list``
+        semantics and pop tokens from the list of parsed tokens. If passed
+        a non-integer argument (most likely a string), it will use ``dict``
+        semantics and pop the corresponding value from any defined results
+        names. A second default return value argument is supported, just as in
+        ``dict.pop()``.
+
+        Example::
+
+            def remove_first(tokens):
+                tokens.pop(0)
+            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']
+            print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString("0 123 321")) # -> ['123', '321']
+
+            label = Word(alphas)
+            patt = label("LABEL") + OneOrMore(Word(nums))
+            print(patt.parseString("AAB 123 321").dump())
+
+            # Use pop() in a parse action to remove named result (note that corresponding value is not
+            # removed from list form of results)
+            def remove_LABEL(tokens):
+                tokens.pop("LABEL")
+                return tokens
+            patt.addParseAction(remove_LABEL)
+            print(patt.parseString("AAB 123 321").dump())
+
+        prints::
+
+            ['AAB', '123', '321']
+            - LABEL: AAB
+
+            ['AAB', '123', '321']
+        """
+        if not args:
+            args = [-1]
+        for k,v in kwargs.items():
+            if k == 'default':
+                args = (args[0], v)
+            else:
+                raise TypeError("pop() got an unexpected keyword argument '%s'" % k)
+        if (isinstance(args[0], int) or
+                        len(args) == 1 or
+                        args[0] in self):
+            index = args[0]
+            ret = self[index]
+            del self[index]
+            return ret
+        else:
+            defaultvalue = args[1]
+            return defaultvalue
+
+    def get(self, key, defaultValue=None):
+        """
+        Returns named result matching the given key, or if there is no
+        such name, then returns the given ``defaultValue`` or ``None`` if no
+        ``defaultValue`` is specified.
+
+        Similar to ``dict.get()``.
+
+        Example::
+
+            integer = Word(nums)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            result = date_str.parseString("1999/12/31")
+            print(result.get("year")) # -> '1999'
+            print(result.get("hour", "not specified")) # -> 'not specified'
+            print(result.get("hour")) # -> None
+        """
+        if key in self:
+            return self[key]
+        else:
+            return defaultValue
+
+    def insert( self, index, insStr ):
+        """
+        Inserts new element at location index in the list of parsed tokens.
+
+        Similar to ``list.insert()``.
+
+        Example::
+
+            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']
+
+            # use a parse action to insert the parse location in the front of the parsed results
+            def insert_locn(locn, tokens):
+                tokens.insert(0, locn)
+            print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString("0 123 321")) # -> [0, '0', '123', '321']
+        """
+        self.__toklist.insert(index, insStr)
+        # fixup indices in token dictionary
+        for name,occurrences in self.__tokdict.items():
+            for k, (value, position) in enumerate(occurrences):
+                occurrences[k] = _ParseResultsWithOffset(value, position + (position > index))
+
+    def append( self, item ):
+        """
+        Add single element to end of ParseResults list of elements.
+
+        Example::
+
+            print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321']
+
+            # use a parse action to compute the sum of the parsed integers, and add it to the end
+            def append_sum(tokens):
+                tokens.append(sum(map(int, tokens)))
+            print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString("0 123 321")) # -> ['0', '123', '321', 444]
+        """
+        self.__toklist.append(item)
+
+    def extend( self, itemseq ):
+        """
+        Add sequence of elements to end of ParseResults list of elements.
+
+        Example::
+
+            patt = OneOrMore(Word(alphas))
+
+            # use a parse action to append the reverse of the matched strings, to make a palindrome
+            def make_palindrome(tokens):
+                tokens.extend(reversed([t[::-1] for t in tokens]))
+                return ''.join(tokens)
+            print(patt.addParseAction(make_palindrome).parseString("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl'
+        """
+        if isinstance(itemseq, ParseResults):
+            self += itemseq
+        else:
+            self.__toklist.extend(itemseq)
+
+    def clear( self ):
+        """
+        Clear all elements and results names.
+        """
+        del self.__toklist[:]
+        self.__tokdict.clear()
+
+    def __getattr__( self, name ):
+        try:
+            return self[name]
+        except KeyError:
+            return ""
+
+        if name in self.__tokdict:
+            if name not in self.__accumNames:
+                return self.__tokdict[name][-1][0]
+            else:
+                return ParseResults([ v[0] for v in self.__tokdict[name] ])
+        else:
+            return ""
+
+    def __add__( self, other ):
+        ret = self.copy()
+        ret += other
+        return ret
+
+    def __iadd__( self, other ):
+        if other.__tokdict:
+            offset = len(self.__toklist)
+            addoffset = lambda a: offset if a<0 else a+offset
+            otheritems = other.__tokdict.items()
+            otherdictitems = [(k, _ParseResultsWithOffset(v[0],addoffset(v[1])) )
+                                for (k,vlist) in otheritems for v in vlist]
+            for k,v in otherdictitems:
+                self[k] = v
+                if isinstance(v[0],ParseResults):
+                    v[0].__parent = wkref(self)
+
+        self.__toklist += other.__toklist
+        self.__accumNames.update( other.__accumNames )
+        return self
+
+    def __radd__(self, other):
+        if isinstance(other,int) and other == 0:
+            # useful for merging many ParseResults using sum() builtin
+            return self.copy()
+        else:
+            # this may raise a TypeError - so be it
+            return other + self
+
+    def __repr__( self ):
+        return "(%s, %s)" % ( repr( self.__toklist ), repr( self.__tokdict ) )
+
+    def __str__( self ):
+        return '[' + ', '.join(_ustr(i) if isinstance(i, ParseResults) else repr(i) for i in self.__toklist) + ']'
+
+    def _asStringList( self, sep='' ):
+        out = []
+        for item in self.__toklist:
+            if out and sep:
+                out.append(sep)
+            if isinstance( item, ParseResults ):
+                out += item._asStringList()
+            else:
+                out.append( _ustr(item) )
+        return out
+
+    def asList( self ):
+        """
+        Returns the parse results as a nested list of matching tokens, all converted to strings.
+
+        Example::
+
+            patt = OneOrMore(Word(alphas))
+            result = patt.parseString("sldkj lsdkj sldkj")
+            # even though the result prints in string-like form, it is actually a pyparsing ParseResults
+            print(type(result), result) # -> <class 'pyparsing.ParseResults'> ['sldkj', 'lsdkj', 'sldkj']
+
+            # Use asList() to create an actual list
+            result_list = result.asList()
+            print(type(result_list), result_list) # -> <class 'list'> ['sldkj', 'lsdkj', 'sldkj']
+        """
+        return [res.asList() if isinstance(res,ParseResults) else res for res in self.__toklist]
+
+    def asDict( self ):
+        """
+        Returns the named parse results as a nested dictionary.
+
+        Example::
+
+            integer = Word(nums)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            result = date_str.parseString('12/31/1999')
+            print(type(result), repr(result)) # -> <class 'pyparsing.ParseResults'> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]})
+
+            result_dict = result.asDict()
+            print(type(result_dict), repr(result_dict)) # -> <class 'dict'> {'day': '1999', 'year': '12', 'month': '31'}
+
+            # even though a ParseResults supports dict-like access, sometime you just need to have a dict
+            import json
+            print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable
+            print(json.dumps(result.asDict())) # -> {"month": "31", "day": "1999", "year": "12"}
+        """
+        if PY_3:
+            item_fn = self.items
+        else:
+            item_fn = self.iteritems
+
+        def toItem(obj):
+            if isinstance(obj, ParseResults):
+                if obj.haskeys():
+                    return obj.asDict()
+                else:
+                    return [toItem(v) for v in obj]
+            else:
+                return obj
+
+        return dict((k,toItem(v)) for k,v in item_fn())
+
+    def copy( self ):
+        """
+        Returns a new copy of a :class:`ParseResults` object.
+        """
+        ret = ParseResults( self.__toklist )
+        ret.__tokdict = dict(self.__tokdict.items())
+        ret.__parent = self.__parent
+        ret.__accumNames.update( self.__accumNames )
+        ret.__name = self.__name
+        return ret
+
+    def asXML( self, doctag=None, namedItemsOnly=False, indent="", formatted=True ):
+        """
+        (Deprecated) Returns the parse results as XML. Tags are created for tokens and lists that have defined results names.
+        """
+        nl = "\n"
+        out = []
+        namedItems = dict((v[1],k) for (k,vlist) in self.__tokdict.items()
+                                                            for v in vlist)
+        nextLevelIndent = indent + "  "
+
+        # collapse out indents if formatting is not desired
+        if not formatted:
+            indent = ""
+            nextLevelIndent = ""
+            nl = ""
+
+        selfTag = None
+        if doctag is not None:
+            selfTag = doctag
+        else:
+            if self.__name:
+                selfTag = self.__name
+
+        if not selfTag:
+            if namedItemsOnly:
+                return ""
+            else:
+                selfTag = "ITEM"
+
+        out += [ nl, indent, "<", selfTag, ">" ]
+
+        for i,res in enumerate(self.__toklist):
+            if isinstance(res,ParseResults):
+                if i in namedItems:
+                    out += [ res.asXML(namedItems[i],
+                                        namedItemsOnly and doctag is None,
+                                        nextLevelIndent,
+                                        formatted)]
+                else:
+                    out += [ res.asXML(None,
+                                        namedItemsOnly and doctag is None,
+                                        nextLevelIndent,
+                                        formatted)]
+            else:
+                # individual token, see if there is a name for it
+                resTag = None
+                if i in namedItems:
+                    resTag = namedItems[i]
+                if not resTag:
+                    if namedItemsOnly:
+                        continue
+                    else:
+                        resTag = "ITEM"
+                xmlBodyText = _xml_escape(_ustr(res))
+                out += [ nl, nextLevelIndent, "<", resTag, ">",
+                                                xmlBodyText,
+                                                "</", resTag, ">" ]
+
+        out += [ nl, indent, "</", selfTag, ">" ]
+        return "".join(out)
+
+    def __lookup(self,sub):
+        for k,vlist in self.__tokdict.items():
+            for v,loc in vlist:
+                if sub is v:
+                    return k
+        return None
+
+    def getName(self):
+        r"""
+        Returns the results name for this token expression. Useful when several
+        different expressions might match at a particular location.
+
+        Example::
+
+            integer = Word(nums)
+            ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d")
+            house_number_expr = Suppress('#') + Word(nums, alphanums)
+            user_data = (Group(house_number_expr)("house_number")
+                        | Group(ssn_expr)("ssn")
+                        | Group(integer)("age"))
+            user_info = OneOrMore(user_data)
+
+            result = user_info.parseString("22 111-22-3333 #221B")
+            for item in result:
+                print(item.getName(), ':', item[0])
+
+        prints::
+
+            age : 22
+            ssn : 111-22-3333
+            house_number : 221B
+        """
+        if self.__name:
+            return self.__name
+        elif self.__parent:
+            par = self.__parent()
+            if par:
+                return par.__lookup(self)
+            else:
+                return None
+        elif (len(self) == 1 and
+               len(self.__tokdict) == 1 and
+               next(iter(self.__tokdict.values()))[0][1] in (0,-1)):
+            return next(iter(self.__tokdict.keys()))
+        else:
+            return None
+
+    def dump(self, indent='', depth=0, full=True):
+        """
+        Diagnostic method for listing out the contents of
+        a :class:`ParseResults`. Accepts an optional ``indent`` argument so
+        that this string can be embedded in a nested display of other data.
+
+        Example::
+
+            integer = Word(nums)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            result = date_str.parseString('12/31/1999')
+            print(result.dump())
+
+        prints::
+
+            ['12', '/', '31', '/', '1999']
+            - day: 1999
+            - month: 31
+            - year: 12
+        """
+        out = []
+        NL = '\n'
+        out.append( indent+_ustr(self.asList()) )
+        if full:
+            if self.haskeys():
+                items = sorted((str(k), v) for k,v in self.items())
+                for k,v in items:
+                    if out:
+                        out.append(NL)
+                    out.append( "%s%s- %s: " % (indent,('  '*depth), k) )
+                    if isinstance(v,ParseResults):
+                        if v:
+                            out.append( v.dump(indent,depth+1) )
+                        else:
+                            out.append(_ustr(v))
+                    else:
+                        out.append(repr(v))
+            elif any(isinstance(vv,ParseResults) for vv in self):
+                v = self
+                for i,vv in enumerate(v):
+                    if isinstance(vv,ParseResults):
+                        out.append("\n%s%s[%d]:\n%s%s%s" % (indent,('  '*(depth)),i,indent,('  '*(depth+1)),vv.dump(indent,depth+1) ))
+                    else:
+                        out.append("\n%s%s[%d]:\n%s%s%s" % (indent,('  '*(depth)),i,indent,('  '*(depth+1)),_ustr(vv)))
+
+        return "".join(out)
+
+    def pprint(self, *args, **kwargs):
+        """
+        Pretty-printer for parsed results as a list, using the
+        `pprint <https://docs.python.org/3/library/pprint.html>`_ module.
+        Accepts additional positional or keyword args as defined for
+        `pprint.pprint <https://docs.python.org/3/library/pprint.html#pprint.pprint>`_ .
+
+        Example::
+
+            ident = Word(alphas, alphanums)
+            num = Word(nums)
+            func = Forward()
+            term = ident | num | Group('(' + func + ')')
+            func <<= ident + Group(Optional(delimitedList(term)))
+            result = func.parseString("fna a,b,(fnb c,d,200),100")
+            result.pprint(width=40)
+
+        prints::
+
+            ['fna',
+             ['a',
+              'b',
+              ['(', 'fnb', ['c', 'd', '200'], ')'],
+              '100']]
+        """
+        pprint.pprint(self.asList(), *args, **kwargs)
+
+    # add support for pickle protocol
+    def __getstate__(self):
+        return ( self.__toklist,
+                 ( self.__tokdict.copy(),
+                   self.__parent is not None and self.__parent() or None,
+                   self.__accumNames,
+                   self.__name ) )
+
+    def __setstate__(self,state):
+        self.__toklist = state[0]
+        (self.__tokdict,
+         par,
+         inAccumNames,
+         self.__name) = state[1]
+        self.__accumNames = {}
+        self.__accumNames.update(inAccumNames)
+        if par is not None:
+            self.__parent = wkref(par)
+        else:
+            self.__parent = None
+
+    def __getnewargs__(self):
+        return self.__toklist, self.__name, self.__asList, self.__modal
+
+    def __dir__(self):
+        return (dir(type(self)) + list(self.keys()))
+
+MutableMapping.register(ParseResults)
+
+def col (loc,strg):
+    """Returns current column within a string, counting newlines as line separators.
+   The first column is number 1.
+
+   Note: the default parsing behavior is to expand tabs in the input string
+   before starting the parsing process.  See
+   :class:`ParserElement.parseString` for more
+   information on parsing strings containing ``<TAB>`` s, and suggested
+   methods to maintain a consistent view of the parsed string, the parse
+   location, and line and column positions within the parsed string.
+   """
+    s = strg
+    return 1 if 0<loc<len(s) and s[loc-1] == '\n' else loc - s.rfind("\n", 0, loc)
+
+def lineno(loc,strg):
+    """Returns current line number within a string, counting newlines as line separators.
+    The first line is number 1.
+
+    Note - the default parsing behavior is to expand tabs in the input string
+    before starting the parsing process.  See :class:`ParserElement.parseString`
+    for more information on parsing strings containing ``<TAB>`` s, and
+    suggested methods to maintain a consistent view of the parsed string, the
+    parse location, and line and column positions within the parsed string.
+    """
+    return strg.count("\n",0,loc) + 1
+
+def line( loc, strg ):
+    """Returns the line of text containing loc within a string, counting newlines as line separators.
+       """
+    lastCR = strg.rfind("\n", 0, loc)
+    nextCR = strg.find("\n", loc)
+    if nextCR >= 0:
+        return strg[lastCR+1:nextCR]
+    else:
+        return strg[lastCR+1:]
+
+def _defaultStartDebugAction( instring, loc, expr ):
+    print (("Match " + _ustr(expr) + " at loc " + _ustr(loc) + "(%d,%d)" % ( lineno(loc,instring), col(loc,instring) )))
+
+def _defaultSuccessDebugAction( instring, startloc, endloc, expr, toks ):
+    print ("Matched " + _ustr(expr) + " -> " + str(toks.asList()))
+
+def _defaultExceptionDebugAction( instring, loc, expr, exc ):
+    print ("Exception raised:" + _ustr(exc))
+
+def nullDebugAction(*args):
+    """'Do-nothing' debug action, to suppress debugging output during parsing."""
+    pass
+
+# Only works on Python 3.x - nonlocal is toxic to Python 2 installs
+#~ 'decorator to trim function calls to match the arity of the target'
+#~ def _trim_arity(func, maxargs=3):
+    #~ if func in singleArgBuiltins:
+        #~ return lambda s,l,t: func(t)
+    #~ limit = 0
+    #~ foundArity = False
+    #~ def wrapper(*args):
+        #~ nonlocal limit,foundArity
+        #~ while 1:
+            #~ try:
+                #~ ret = func(*args[limit:])
+                #~ foundArity = True
+                #~ return ret
+            #~ except TypeError:
+                #~ if limit == maxargs or foundArity:
+                    #~ raise
+                #~ limit += 1
+                #~ continue
+    #~ return wrapper
+
+# this version is Python 2.x-3.x cross-compatible
+'decorator to trim function calls to match the arity of the target'
+def _trim_arity(func, maxargs=2):
+    if func in singleArgBuiltins:
+        return lambda s,l,t: func(t)
+    limit = [0]
+    foundArity = [False]
+
+    # traceback return data structure changed in Py3.5 - normalize back to plain tuples
+    if system_version[:2] >= (3,5):
+        def extract_stack(limit=0):
+            # special handling for Python 3.5.0 - extra deep call stack by 1
+            offset = -3 if system_version == (3,5,0) else -2
+            frame_summary = traceback.extract_stack(limit=-offset+limit-1)[offset]
+            return [frame_summary[:2]]
+        def extract_tb(tb, limit=0):
+            frames = traceback.extract_tb(tb, limit=limit)
+            frame_summary = frames[-1]
+            return [frame_summary[:2]]
+    else:
+        extract_stack = traceback.extract_stack
+        extract_tb = traceback.extract_tb
+
+    # synthesize what would be returned by traceback.extract_stack at the call to
+    # user's parse action 'func', so that we don't incur call penalty at parse time
+
+    LINE_DIFF = 6
+    # IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND
+    # THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!!
+    this_line = extract_stack(limit=2)[-1]
+    pa_call_line_synth = (this_line[0], this_line[1]+LINE_DIFF)
+
+    def wrapper(*args):
+        while 1:
+            try:
+                ret = func(*args[limit[0]:])
+                foundArity[0] = True
+                return ret
+            except TypeError:
+                # re-raise TypeErrors if they did not come from our arity testing
+                if foundArity[0]:
+                    raise
+                else:
+                    try:
+                        tb = sys.exc_info()[-1]
+                        if not extract_tb(tb, limit=2)[-1][:2] == pa_call_line_synth:
+                            raise
+                    finally:
+                        del tb
+
+                if limit[0] <= maxargs:
+                    limit[0] += 1
+                    continue
+                raise
+
+    # copy func name to wrapper for sensible debug output
+    func_name = "<parse action>"
+    try:
+        func_name = getattr(func, '__name__',
+                            getattr(func, '__class__').__name__)
+    except Exception:
+        func_name = str(func)
+    wrapper.__name__ = func_name
+
+    return wrapper
+
+class ParserElement(object):
+    """Abstract base level parser element class."""
+    DEFAULT_WHITE_CHARS = " \n\t\r"
+    verbose_stacktrace = False
+
+    @staticmethod
+    def setDefaultWhitespaceChars( chars ):
+        r"""
+        Overrides the default whitespace chars
+
+        Example::
+
+            # default whitespace chars are space, <TAB> and newline
+            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -> ['abc', 'def', 'ghi', 'jkl']
+
+            # change to just treat newline as significant
+            ParserElement.setDefaultWhitespaceChars(" \t")
+            OneOrMore(Word(alphas)).parseString("abc def\nghi jkl")  # -> ['abc', 'def']
+        """
+        ParserElement.DEFAULT_WHITE_CHARS = chars
+
+    @staticmethod
+    def inlineLiteralsUsing(cls):
+        """
+        Set class to be used for inclusion of string literals into a parser.
+
+        Example::
+
+            # default literal class used is Literal
+            integer = Word(nums)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            date_str.parseString("1999/12/31")  # -> ['1999', '/', '12', '/', '31']
+
+
+            # change to Suppress
+            ParserElement.inlineLiteralsUsing(Suppress)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            date_str.parseString("1999/12/31")  # -> ['1999', '12', '31']
+        """
+        ParserElement._literalStringClass = cls
+
+    def __init__( self, savelist=False ):
+        self.parseAction = list()
+        self.failAction = None
+        #~ self.name = "<unknown>"  # don't define self.name, let subclasses try/except upcall
+        self.strRepr = None
+        self.resultsName = None
+        self.saveAsList = savelist
+        self.skipWhitespace = True
+        self.whiteChars = set(ParserElement.DEFAULT_WHITE_CHARS)
+        self.copyDefaultWhiteChars = True
+        self.mayReturnEmpty = False # used when checking for left-recursion
+        self.keepTabs = False
+        self.ignoreExprs = list()
+        self.debug = False
+        self.streamlined = False
+        self.mayIndexError = True # used to optimize exception handling for subclasses that don't advance parse index
+        self.errmsg = ""
+        self.modalResults = True # used to mark results names as modal (report only last) or cumulative (list all)
+        self.debugActions = ( None, None, None ) #custom debug actions
+        self.re = None
+        self.callPreparse = True # used to avoid redundant calls to preParse
+        self.callDuringTry = False
+
+    def copy( self ):
+        """
+        Make a copy of this :class:`ParserElement`.  Useful for defining
+        different parse actions for the same parsing pattern, using copies of
+        the original parse element.
+
+        Example::
+
+            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
+            integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress("K")
+            integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")
+
+            print(OneOrMore(integerK | integerM | integer).parseString("5K 100 640K 256M"))
+
+        prints::
+
+            [5120, 100, 655360, 268435456]
+
+        Equivalent form of ``expr.copy()`` is just ``expr()``::
+
+            integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M")
+        """
+        cpy = copy.copy( self )
+        cpy.parseAction = self.parseAction[:]
+        cpy.ignoreExprs = self.ignoreExprs[:]
+        if self.copyDefaultWhiteChars:
+            cpy.whiteChars = ParserElement.DEFAULT_WHITE_CHARS
+        return cpy
+
+    def setName( self, name ):
+        """
+        Define name for this expression, makes debugging and exception messages clearer.
+
+        Example::
+
+            Word(nums).parseString("ABC")  # -> Exception: Expected W:(0123...) (at char 0), (line:1, col:1)
+            Word(nums).setName("integer").parseString("ABC")  # -> Exception: Expected integer (at char 0), (line:1, col:1)
+        """
+        self.name = name
+        self.errmsg = "Expected " + self.name
+        if hasattr(self,"exception"):
+            self.exception.msg = self.errmsg
+        return self
+
+    def setResultsName( self, name, listAllMatches=False ):
+        """
+        Define name for referencing matching tokens as a nested attribute
+        of the returned parse results.
+        NOTE: this returns a *copy* of the original :class:`ParserElement` object;
+        this is so that the client can define a basic element, such as an
+        integer, and reference it in multiple places with different names.
+
+        You can also set results names using the abbreviated syntax,
+        ``expr("name")`` in place of ``expr.setResultsName("name")``
+        - see :class:`__call__`.
+
+        Example::
+
+            date_str = (integer.setResultsName("year") + '/'
+                        + integer.setResultsName("month") + '/'
+                        + integer.setResultsName("day"))
+
+            # equivalent form:
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+        """
+        newself = self.copy()
+        if name.endswith("*"):
+            name = name[:-1]
+            listAllMatches=True
+        newself.resultsName = name
+        newself.modalResults = not listAllMatches
+        return newself
+
+    def setBreak(self,breakFlag = True):
+        """Method to invoke the Python pdb debugger when this element is
+           about to be parsed. Set ``breakFlag`` to True to enable, False to
+           disable.
+        """
+        if breakFlag:
+            _parseMethod = self._parse
+            def breaker(instring, loc, doActions=True, callPreParse=True):
+                import pdb
+                pdb.set_trace()
+                return _parseMethod( instring, loc, doActions, callPreParse )
+            breaker._originalParseMethod = _parseMethod
+            self._parse = breaker
+        else:
+            if hasattr(self._parse,"_originalParseMethod"):
+                self._parse = self._parse._originalParseMethod
+        return self
+
+    def setParseAction( self, *fns, **kwargs ):
+        """
+        Define one or more actions to perform when successfully matching parse element definition.
+        Parse action fn is a callable method with 0-3 arguments, called as ``fn(s,loc,toks)`` ,
+        ``fn(loc,toks)`` , ``fn(toks)`` , or just ``fn()`` , where:
+
+        - s   = the original string being parsed (see note below)
+        - loc = the location of the matching substring
+        - toks = a list of the matched tokens, packaged as a :class:`ParseResults` object
+
+        If the functions in fns modify the tokens, they can return them as the return
+        value from fn, and the modified list of tokens will replace the original.
+        Otherwise, fn does not need to return any value.
+
+        Optional keyword arguments:
+        - callDuringTry = (default= ``False`` ) indicate if parse action should be run during lookaheads and alternate testing
+
+        Note: the default parsing behavior is to expand tabs in the input string
+        before starting the parsing process.  See :class:`parseString for more
+        information on parsing strings containing ``<TAB>`` s, and suggested
+        methods to maintain a consistent view of the parsed string, the parse
+        location, and line and column positions within the parsed string.
+
+        Example::
+
+            integer = Word(nums)
+            date_str = integer + '/' + integer + '/' + integer
+
+            date_str.parseString("1999/12/31")  # -> ['1999', '/', '12', '/', '31']
+
+            # use parse action to convert to ints at parse time
+            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
+            date_str = integer + '/' + integer + '/' + integer
+
+            # note that integer fields are now ints, not strings
+            date_str.parseString("1999/12/31")  # -> [1999, '/', 12, '/', 31]
+        """
+        self.parseAction = list(map(_trim_arity, list(fns)))
+        self.callDuringTry = kwargs.get("callDuringTry", False)
+        return self
+
+    def addParseAction( self, *fns, **kwargs ):
+        """
+        Add one or more parse actions to expression's list of parse actions. See :class:`setParseAction`.
+
+        See examples in :class:`copy`.
+        """
+        self.parseAction += list(map(_trim_arity, list(fns)))
+        self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False)
+        return self
+
+    def addCondition(self, *fns, **kwargs):
+        """Add a boolean predicate function to expression's list of parse actions. See
+        :class:`setParseAction` for function call signatures. Unlike ``setParseAction``,
+        functions passed to ``addCondition`` need to return boolean success/fail of the condition.
+
+        Optional keyword arguments:
+        - message = define a custom message to be used in the raised exception
+        - fatal   = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise ParseException
+
+        Example::
+
+            integer = Word(nums).setParseAction(lambda toks: int(toks[0]))
+            year_int = integer.copy()
+            year_int.addCondition(lambda toks: toks[0] >= 2000, message="Only support years 2000 and later")
+            date_str = year_int + '/' + integer + '/' + integer
+
+            result = date_str.parseString("1999/12/31")  # -> Exception: Only support years 2000 and later (at char 0), (line:1, col:1)
+        """
+        msg = kwargs.get("message", "failed user-defined condition")
+        exc_type = ParseFatalException if kwargs.get("fatal", False) else ParseException
+        for fn in fns:
+            fn = _trim_arity(fn)
+            def pa(s,l,t):
+                if not bool(fn(s,l,t)):
+                    raise exc_type(s,l,msg)
+            self.parseAction.append(pa)
+        self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False)
+        return self
+
+    def setFailAction( self, fn ):
+        """Define action to perform if parsing fails at this expression.
+           Fail acton fn is a callable function that takes the arguments
+           ``fn(s,loc,expr,err)`` where:
+           - s = string being parsed
+           - loc = location where expression match was attempted and failed
+           - expr = the parse expression that failed
+           - err = the exception thrown
+           The function returns no value.  It may throw :class:`ParseFatalException`
+           if it is desired to stop parsing immediately."""
+        self.failAction = fn
+        return self
+
+    def _skipIgnorables( self, instring, loc ):
+        exprsFound = True
+        while exprsFound:
+            exprsFound = False
+            for e in self.ignoreExprs:
+                try:
+                    while 1:
+                        loc,dummy = e._parse( instring, loc )
+                        exprsFound = True
+                except ParseException:
+                    pass
+        return loc
+
+    def preParse( self, instring, loc ):
+        if self.ignoreExprs:
+            loc = self._skipIgnorables( instring, loc )
+
+        if self.skipWhitespace:
+            wt = self.whiteChars
+            instrlen = len(instring)
+            while loc < instrlen and instring[loc] in wt:
+                loc += 1
+
+        return loc
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        return loc, []
+
+    def postParse( self, instring, loc, tokenlist ):
+        return tokenlist
+
+    #~ @profile
+    def _parseNoCache( self, instring, loc, doActions=True, callPreParse=True ):
+        debugging = ( self.debug ) #and doActions )
+
+        if debugging or self.failAction:
+            #~ print ("Match",self,"at loc",loc,"(%d,%d)" % ( lineno(loc,instring), col(loc,instring) ))
+            if (self.debugActions[0] ):
+                self.debugActions[0]( instring, loc, self )
+            if callPreParse and self.callPreparse:
+                preloc = self.preParse( instring, loc )
+            else:
+                preloc = loc
+            tokensStart = preloc
+            try:
+                try:
+                    loc,tokens = self.parseImpl( instring, preloc, doActions )
+                except IndexError:
+                    raise ParseException( instring, len(instring), self.errmsg, self )
+            except ParseBaseException as err:
+                #~ print ("Exception raised:", err)
+                if self.debugActions[2]:
+                    self.debugActions[2]( instring, tokensStart, self, err )
+                if self.failAction:
+                    self.failAction( instring, tokensStart, self, err )
+                raise
+        else:
+            if callPreParse and self.callPreparse:
+                preloc = self.preParse( instring, loc )
+            else:
+                preloc = loc
+            tokensStart = preloc
+            if self.mayIndexError or preloc >= len(instring):
+                try:
+                    loc,tokens = self.parseImpl( instring, preloc, doActions )
+                except IndexError:
+                    raise ParseException( instring, len(instring), self.errmsg, self )
+            else:
+                loc,tokens = self.parseImpl( instring, preloc, doActions )
+
+        tokens = self.postParse( instring, loc, tokens )
+
+        retTokens = ParseResults( tokens, self.resultsName, asList=self.saveAsList, modal=self.modalResults )
+        if self.parseAction and (doActions or self.callDuringTry):
+            if debugging:
+                try:
+                    for fn in self.parseAction:
+                        try:
+                            tokens = fn( instring, tokensStart, retTokens )
+                        except IndexError as parse_action_exc:
+                            exc = ParseException("exception raised in parse action")
+                            exc.__cause__ = parse_action_exc
+                            raise exc
+
+                        if tokens is not None and tokens is not retTokens:
+                            retTokens = ParseResults( tokens,
+                                                      self.resultsName,
+                                                      asList=self.saveAsList and isinstance(tokens,(ParseResults,list)),
+                                                      modal=self.modalResults )
+                except ParseBaseException as err:
+                    #~ print "Exception raised in user parse action:", err
+                    if (self.debugActions[2] ):
+                        self.debugActions[2]( instring, tokensStart, self, err )
+                    raise
+            else:
+                for fn in self.parseAction:
+                    try:
+                        tokens = fn( instring, tokensStart, retTokens )
+                    except IndexError as parse_action_exc:
+                        exc = ParseException("exception raised in parse action")
+                        exc.__cause__ = parse_action_exc
+                        raise exc
+
+                    if tokens is not None and tokens is not retTokens:
+                        retTokens = ParseResults( tokens,
+                                                  self.resultsName,
+                                                  asList=self.saveAsList and isinstance(tokens,(ParseResults,list)),
+                                                  modal=self.modalResults )
+        if debugging:
+            #~ print ("Matched",self,"->",retTokens.asList())
+            if (self.debugActions[1] ):
+                self.debugActions[1]( instring, tokensStart, loc, self, retTokens )
+
+        return loc, retTokens
+
+    def tryParse( self, instring, loc ):
+        try:
+            return self._parse( instring, loc, doActions=False )[0]
+        except ParseFatalException:
+            raise ParseException( instring, loc, self.errmsg, self)
+
+    def canParseNext(self, instring, loc):
+        try:
+            self.tryParse(instring, loc)
+        except (ParseException, IndexError):
+            return False
+        else:
+            return True
+
+    class _UnboundedCache(object):
+        def __init__(self):
+            cache = {}
+            self.not_in_cache = not_in_cache = object()
+
+            def get(self, key):
+                return cache.get(key, not_in_cache)
+
+            def set(self, key, value):
+                cache[key] = value
+
+            def clear(self):
+                cache.clear()
+
+            def cache_len(self):
+                return len(cache)
+
+            self.get = types.MethodType(get, self)
+            self.set = types.MethodType(set, self)
+            self.clear = types.MethodType(clear, self)
+            self.__len__ = types.MethodType(cache_len, self)
+
+    if _OrderedDict is not None:
+        class _FifoCache(object):
+            def __init__(self, size):
+                self.not_in_cache = not_in_cache = object()
+
+                cache = _OrderedDict()
+
+                def get(self, key):
+                    return cache.get(key, not_in_cache)
+
+                def set(self, key, value):
+                    cache[key] = value
+                    while len(cache) > size:
+                        try:
+                            cache.popitem(False)
+                        except KeyError:
+                            pass
+
+                def clear(self):
+                    cache.clear()
+
+                def cache_len(self):
+                    return len(cache)
+
+                self.get = types.MethodType(get, self)
+                self.set = types.MethodType(set, self)
+                self.clear = types.MethodType(clear, self)
+                self.__len__ = types.MethodType(cache_len, self)
+
+    else:
+        class _FifoCache(object):
+            def __init__(self, size):
+                self.not_in_cache = not_in_cache = object()
+
+                cache = {}
+                key_fifo = collections.deque([], size)
+
+                def get(self, key):
+                    return cache.get(key, not_in_cache)
+
+                def set(self, key, value):
+                    cache[key] = value
+                    while len(key_fifo) > size:
+                        cache.pop(key_fifo.popleft(), None)
+                    key_fifo.append(key)
+
+                def clear(self):
+                    cache.clear()
+                    key_fifo.clear()
+
+                def cache_len(self):
+                    return len(cache)
+
+                self.get = types.MethodType(get, self)
+                self.set = types.MethodType(set, self)
+                self.clear = types.MethodType(clear, self)
+                self.__len__ = types.MethodType(cache_len, self)
+
+    # argument cache for optimizing repeated calls when backtracking through recursive expressions
+    packrat_cache = {} # this is set later by enabledPackrat(); this is here so that resetCache() doesn't fail
+    packrat_cache_lock = RLock()
+    packrat_cache_stats = [0, 0]
+
+    # this method gets repeatedly called during backtracking with the same arguments -
+    # we can cache these arguments and save ourselves the trouble of re-parsing the contained expression
+    def _parseCache( self, instring, loc, doActions=True, callPreParse=True ):
+        HIT, MISS = 0, 1
+        lookup = (self, instring, loc, callPreParse, doActions)
+        with ParserElement.packrat_cache_lock:
+            cache = ParserElement.packrat_cache
+            value = cache.get(lookup)
+            if value is cache.not_in_cache:
+                ParserElement.packrat_cache_stats[MISS] += 1
+                try:
+                    value = self._parseNoCache(instring, loc, doActions, callPreParse)
+                except ParseBaseException as pe:
+                    # cache a copy of the exception, without the traceback
+                    cache.set(lookup, pe.__class__(*pe.args))
+                    raise
+                else:
+                    cache.set(lookup, (value[0], value[1].copy()))
+                    return value
+            else:
+                ParserElement.packrat_cache_stats[HIT] += 1
+                if isinstance(value, Exception):
+                    raise value
+                return (value[0], value[1].copy())
+
+    _parse = _parseNoCache
+
+    @staticmethod
+    def resetCache():
+        ParserElement.packrat_cache.clear()
+        ParserElement.packrat_cache_stats[:] = [0] * len(ParserElement.packrat_cache_stats)
+
+    _packratEnabled = False
+    @staticmethod
+    def enablePackrat(cache_size_limit=128):
+        """Enables "packrat" parsing, which adds memoizing to the parsing logic.
+           Repeated parse attempts at the same string location (which happens
+           often in many complex grammars) can immediately return a cached value,
+           instead of re-executing parsing/validating code.  Memoizing is done of
+           both valid results and parsing exceptions.
+
+           Parameters:
+
+           - cache_size_limit - (default= ``128``) - if an integer value is provided
+             will limit the size of the packrat cache; if None is passed, then
+             the cache size will be unbounded; if 0 is passed, the cache will
+             be effectively disabled.
+
+           This speedup may break existing programs that use parse actions that
+           have side-effects.  For this reason, packrat parsing is disabled when
+           you first import pyparsing.  To activate the packrat feature, your
+           program must call the class method :class:`ParserElement.enablePackrat`.
+           For best results, call ``enablePackrat()`` immediately after
+           importing pyparsing.
+
+           Example::
+
+               import pyparsing
+               pyparsing.ParserElement.enablePackrat()
+        """
+        if not ParserElement._packratEnabled:
+            ParserElement._packratEnabled = True
+            if cache_size_limit is None:
+                ParserElement.packrat_cache = ParserElement._UnboundedCache()
+            else:
+                ParserElement.packrat_cache = ParserElement._FifoCache(cache_size_limit)
+            ParserElement._parse = ParserElement._parseCache
+
+    def parseString( self, instring, parseAll=False ):
+        """
+        Execute the parse expression with the given string.
+        This is the main interface to the client code, once the complete
+        expression has been built.
+
+        If you want the grammar to require that the entire input string be
+        successfully parsed, then set ``parseAll`` to True (equivalent to ending
+        the grammar with ``StringEnd()``).
+
+        Note: ``parseString`` implicitly calls ``expandtabs()`` on the input string,
+        in order to report proper column numbers in parse actions.
+        If the input string contains tabs and
+        the grammar uses parse actions that use the ``loc`` argument to index into the
+        string being parsed, you can ensure you have a consistent view of the input
+        string by:
+
+        - calling ``parseWithTabs`` on your grammar before calling ``parseString``
+          (see :class:`parseWithTabs`)
+        - define your parse action using the full ``(s,loc,toks)`` signature, and
+          reference the input string using the parse action's ``s`` argument
+        - explictly expand the tabs in your input string before calling
+          ``parseString``
+
+        Example::
+
+            Word('a').parseString('aaaaabaaa')  # -> ['aaaaa']
+            Word('a').parseString('aaaaabaaa', parseAll=True)  # -> Exception: Expected end of text
+        """
+        ParserElement.resetCache()
+        if not self.streamlined:
+            self.streamline()
+            #~ self.saveAsList = True
+        for e in self.ignoreExprs:
+            e.streamline()
+        if not self.keepTabs:
+            instring = instring.expandtabs()
+        try:
+            loc, tokens = self._parse( instring, 0 )
+            if parseAll:
+                loc = self.preParse( instring, loc )
+                se = Empty() + StringEnd()
+                se._parse( instring, loc )
+        except ParseBaseException as exc:
+            if ParserElement.verbose_stacktrace:
+                raise
+            else:
+                # catch and re-raise exception from here, clears out pyparsing internal stack trace
+                raise exc
+        else:
+            return tokens
+
+    def scanString( self, instring, maxMatches=_MAX_INT, overlap=False ):
+        """
+        Scan the input string for expression matches.  Each match will return the
+        matching tokens, start location, and end location.  May be called with optional
+        ``maxMatches`` argument, to clip scanning after 'n' matches are found.  If
+        ``overlap`` is specified, then overlapping matches will be reported.
+
+        Note that the start and end locations are reported relative to the string
+        being parsed.  See :class:`parseString` for more information on parsing
+        strings with embedded tabs.
+
+        Example::
+
+            source = "sldjf123lsdjjkf345sldkjf879lkjsfd987"
+            print(source)
+            for tokens,start,end in Word(alphas).scanString(source):
+                print(' '*start + '^'*(end-start))
+                print(' '*start + tokens[0])
+
+        prints::
+
+            sldjf123lsdjjkf345sldkjf879lkjsfd987
+            ^^^^^
+            sldjf
+                    ^^^^^^^
+                    lsdjjkf
+                              ^^^^^^
+                              sldkjf
+                                       ^^^^^^
+                                       lkjsfd
+        """
+        if not self.streamlined:
+            self.streamline()
+        for e in self.ignoreExprs:
+            e.streamline()
+
+        if not self.keepTabs:
+            instring = _ustr(instring).expandtabs()
+        instrlen = len(instring)
+        loc = 0
+        preparseFn = self.preParse
+        parseFn = self._parse
+        ParserElement.resetCache()
+        matches = 0
+        try:
+            while loc <= instrlen and matches < maxMatches:
+                try:
+                    preloc = preparseFn( instring, loc )
+                    nextLoc,tokens = parseFn( instring, preloc, callPreParse=False )
+                except ParseException:
+                    loc = preloc+1
+                else:
+                    if nextLoc > loc:
+                        matches += 1
+                        yield tokens, preloc, nextLoc
+                        if overlap:
+                            nextloc = preparseFn( instring, loc )
+                            if nextloc > loc:
+                                loc = nextLoc
+                            else:
+                                loc += 1
+                        else:
+                            loc = nextLoc
+                    else:
+                        loc = preloc+1
+        except ParseBaseException as exc:
+            if ParserElement.verbose_stacktrace:
+                raise
+            else:
+                # catch and re-raise exception from here, clears out pyparsing internal stack trace
+                raise exc
+
+    def transformString( self, instring ):
+        """
+        Extension to :class:`scanString`, to modify matching text with modified tokens that may
+        be returned from a parse action.  To use ``transformString``, define a grammar and
+        attach a parse action to it that modifies the returned token list.
+        Invoking ``transformString()`` on a target string will then scan for matches,
+        and replace the matched text patterns according to the logic in the parse
+        action.  ``transformString()`` returns the resulting transformed string.
+
+        Example::
+
+            wd = Word(alphas)
+            wd.setParseAction(lambda toks: toks[0].title())
+
+            print(wd.transformString("now is the winter of our discontent made glorious summer by this sun of york."))
+
+        prints::
+
+            Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York.
+        """
+        out = []
+        lastE = 0
+        # force preservation of <TAB>s, to minimize unwanted transformation of string, and to
+        # keep string locs straight between transformString and scanString
+        self.keepTabs = True
+        try:
+            for t,s,e in self.scanString( instring ):
+                out.append( instring[lastE:s] )
+                if t:
+                    if isinstance(t,ParseResults):
+                        out += t.asList()
+                    elif isinstance(t,list):
+                        out += t
+                    else:
+                        out.append(t)
+                lastE = e
+            out.append(instring[lastE:])
+            out = [o for o in out if o]
+            return "".join(map(_ustr,_flatten(out)))
+        except ParseBaseException as exc:
+            if ParserElement.verbose_stacktrace:
+                raise
+            else:
+                # catch and re-raise exception from here, clears out pyparsing internal stack trace
+                raise exc
+
+    def searchString( self, instring, maxMatches=_MAX_INT ):
+        """
+        Another extension to :class:`scanString`, simplifying the access to the tokens found
+        to match the given parse expression.  May be called with optional
+        ``maxMatches`` argument, to clip searching after 'n' matches are found.
+
+        Example::
+
+            # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters
+            cap_word = Word(alphas.upper(), alphas.lower())
+
+            print(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity"))
+
+            # the sum() builtin can be used to merge results into a single ParseResults object
+            print(sum(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity")))
+
+        prints::
+
+            [['More'], ['Iron'], ['Lead'], ['Gold'], ['I'], ['Electricity']]
+            ['More', 'Iron', 'Lead', 'Gold', 'I', 'Electricity']
+        """
+        try:
+            return ParseResults([ t for t,s,e in self.scanString( instring, maxMatches ) ])
+        except ParseBaseException as exc:
+            if ParserElement.verbose_stacktrace:
+                raise
+            else:
+                # catch and re-raise exception from here, clears out pyparsing internal stack trace
+                raise exc
+
+    def split(self, instring, maxsplit=_MAX_INT, includeSeparators=False):
+        """
+        Generator method to split a string using the given expression as a separator.
+        May be called with optional ``maxsplit`` argument, to limit the number of splits;
+        and the optional ``includeSeparators`` argument (default= ``False``), if the separating
+        matching text should be included in the split results.
+
+        Example::
+
+            punc = oneOf(list(".,;:/-!?"))
+            print(list(punc.split("This, this?, this sentence, is badly punctuated!")))
+
+        prints::
+
+            ['This', ' this', '', ' this sentence', ' is badly punctuated', '']
+        """
+        splits = 0
+        last = 0
+        for t,s,e in self.scanString(instring, maxMatches=maxsplit):
+            yield instring[last:s]
+            if includeSeparators:
+                yield t[0]
+            last = e
+        yield instring[last:]
+
+    def __add__(self, other ):
+        """
+        Implementation of + operator - returns :class:`And`. Adding strings to a ParserElement
+        converts them to :class:`Literal`s by default.
+
+        Example::
+
+            greet = Word(alphas) + "," + Word(alphas) + "!"
+            hello = "Hello, World!"
+            print (hello, "->", greet.parseString(hello))
+
+        prints::
+
+            Hello, World! -> ['Hello', ',', 'World', '!']
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return And( [ self, other ] )
+
+    def __radd__(self, other ):
+        """
+        Implementation of + operator when left operand is not a :class:`ParserElement`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return other + self
+
+    def __sub__(self, other):
+        """
+        Implementation of - operator, returns :class:`And` with error stop
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return self + And._ErrorStop() + other
+
+    def __rsub__(self, other ):
+        """
+        Implementation of - operator when left operand is not a :class:`ParserElement`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return other - self
+
+    def __mul__(self,other):
+        """
+        Implementation of * operator, allows use of ``expr * 3`` in place of
+        ``expr + expr + expr``.  Expressions may also me multiplied by a 2-integer
+        tuple, similar to ``{min,max}`` multipliers in regular expressions.  Tuples
+        may also include ``None`` as in:
+         - ``expr*(n,None)`` or ``expr*(n,)`` is equivalent
+              to ``expr*n + ZeroOrMore(expr)``
+              (read as "at least n instances of ``expr``")
+         - ``expr*(None,n)`` is equivalent to ``expr*(0,n)``
+              (read as "0 to n instances of ``expr``")
+         - ``expr*(None,None)`` is equivalent to ``ZeroOrMore(expr)``
+         - ``expr*(1,None)`` is equivalent to ``OneOrMore(expr)``
+
+        Note that ``expr*(None,n)`` does not raise an exception if
+        more than n exprs exist in the input stream; that is,
+        ``expr*(None,n)`` does not enforce a maximum number of expr
+        occurrences.  If this behavior is desired, then write
+        ``expr*(None,n) + ~expr``
+        """
+        if isinstance(other,int):
+            minElements, optElements = other,0
+        elif isinstance(other,tuple):
+            other = (other + (None, None))[:2]
+            if other[0] is None:
+                other = (0, other[1])
+            if isinstance(other[0],int) and other[1] is None:
+                if other[0] == 0:
+                    return ZeroOrMore(self)
+                if other[0] == 1:
+                    return OneOrMore(self)
+                else:
+                    return self*other[0] + ZeroOrMore(self)
+            elif isinstance(other[0],int) and isinstance(other[1],int):
+                minElements, optElements = other
+                optElements -= minElements
+            else:
+                raise TypeError("cannot multiply 'ParserElement' and ('%s','%s') objects", type(other[0]),type(other[1]))
+        else:
+            raise TypeError("cannot multiply 'ParserElement' and '%s' objects", type(other))
+
+        if minElements < 0:
+            raise ValueError("cannot multiply ParserElement by negative value")
+        if optElements < 0:
+            raise ValueError("second tuple value must be greater or equal to first tuple value")
+        if minElements == optElements == 0:
+            raise ValueError("cannot multiply ParserElement by 0 or (0,0)")
+
+        if (optElements):
+            def makeOptionalList(n):
+                if n>1:
+                    return Optional(self + makeOptionalList(n-1))
+                else:
+                    return Optional(self)
+            if minElements:
+                if minElements == 1:
+                    ret = self + makeOptionalList(optElements)
+                else:
+                    ret = And([self]*minElements) + makeOptionalList(optElements)
+            else:
+                ret = makeOptionalList(optElements)
+        else:
+            if minElements == 1:
+                ret = self
+            else:
+                ret = And([self]*minElements)
+        return ret
+
+    def __rmul__(self, other):
+        return self.__mul__(other)
+
+    def __or__(self, other ):
+        """
+        Implementation of | operator - returns :class:`MatchFirst`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return MatchFirst( [ self, other ] )
+
+    def __ror__(self, other ):
+        """
+        Implementation of | operator when left operand is not a :class:`ParserElement`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return other | self
+
+    def __xor__(self, other ):
+        """
+        Implementation of ^ operator - returns :class:`Or`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return Or( [ self, other ] )
+
+    def __rxor__(self, other ):
+        """
+        Implementation of ^ operator when left operand is not a :class:`ParserElement`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return other ^ self
+
+    def __and__(self, other ):
+        """
+        Implementation of & operator - returns :class:`Each`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return Each( [ self, other ] )
+
+    def __rand__(self, other ):
+        """
+        Implementation of & operator when left operand is not a :class:`ParserElement`
+        """
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        if not isinstance( other, ParserElement ):
+            warnings.warn("Cannot combine element of type %s with ParserElement" % type(other),
+                    SyntaxWarning, stacklevel=2)
+            return None
+        return other & self
+
+    def __invert__( self ):
+        """
+        Implementation of ~ operator - returns :class:`NotAny`
+        """
+        return NotAny( self )
+
+    def __call__(self, name=None):
+        """
+        Shortcut for :class:`setResultsName`, with ``listAllMatches=False``.
+
+        If ``name`` is given with a trailing ``'*'`` character, then ``listAllMatches`` will be
+        passed as ``True``.
+
+        If ``name` is omitted, same as calling :class:`copy`.
+
+        Example::
+
+            # these are equivalent
+            userdata = Word(alphas).setResultsName("name") + Word(nums+"-").setResultsName("socsecno")
+            userdata = Word(alphas)("name") + Word(nums+"-")("socsecno")
+        """
+        if name is not None:
+            return self.setResultsName(name)
+        else:
+            return self.copy()
+
+    def suppress( self ):
+        """
+        Suppresses the output of this :class:`ParserElement`; useful to keep punctuation from
+        cluttering up returned output.
+        """
+        return Suppress( self )
+
+    def leaveWhitespace( self ):
+        """
+        Disables the skipping of whitespace before matching the characters in the
+        :class:`ParserElement`'s defined pattern.  This is normally only used internally by
+        the pyparsing module, but may be needed in some whitespace-sensitive grammars.
+        """
+        self.skipWhitespace = False
+        return self
+
+    def setWhitespaceChars( self, chars ):
+        """
+        Overrides the default whitespace chars
+        """
+        self.skipWhitespace = True
+        self.whiteChars = chars
+        self.copyDefaultWhiteChars = False
+        return self
+
+    def parseWithTabs( self ):
+        """
+        Overrides default behavior to expand ``<TAB>``s to spaces before parsing the input string.
+        Must be called before ``parseString`` when the input grammar contains elements that
+        match ``<TAB>`` characters.
+        """
+        self.keepTabs = True
+        return self
+
+    def ignore( self, other ):
+        """
+        Define expression to be ignored (e.g., comments) while doing pattern
+        matching; may be called repeatedly, to define multiple comment or other
+        ignorable patterns.
+
+        Example::
+
+            patt = OneOrMore(Word(alphas))
+            patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj']
+
+            patt.ignore(cStyleComment)
+            patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj', 'lskjd']
+        """
+        if isinstance(other, basestring):
+            other = Suppress(other)
+
+        if isinstance( other, Suppress ):
+            if other not in self.ignoreExprs:
+                self.ignoreExprs.append(other)
+        else:
+            self.ignoreExprs.append( Suppress( other.copy() ) )
+        return self
+
+    def setDebugActions( self, startAction, successAction, exceptionAction ):
+        """
+        Enable display of debugging messages while doing pattern matching.
+        """
+        self.debugActions = (startAction or _defaultStartDebugAction,
+                             successAction or _defaultSuccessDebugAction,
+                             exceptionAction or _defaultExceptionDebugAction)
+        self.debug = True
+        return self
+
+    def setDebug( self, flag=True ):
+        """
+        Enable display of debugging messages while doing pattern matching.
+        Set ``flag`` to True to enable, False to disable.
+
+        Example::
+
+            wd = Word(alphas).setName("alphaword")
+            integer = Word(nums).setName("numword")
+            term = wd | integer
+
+            # turn on debugging for wd
+            wd.setDebug()
+
+            OneOrMore(term).parseString("abc 123 xyz 890")
+
+        prints::
+
+            Match alphaword at loc 0(1,1)
+            Matched alphaword -> ['abc']
+            Match alphaword at loc 3(1,4)
+            Exception raised:Expected alphaword (at char 4), (line:1, col:5)
+            Match alphaword at loc 7(1,8)
+            Matched alphaword -> ['xyz']
+            Match alphaword at loc 11(1,12)
+            Exception raised:Expected alphaword (at char 12), (line:1, col:13)
+            Match alphaword at loc 15(1,16)
+            Exception raised:Expected alphaword (at char 15), (line:1, col:16)
+
+        The output shown is that produced by the default debug actions - custom debug actions can be
+        specified using :class:`setDebugActions`. Prior to attempting
+        to match the ``wd`` expression, the debugging message ``"Match <exprname> at loc <n>(<line>,<col>)"``
+        is shown. Then if the parse succeeds, a ``"Matched"`` message is shown, or an ``"Exception raised"``
+        message is shown. Also note the use of :class:`setName` to assign a human-readable name to the expression,
+        which makes debugging and exception messages easier to understand - for instance, the default
+        name created for the :class:`Word` expression without calling ``setName`` is ``"W:(ABCD...)"``.
+        """
+        if flag:
+            self.setDebugActions( _defaultStartDebugAction, _defaultSuccessDebugAction, _defaultExceptionDebugAction )
+        else:
+            self.debug = False
+        return self
+
+    def __str__( self ):
+        return self.name
+
+    def __repr__( self ):
+        return _ustr(self)
+
+    def streamline( self ):
+        self.streamlined = True
+        self.strRepr = None
+        return self
+
+    def checkRecursion( self, parseElementList ):
+        pass
+
+    def validate( self, validateTrace=[] ):
+        """
+        Check defined expressions for valid structure, check for infinite recursive definitions.
+        """
+        self.checkRecursion( [] )
+
+    def parseFile( self, file_or_filename, parseAll=False ):
+        """
+        Execute the parse expression on the given file or filename.
+        If a filename is specified (instead of a file object),
+        the entire file is opened, read, and closed before parsing.
+        """
+        try:
+            file_contents = file_or_filename.read()
+        except AttributeError:
+            with open(file_or_filename, "r") as f:
+                file_contents = f.read()
+        try:
+            return self.parseString(file_contents, parseAll)
+        except ParseBaseException as exc:
+            if ParserElement.verbose_stacktrace:
+                raise
+            else:
+                # catch and re-raise exception from here, clears out pyparsing internal stack trace
+                raise exc
+
+    def __eq__(self,other):
+        if isinstance(other, ParserElement):
+            return self is other or vars(self) == vars(other)
+        elif isinstance(other, basestring):
+            return self.matches(other)
+        else:
+            return super(ParserElement,self)==other
+
+    def __ne__(self,other):
+        return not (self == other)
+
+    def __hash__(self):
+        return hash(id(self))
+
+    def __req__(self,other):
+        return self == other
+
+    def __rne__(self,other):
+        return not (self == other)
+
+    def matches(self, testString, parseAll=True):
+        """
+        Method for quick testing of a parser against a test string. Good for simple
+        inline microtests of sub expressions while building up larger parser.
+
+        Parameters:
+         - testString - to test against this expression for a match
+         - parseAll - (default= ``True``) - flag to pass to :class:`parseString` when running tests
+
+        Example::
+
+            expr = Word(nums)
+            assert expr.matches("100")
+        """
+        try:
+            self.parseString(_ustr(testString), parseAll=parseAll)
+            return True
+        except ParseBaseException:
+            return False
+
+    def runTests(self, tests, parseAll=True, comment='#',
+                 fullDump=True, printResults=True, failureTests=False, postParse=None):
+        """
+        Execute the parse expression on a series of test strings, showing each
+        test, the parsed results or where the parse failed. Quick and easy way to
+        run a parse expression against a list of sample strings.
+
+        Parameters:
+         - tests - a list of separate test strings, or a multiline string of test strings
+         - parseAll - (default= ``True``) - flag to pass to :class:`parseString` when running tests
+         - comment - (default= ``'#'``) - expression for indicating embedded comments in the test
+              string; pass None to disable comment filtering
+         - fullDump - (default= ``True``) - dump results as list followed by results names in nested outline;
+              if False, only dump nested list
+         - printResults - (default= ``True``) prints test output to stdout
+         - failureTests - (default= ``False``) indicates if these tests are expected to fail parsing
+         - postParse - (default= ``None``) optional callback for successful parse results; called as
+              `fn(test_string, parse_results)` and returns a string to be added to the test output
+
+        Returns: a (success, results) tuple, where success indicates that all tests succeeded
+        (or failed if ``failureTests`` is True), and the results contain a list of lines of each
+        test's output
+
+        Example::
+
+            number_expr = pyparsing_common.number.copy()
+
+            result = number_expr.runTests('''
+                # unsigned integer
+                100
+                # negative integer
+                -100
+                # float with scientific notation
+                6.02e23
+                # integer with scientific notation
+                1e-12
+                ''')
+            print("Success" if result[0] else "Failed!")
+
+            result = number_expr.runTests('''
+                # stray character
+                100Z
+                # missing leading digit before '.'
+                -.100
+                # too many '.'
+                3.14.159
+                ''', failureTests=True)
+            print("Success" if result[0] else "Failed!")
+
+        prints::
+
+            # unsigned integer
+            100
+            [100]
+
+            # negative integer
+            -100
+            [-100]
+
+            # float with scientific notation
+            6.02e23
+            [6.02e+23]
+
+            # integer with scientific notation
+            1e-12
+            [1e-12]
+
+            Success
+
+            # stray character
+            100Z
+               ^
+            FAIL: Expected end of text (at char 3), (line:1, col:4)
+
+            # missing leading digit before '.'
+            -.100
+            ^
+            FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1)
+
+            # too many '.'
+            3.14.159
+                ^
+            FAIL: Expected end of text (at char 4), (line:1, col:5)
+
+            Success
+
+        Each test string must be on a single line. If you want to test a string that spans multiple
+        lines, create a test like this::
+
+            expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines")
+
+        (Note that this is a raw string literal, you must include the leading 'r'.)
+        """
+        if isinstance(tests, basestring):
+            tests = list(map(str.strip, tests.rstrip().splitlines()))
+        if isinstance(comment, basestring):
+            comment = Literal(comment)
+        allResults = []
+        comments = []
+        success = True
+        for t in tests:
+            if comment is not None and comment.matches(t, False) or comments and not t:
+                comments.append(t)
+                continue
+            if not t:
+                continue
+            out = ['\n'.join(comments), t]
+            comments = []
+            try:
+                # convert newline marks to actual newlines, and strip leading BOM if present
+                t = t.replace(r'\n','\n').lstrip('\ufeff')
+                result = self.parseString(t, parseAll=parseAll)
+                out.append(result.dump(full=fullDump))
+                success = success and not failureTests
+                if postParse is not None:
+                    try:
+                        pp_value = postParse(t, result)
+                        if pp_value is not None:
+                            out.append(str(pp_value))
+                    except Exception as e:
+                        out.append("{0} failed: {1}: {2}".format(postParse.__name__, type(e).__name__, e))
+            except ParseBaseException as pe:
+                fatal = "(FATAL)" if isinstance(pe, ParseFatalException) else ""
+                if '\n' in t:
+                    out.append(line(pe.loc, t))
+                    out.append(' '*(col(pe.loc,t)-1) + '^' + fatal)
+                else:
+                    out.append(' '*pe.loc + '^' + fatal)
+                out.append("FAIL: " + str(pe))
+                success = success and failureTests
+                result = pe
+            except Exception as exc:
+                out.append("FAIL-EXCEPTION: " + str(exc))
+                success = success and failureTests
+                result = exc
+
+            if printResults:
+                if fullDump:
+                    out.append('')
+                print('\n'.join(out))
+
+            allResults.append((t, result))
+
+        return success, allResults
+
+
+class Token(ParserElement):
+    """Abstract :class:`ParserElement` subclass, for defining atomic
+    matching patterns.
+    """
+    def __init__( self ):
+        super(Token,self).__init__( savelist=False )
+
+
+class Empty(Token):
+    """An empty token, will always match.
+    """
+    def __init__( self ):
+        super(Empty,self).__init__()
+        self.name = "Empty"
+        self.mayReturnEmpty = True
+        self.mayIndexError = False
+
+
+class NoMatch(Token):
+    """A token that will never match.
+    """
+    def __init__( self ):
+        super(NoMatch,self).__init__()
+        self.name = "NoMatch"
+        self.mayReturnEmpty = True
+        self.mayIndexError = False
+        self.errmsg = "Unmatchable token"
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        raise ParseException(instring, loc, self.errmsg, self)
+
+
+class Literal(Token):
+    """Token to exactly match a specified string.
+
+    Example::
+
+        Literal('blah').parseString('blah')  # -> ['blah']
+        Literal('blah').parseString('blahfooblah')  # -> ['blah']
+        Literal('blah').parseString('bla')  # -> Exception: Expected "blah"
+
+    For case-insensitive matching, use :class:`CaselessLiteral`.
+
+    For keyword matching (force word break before and after the matched string),
+    use :class:`Keyword` or :class:`CaselessKeyword`.
+    """
+    def __init__( self, matchString ):
+        super(Literal,self).__init__()
+        self.match = matchString
+        self.matchLen = len(matchString)
+        try:
+            self.firstMatchChar = matchString[0]
+        except IndexError:
+            warnings.warn("null string passed to Literal; use Empty() instead",
+                            SyntaxWarning, stacklevel=2)
+            self.__class__ = Empty
+        self.name = '"%s"' % _ustr(self.match)
+        self.errmsg = "Expected " + self.name
+        self.mayReturnEmpty = False
+        self.mayIndexError = False
+
+    # Performance tuning: this routine gets called a *lot*
+    # if this is a single character match string  and the first character matches,
+    # short-circuit as quickly as possible, and avoid calling startswith
+    #~ @profile
+    def parseImpl( self, instring, loc, doActions=True ):
+        if (instring[loc] == self.firstMatchChar and
+            (self.matchLen==1 or instring.startswith(self.match,loc)) ):
+            return loc+self.matchLen, self.match
+        raise ParseException(instring, loc, self.errmsg, self)
+_L = Literal
+ParserElement._literalStringClass = Literal
+
+class Keyword(Token):
+    """Token to exactly match a specified string as a keyword, that is,
+    it must be immediately followed by a non-keyword character.  Compare
+    with :class:`Literal`:
+
+     - ``Literal("if")`` will match the leading ``'if'`` in
+       ``'ifAndOnlyIf'``.
+     - ``Keyword("if")`` will not; it will only match the leading
+       ``'if'`` in ``'if x=1'``, or ``'if(y==2)'``
+
+    Accepts two optional constructor arguments in addition to the
+    keyword string:
+
+     - ``identChars`` is a string of characters that would be valid
+       identifier characters, defaulting to all alphanumerics + "_" and
+       "$"
+     - ``caseless`` allows case-insensitive matching, default is ``False``.
+
+    Example::
+
+        Keyword("start").parseString("start")  # -> ['start']
+        Keyword("start").parseString("starting")  # -> Exception
+
+    For case-insensitive matching, use :class:`CaselessKeyword`.
+    """
+    DEFAULT_KEYWORD_CHARS = alphanums+"_$"
+
+    def __init__( self, matchString, identChars=None, caseless=False ):
+        super(Keyword,self).__init__()
+        if identChars is None:
+            identChars = Keyword.DEFAULT_KEYWORD_CHARS
+        self.match = matchString
+        self.matchLen = len(matchString)
+        try:
+            self.firstMatchChar = matchString[0]
+        except IndexError:
+            warnings.warn("null string passed to Keyword; use Empty() instead",
+                            SyntaxWarning, stacklevel=2)
+        self.name = '"%s"' % self.match
+        self.errmsg = "Expected " + self.name
+        self.mayReturnEmpty = False
+        self.mayIndexError = False
+        self.caseless = caseless
+        if caseless:
+            self.caselessmatch = matchString.upper()
+            identChars = identChars.upper()
+        self.identChars = set(identChars)
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if self.caseless:
+            if ( (instring[ loc:loc+self.matchLen ].upper() == self.caselessmatch) and
+                 (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen].upper() not in self.identChars) and
+                 (loc == 0 or instring[loc-1].upper() not in self.identChars) ):
+                return loc+self.matchLen, self.match
+        else:
+            if (instring[loc] == self.firstMatchChar and
+                (self.matchLen==1 or instring.startswith(self.match,loc)) and
+                (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen] not in self.identChars) and
+                (loc == 0 or instring[loc-1] not in self.identChars) ):
+                return loc+self.matchLen, self.match
+        raise ParseException(instring, loc, self.errmsg, self)
+
+    def copy(self):
+        c = super(Keyword,self).copy()
+        c.identChars = Keyword.DEFAULT_KEYWORD_CHARS
+        return c
+
+    @staticmethod
+    def setDefaultKeywordChars( chars ):
+        """Overrides the default Keyword chars
+        """
+        Keyword.DEFAULT_KEYWORD_CHARS = chars
+
+class CaselessLiteral(Literal):
+    """Token to match a specified string, ignoring case of letters.
+    Note: the matched results will always be in the case of the given
+    match string, NOT the case of the input text.
+
+    Example::
+
+        OneOrMore(CaselessLiteral("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD', 'CMD']
+
+    (Contrast with example for :class:`CaselessKeyword`.)
+    """
+    def __init__( self, matchString ):
+        super(CaselessLiteral,self).__init__( matchString.upper() )
+        # Preserve the defining literal.
+        self.returnString = matchString
+        self.name = "'%s'" % self.returnString
+        self.errmsg = "Expected " + self.name
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if instring[ loc:loc+self.matchLen ].upper() == self.match:
+            return loc+self.matchLen, self.returnString
+        raise ParseException(instring, loc, self.errmsg, self)
+
+class CaselessKeyword(Keyword):
+    """
+    Caseless version of :class:`Keyword`.
+
+    Example::
+
+        OneOrMore(CaselessKeyword("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD']
+
+    (Contrast with example for :class:`CaselessLiteral`.)
+    """
+    def __init__( self, matchString, identChars=None ):
+        super(CaselessKeyword,self).__init__( matchString, identChars, caseless=True )
+
+class CloseMatch(Token):
+    """A variation on :class:`Literal` which matches "close" matches,
+    that is, strings with at most 'n' mismatching characters.
+    :class:`CloseMatch` takes parameters:
+
+     - ``match_string`` - string to be matched
+     - ``maxMismatches`` - (``default=1``) maximum number of
+       mismatches allowed to count as a match
+
+    The results from a successful parse will contain the matched text
+    from the input string and the following named results:
+
+     - ``mismatches`` - a list of the positions within the
+       match_string where mismatches were found
+     - ``original`` - the original match_string used to compare
+       against the input string
+
+    If ``mismatches`` is an empty list, then the match was an exact
+    match.
+
+    Example::
+
+        patt = CloseMatch("ATCATCGAATGGA")
+        patt.parseString("ATCATCGAAXGGA") # -> (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']})
+        patt.parseString("ATCAXCGAAXGGA") # -> Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1)
+
+        # exact match
+        patt.parseString("ATCATCGAATGGA") # -> (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']})
+
+        # close match allowing up to 2 mismatches
+        patt = CloseMatch("ATCATCGAATGGA", maxMismatches=2)
+        patt.parseString("ATCAXCGAAXGGA") # -> (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']})
+    """
+    def __init__(self, match_string, maxMismatches=1):
+        super(CloseMatch,self).__init__()
+        self.name = match_string
+        self.match_string = match_string
+        self.maxMismatches = maxMismatches
+        self.errmsg = "Expected %r (with up to %d mismatches)" % (self.match_string, self.maxMismatches)
+        self.mayIndexError = False
+        self.mayReturnEmpty = False
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        start = loc
+        instrlen = len(instring)
+        maxloc = start + len(self.match_string)
+
+        if maxloc <= instrlen:
+            match_string = self.match_string
+            match_stringloc = 0
+            mismatches = []
+            maxMismatches = self.maxMismatches
+
+            for match_stringloc,s_m in enumerate(zip(instring[loc:maxloc], self.match_string)):
+                src,mat = s_m
+                if src != mat:
+                    mismatches.append(match_stringloc)
+                    if len(mismatches) > maxMismatches:
+                        break
+            else:
+                loc = match_stringloc + 1
+                results = ParseResults([instring[start:loc]])
+                results['original'] = self.match_string
+                results['mismatches'] = mismatches
+                return loc, results
+
+        raise ParseException(instring, loc, self.errmsg, self)
+
+
+class Word(Token):
+    """Token for matching words composed of allowed character sets.
+    Defined with string containing all allowed initial characters, an
+    optional string containing allowed body characters (if omitted,
+    defaults to the initial character set), and an optional minimum,
+    maximum, and/or exact length.  The default value for ``min`` is
+    1 (a minimum value < 1 is not valid); the default values for
+    ``max`` and ``exact`` are 0, meaning no maximum or exact
+    length restriction. An optional ``excludeChars`` parameter can
+    list characters that might be found in the input ``bodyChars``
+    string; useful to define a word of all printables except for one or
+    two characters, for instance.
+
+    :class:`srange` is useful for defining custom character set strings
+    for defining ``Word`` expressions, using range notation from
+    regular expression character sets.
+
+    A common mistake is to use :class:`Word` to match a specific literal
+    string, as in ``Word("Address")``. Remember that :class:`Word`
+    uses the string argument to define *sets* of matchable characters.
+    This expression would match "Add", "AAA", "dAred", or any other word
+    made up of the characters 'A', 'd', 'r', 'e', and 's'. To match an
+    exact literal string, use :class:`Literal` or :class:`Keyword`.
+
+    pyparsing includes helper strings for building Words:
+
+     - :class:`alphas`
+     - :class:`nums`
+     - :class:`alphanums`
+     - :class:`hexnums`
+     - :class:`alphas8bit` (alphabetic characters in ASCII range 128-255
+       - accented, tilded, umlauted, etc.)
+     - :class:`punc8bit` (non-alphabetic characters in ASCII range
+       128-255 - currency, symbols, superscripts, diacriticals, etc.)
+     - :class:`printables` (any non-whitespace character)
+
+    Example::
+
+        # a word composed of digits
+        integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9"))
+
+        # a word with a leading capital, and zero or more lowercase
+        capital_word = Word(alphas.upper(), alphas.lower())
+
+        # hostnames are alphanumeric, with leading alpha, and '-'
+        hostname = Word(alphas, alphanums+'-')
+
+        # roman numeral (not a strict parser, accepts invalid mix of characters)
+        roman = Word("IVXLCDM")
+
+        # any string of non-whitespace characters, except for ','
+        csv_value = Word(printables, excludeChars=",")
+    """
+    def __init__( self, initChars, bodyChars=None, min=1, max=0, exact=0, asKeyword=False, excludeChars=None ):
+        super(Word,self).__init__()
+        if excludeChars:
+            initChars = ''.join(c for c in initChars if c not in excludeChars)
+            if bodyChars:
+                bodyChars = ''.join(c for c in bodyChars if c not in excludeChars)
+        self.initCharsOrig = initChars
+        self.initChars = set(initChars)
+        if bodyChars :
+            self.bodyCharsOrig = bodyChars
+            self.bodyChars = set(bodyChars)
+        else:
+            self.bodyCharsOrig = initChars
+            self.bodyChars = set(initChars)
+
+        self.maxSpecified = max > 0
+
+        if min < 1:
+            raise ValueError("cannot specify a minimum length < 1; use Optional(Word()) if zero-length word is permitted")
+
+        self.minLen = min
+
+        if max > 0:
+            self.maxLen = max
+        else:
+            self.maxLen = _MAX_INT
+
+        if exact > 0:
+            self.maxLen = exact
+            self.minLen = exact
+
+        self.name = _ustr(self)
+        self.errmsg = "Expected " + self.name
+        self.mayIndexError = False
+        self.asKeyword = asKeyword
+
+        if ' ' not in self.initCharsOrig+self.bodyCharsOrig and (min==1 and max==0 and exact==0):
+            if self.bodyCharsOrig == self.initCharsOrig:
+                self.reString = "[%s]+" % _escapeRegexRangeChars(self.initCharsOrig)
+            elif len(self.initCharsOrig) == 1:
+                self.reString = "%s[%s]*" % \
+                                      (re.escape(self.initCharsOrig),
+                                      _escapeRegexRangeChars(self.bodyCharsOrig),)
+            else:
+                self.reString = "[%s][%s]*" % \
+                                      (_escapeRegexRangeChars(self.initCharsOrig),
+                                      _escapeRegexRangeChars(self.bodyCharsOrig),)
+            if self.asKeyword:
+                self.reString = r"\b"+self.reString+r"\b"
+            try:
+                self.re = re.compile( self.reString )
+            except Exception:
+                self.re = None
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if self.re:
+            result = self.re.match(instring,loc)
+            if not result:
+                raise ParseException(instring, loc, self.errmsg, self)
+
+            loc = result.end()
+            return loc, result.group()
+
+        if not(instring[ loc ] in self.initChars):
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        start = loc
+        loc += 1
+        instrlen = len(instring)
+        bodychars = self.bodyChars
+        maxloc = start + self.maxLen
+        maxloc = min( maxloc, instrlen )
+        while loc < maxloc and instring[loc] in bodychars:
+            loc += 1
+
+        throwException = False
+        if loc - start < self.minLen:
+            throwException = True
+        if self.maxSpecified and loc < instrlen and instring[loc] in bodychars:
+            throwException = True
+        if self.asKeyword:
+            if (start>0 and instring[start-1] in bodychars) or (loc<instrlen and instring[loc] in bodychars):
+                throwException = True
+
+        if throwException:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        return loc, instring[start:loc]
+
+    def __str__( self ):
+        try:
+            return super(Word,self).__str__()
+        except Exception:
+            pass
+
+
+        if self.strRepr is None:
+
+            def charsAsStr(s):
+                if len(s)>4:
+                    return s[:4]+"..."
+                else:
+                    return s
+
+            if ( self.initCharsOrig != self.bodyCharsOrig ):
+                self.strRepr = "W:(%s,%s)" % ( charsAsStr(self.initCharsOrig), charsAsStr(self.bodyCharsOrig) )
+            else:
+                self.strRepr = "W:(%s)" % charsAsStr(self.initCharsOrig)
+
+        return self.strRepr
+
+
+class Char(Word):
+    """A short-cut class for defining ``Word(characters, exact=1)``,
+    when defining a match of any single character in a string of
+    characters.
+    """
+    def __init__(self, charset):
+        super(Char, self).__init__(charset, exact=1)
+        self.reString = "[%s]" % _escapeRegexRangeChars(self.initCharsOrig)
+        self.re = re.compile( self.reString )
+
+
+class Regex(Token):
+    r"""Token for matching strings that match a given regular
+    expression. Defined with string specifying the regular expression in
+    a form recognized by the stdlib Python  `re module <https://docs.python.org/3/library/re.html>`_.
+    If the given regex contains named groups (defined using ``(?P<name>...)``),
+    these will be preserved as named parse results.
+
+    Example::
+
+        realnum = Regex(r"[+-]?\d+\.\d*")
+        date = Regex(r'(?P<year>\d{4})-(?P<month>\d\d?)-(?P<day>\d\d?)')
+        # ref: https://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression
+        roman = Regex(r"M{0,4}(CM|CD|D?{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})")
+    """
+    compiledREtype = type(re.compile("[A-Z]"))
+    def __init__( self, pattern, flags=0, asGroupList=False, asMatch=False):
+        """The parameters ``pattern`` and ``flags`` are passed
+        to the ``re.compile()`` function as-is. See the Python
+        `re module <https://docs.python.org/3/library/re.html>`_ module for an
+        explanation of the acceptable patterns and flags.
+        """
+        super(Regex,self).__init__()
+
+        if isinstance(pattern, basestring):
+            if not pattern:
+                warnings.warn("null string passed to Regex; use Empty() instead",
+                        SyntaxWarning, stacklevel=2)
+
+            self.pattern = pattern
+            self.flags = flags
+
+            try:
+                self.re = re.compile(self.pattern, self.flags)
+                self.reString = self.pattern
+            except sre_constants.error:
+                warnings.warn("invalid pattern (%s) passed to Regex" % pattern,
+                    SyntaxWarning, stacklevel=2)
+                raise
+
+        elif isinstance(pattern, Regex.compiledREtype):
+            self.re = pattern
+            self.pattern = \
+            self.reString = str(pattern)
+            self.flags = flags
+
+        else:
+            raise ValueError("Regex may only be constructed with a string or a compiled RE object")
+
+        self.name = _ustr(self)
+        self.errmsg = "Expected " + self.name
+        self.mayIndexError = False
+        self.mayReturnEmpty = True
+        self.asGroupList = asGroupList
+        self.asMatch = asMatch
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        result = self.re.match(instring,loc)
+        if not result:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        loc = result.end()
+        if self.asMatch:
+            ret = result
+        elif self.asGroupList:
+            ret = result.groups()
+        else:
+            ret = ParseResults(result.group())
+            d = result.groupdict()
+            if d:
+                for k, v in d.items():
+                    ret[k] = v
+        return loc,ret
+
+    def __str__( self ):
+        try:
+            return super(Regex,self).__str__()
+        except Exception:
+            pass
+
+        if self.strRepr is None:
+            self.strRepr = "Re:(%s)" % repr(self.pattern)
+
+        return self.strRepr
+
+    def sub(self, repl):
+        """
+        Return Regex with an attached parse action to transform the parsed
+        result as if called using `re.sub(expr, repl, string) <https://docs.python.org/3/library/re.html#re.sub>`_.
+
+        Example::
+
+            make_html = Regex(r"(\w+):(.*?):").sub(r"<\1>\2</\1>")
+            print(make_html.transformString("h1:main title:"))
+            # prints "<h1>main title</h1>"
+        """
+        if self.asGroupList:
+            warnings.warn("cannot use sub() with Regex(asGroupList=True)",
+                           SyntaxWarning, stacklevel=2)
+            raise SyntaxError()
+
+        if self.asMatch and callable(repl):
+            warnings.warn("cannot use sub() with a callable with Regex(asMatch=True)",
+                           SyntaxWarning, stacklevel=2)
+            raise SyntaxError()
+
+        if self.asMatch:
+            def pa(tokens):
+                return tokens[0].expand(repl)
+        else:
+            def pa(tokens):
+                return self.re.sub(repl, tokens[0])
+        return self.addParseAction(pa)
+
+class QuotedString(Token):
+    r"""
+    Token for matching strings that are delimited by quoting characters.
+
+    Defined with the following parameters:
+
+        - quoteChar - string of one or more characters defining the
+          quote delimiting string
+        - escChar - character to escape quotes, typically backslash
+          (default= ``None`` )
+        - escQuote - special quote sequence to escape an embedded quote
+          string (such as SQL's ``""`` to escape an embedded ``"``)
+          (default= ``None`` )
+        - multiline - boolean indicating whether quotes can span
+          multiple lines (default= ``False`` )
+        - unquoteResults - boolean indicating whether the matched text
+          should be unquoted (default= ``True`` )
+        - endQuoteChar - string of one or more characters defining the
+          end of the quote delimited string (default= ``None``  => same as
+          quoteChar)
+        - convertWhitespaceEscapes - convert escaped whitespace
+          (``'\t'``, ``'\n'``, etc.) to actual whitespace
+          (default= ``True`` )
+
+    Example::
+
+        qs = QuotedString('"')
+        print(qs.searchString('lsjdf "This is the quote" sldjf'))
+        complex_qs = QuotedString('{{', endQuoteChar='}}')
+        print(complex_qs.searchString('lsjdf {{This is the "quote"}} sldjf'))
+        sql_qs = QuotedString('"', escQuote='""')
+        print(sql_qs.searchString('lsjdf "This is the quote with ""embedded"" quotes" sldjf'))
+
+    prints::
+
+        [['This is the quote']]
+        [['This is the "quote"']]
+        [['This is the quote with "embedded" quotes']]
+    """
+    def __init__( self, quoteChar, escChar=None, escQuote=None, multiline=False, unquoteResults=True, endQuoteChar=None, convertWhitespaceEscapes=True):
+        super(QuotedString,self).__init__()
+
+        # remove white space from quote chars - wont work anyway
+        quoteChar = quoteChar.strip()
+        if not quoteChar:
+            warnings.warn("quoteChar cannot be the empty string",SyntaxWarning,stacklevel=2)
+            raise SyntaxError()
+
+        if endQuoteChar is None:
+            endQuoteChar = quoteChar
+        else:
+            endQuoteChar = endQuoteChar.strip()
+            if not endQuoteChar:
+                warnings.warn("endQuoteChar cannot be the empty string",SyntaxWarning,stacklevel=2)
+                raise SyntaxError()
+
+        self.quoteChar = quoteChar
+        self.quoteCharLen = len(quoteChar)
+        self.firstQuoteChar = quoteChar[0]
+        self.endQuoteChar = endQuoteChar
+        self.endQuoteCharLen = len(endQuoteChar)
+        self.escChar = escChar
+        self.escQuote = escQuote
+        self.unquoteResults = unquoteResults
+        self.convertWhitespaceEscapes = convertWhitespaceEscapes
+
+        if multiline:
+            self.flags = re.MULTILINE | re.DOTALL
+            self.pattern = r'%s(?:[^%s%s]' % \
+                ( re.escape(self.quoteChar),
+                  _escapeRegexRangeChars(self.endQuoteChar[0]),
+                  (escChar is not None and _escapeRegexRangeChars(escChar) or '') )
+        else:
+            self.flags = 0
+            self.pattern = r'%s(?:[^%s\n\r%s]' % \
+                ( re.escape(self.quoteChar),
+                  _escapeRegexRangeChars(self.endQuoteChar[0]),
+                  (escChar is not None and _escapeRegexRangeChars(escChar) or '') )
+        if len(self.endQuoteChar) > 1:
+            self.pattern += (
+                '|(?:' + ')|(?:'.join("%s[^%s]" % (re.escape(self.endQuoteChar[:i]),
+                                               _escapeRegexRangeChars(self.endQuoteChar[i]))
+                                    for i in range(len(self.endQuoteChar)-1,0,-1)) + ')'
+                )
+        if escQuote:
+            self.pattern += (r'|(?:%s)' % re.escape(escQuote))
+        if escChar:
+            self.pattern += (r'|(?:%s.)' % re.escape(escChar))
+            self.escCharReplacePattern = re.escape(self.escChar)+"(.)"
+        self.pattern += (r')*%s' % re.escape(self.endQuoteChar))
+
+        try:
+            self.re = re.compile(self.pattern, self.flags)
+            self.reString = self.pattern
+        except sre_constants.error:
+            warnings.warn("invalid pattern (%s) passed to Regex" % self.pattern,
+                SyntaxWarning, stacklevel=2)
+            raise
+
+        self.name = _ustr(self)
+        self.errmsg = "Expected " + self.name
+        self.mayIndexError = False
+        self.mayReturnEmpty = True
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        result = instring[loc] == self.firstQuoteChar and self.re.match(instring,loc) or None
+        if not result:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        loc = result.end()
+        ret = result.group()
+
+        if self.unquoteResults:
+
+            # strip off quotes
+            ret = ret[self.quoteCharLen:-self.endQuoteCharLen]
+
+            if isinstance(ret,basestring):
+                # replace escaped whitespace
+                if '\\' in ret and self.convertWhitespaceEscapes:
+                    ws_map = {
+                        r'\t' : '\t',
+                        r'\n' : '\n',
+                        r'\f' : '\f',
+                        r'\r' : '\r',
+                    }
+                    for wslit,wschar in ws_map.items():
+                        ret = ret.replace(wslit, wschar)
+
+                # replace escaped characters
+                if self.escChar:
+                    ret = re.sub(self.escCharReplacePattern, r"\g<1>", ret)
+
+                # replace escaped quotes
+                if self.escQuote:
+                    ret = ret.replace(self.escQuote, self.endQuoteChar)
+
+        return loc, ret
+
+    def __str__( self ):
+        try:
+            return super(QuotedString,self).__str__()
+        except Exception:
+            pass
+
+        if self.strRepr is None:
+            self.strRepr = "quoted string, starting with %s ending with %s" % (self.quoteChar, self.endQuoteChar)
+
+        return self.strRepr
+
+
+class CharsNotIn(Token):
+    """Token for matching words composed of characters *not* in a given
+    set (will include whitespace in matched characters if not listed in
+    the provided exclusion set - see example). Defined with string
+    containing all disallowed characters, and an optional minimum,
+    maximum, and/or exact length.  The default value for ``min`` is
+    1 (a minimum value < 1 is not valid); the default values for
+    ``max`` and ``exact`` are 0, meaning no maximum or exact
+    length restriction.
+
+    Example::
+
+        # define a comma-separated-value as anything that is not a ','
+        csv_value = CharsNotIn(',')
+        print(delimitedList(csv_value).parseString("dkls,lsdkjf,s12 34,@!#,213"))
+
+    prints::
+
+        ['dkls', 'lsdkjf', 's12 34', '@!#', '213']
+    """
+    def __init__( self, notChars, min=1, max=0, exact=0 ):
+        super(CharsNotIn,self).__init__()
+        self.skipWhitespace = False
+        self.notChars = notChars
+
+        if min < 1:
+            raise ValueError(
+                "cannot specify a minimum length < 1; use " +
+                "Optional(CharsNotIn()) if zero-length char group is permitted")
+
+        self.minLen = min
+
+        if max > 0:
+            self.maxLen = max
+        else:
+            self.maxLen = _MAX_INT
+
+        if exact > 0:
+            self.maxLen = exact
+            self.minLen = exact
+
+        self.name = _ustr(self)
+        self.errmsg = "Expected " + self.name
+        self.mayReturnEmpty = ( self.minLen == 0 )
+        self.mayIndexError = False
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if instring[loc] in self.notChars:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        start = loc
+        loc += 1
+        notchars = self.notChars
+        maxlen = min( start+self.maxLen, len(instring) )
+        while loc < maxlen and \
+              (instring[loc] not in notchars):
+            loc += 1
+
+        if loc - start < self.minLen:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        return loc, instring[start:loc]
+
+    def __str__( self ):
+        try:
+            return super(CharsNotIn, self).__str__()
+        except Exception:
+            pass
+
+        if self.strRepr is None:
+            if len(self.notChars) > 4:
+                self.strRepr = "!W:(%s...)" % self.notChars[:4]
+            else:
+                self.strRepr = "!W:(%s)" % self.notChars
+
+        return self.strRepr
+
+class White(Token):
+    """Special matching class for matching whitespace.  Normally,
+    whitespace is ignored by pyparsing grammars.  This class is included
+    when some whitespace structures are significant.  Define with
+    a string containing the whitespace characters to be matched; default
+    is ``" \\t\\r\\n"``.  Also takes optional ``min``,
+    ``max``, and ``exact`` arguments, as defined for the
+    :class:`Word` class.
+    """
+    whiteStrs = {
+        ' ' : '<SP>',
+        '\t': '<TAB>',
+        '\n': '<LF>',
+        '\r': '<CR>',
+        '\f': '<FF>',
+        'u\00A0': '<NBSP>',
+        'u\1680': '<OGHAM_SPACE_MARK>',
+        'u\180E': '<MONGOLIAN_VOWEL_SEPARATOR>',
+        'u\2000': '<EN_QUAD>',
+        'u\2001': '<EM_QUAD>',
+        'u\2002': '<EN_SPACE>',
+        'u\2003': '<EM_SPACE>',
+        'u\2004': '<THREE-PER-EM_SPACE>',
+        'u\2005': '<FOUR-PER-EM_SPACE>',
+        'u\2006': '<SIX-PER-EM_SPACE>',
+        'u\2007': '<FIGURE_SPACE>',
+        'u\2008': '<PUNCTUATION_SPACE>',
+        'u\2009': '<THIN_SPACE>',
+        'u\200A': '<HAIR_SPACE>',
+        'u\200B': '<ZERO_WIDTH_SPACE>',
+        'u\202F': '<NNBSP>',
+        'u\205F': '<MMSP>',
+        'u\3000': '<IDEOGRAPHIC_SPACE>',
+        }
+    def __init__(self, ws=" \t\r\n", min=1, max=0, exact=0):
+        super(White,self).__init__()
+        self.matchWhite = ws
+        self.setWhitespaceChars( "".join(c for c in self.whiteChars if c not in self.matchWhite) )
+        #~ self.leaveWhitespace()
+        self.name = ("".join(White.whiteStrs[c] for c in self.matchWhite))
+        self.mayReturnEmpty = True
+        self.errmsg = "Expected " + self.name
+
+        self.minLen = min
+
+        if max > 0:
+            self.maxLen = max
+        else:
+            self.maxLen = _MAX_INT
+
+        if exact > 0:
+            self.maxLen = exact
+            self.minLen = exact
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if not(instring[ loc ] in self.matchWhite):
+            raise ParseException(instring, loc, self.errmsg, self)
+        start = loc
+        loc += 1
+        maxloc = start + self.maxLen
+        maxloc = min( maxloc, len(instring) )
+        while loc < maxloc and instring[loc] in self.matchWhite:
+            loc += 1
+
+        if loc - start < self.minLen:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        return loc, instring[start:loc]
+
+
+class _PositionToken(Token):
+    def __init__( self ):
+        super(_PositionToken,self).__init__()
+        self.name=self.__class__.__name__
+        self.mayReturnEmpty = True
+        self.mayIndexError = False
+
+class GoToColumn(_PositionToken):
+    """Token to advance to a specific column of input text; useful for
+    tabular report scraping.
+    """
+    def __init__( self, colno ):
+        super(GoToColumn,self).__init__()
+        self.col = colno
+
+    def preParse( self, instring, loc ):
+        if col(loc,instring) != self.col:
+            instrlen = len(instring)
+            if self.ignoreExprs:
+                loc = self._skipIgnorables( instring, loc )
+            while loc < instrlen and instring[loc].isspace() and col( loc, instring ) != self.col :
+                loc += 1
+        return loc
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        thiscol = col( loc, instring )
+        if thiscol > self.col:
+            raise ParseException( instring, loc, "Text not in expected column", self )
+        newloc = loc + self.col - thiscol
+        ret = instring[ loc: newloc ]
+        return newloc, ret
+
+
+class LineStart(_PositionToken):
+    """Matches if current position is at the beginning of a line within
+    the parse string
+
+    Example::
+
+        test = '''\
+        AAA this line
+        AAA and this line
+          AAA but not this one
+        B AAA and definitely not this one
+        '''
+
+        for t in (LineStart() + 'AAA' + restOfLine).searchString(test):
+            print(t)
+
+    prints::
+
+        ['AAA', ' this line']
+        ['AAA', ' and this line']
+
+    """
+    def __init__( self ):
+        super(LineStart,self).__init__()
+        self.errmsg = "Expected start of line"
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if col(loc, instring) == 1:
+            return loc, []
+        raise ParseException(instring, loc, self.errmsg, self)
+
+class LineEnd(_PositionToken):
+    """Matches if current position is at the end of a line within the
+    parse string
+    """
+    def __init__( self ):
+        super(LineEnd,self).__init__()
+        self.setWhitespaceChars( ParserElement.DEFAULT_WHITE_CHARS.replace("\n","") )
+        self.errmsg = "Expected end of line"
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if loc<len(instring):
+            if instring[loc] == "\n":
+                return loc+1, "\n"
+            else:
+                raise ParseException(instring, loc, self.errmsg, self)
+        elif loc == len(instring):
+            return loc+1, []
+        else:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+class StringStart(_PositionToken):
+    """Matches if current position is at the beginning of the parse
+    string
+    """
+    def __init__( self ):
+        super(StringStart,self).__init__()
+        self.errmsg = "Expected start of text"
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if loc != 0:
+            # see if entire string up to here is just whitespace and ignoreables
+            if loc != self.preParse( instring, 0 ):
+                raise ParseException(instring, loc, self.errmsg, self)
+        return loc, []
+
+class StringEnd(_PositionToken):
+    """Matches if current position is at the end of the parse string
+    """
+    def __init__( self ):
+        super(StringEnd,self).__init__()
+        self.errmsg = "Expected end of text"
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if loc < len(instring):
+            raise ParseException(instring, loc, self.errmsg, self)
+        elif loc == len(instring):
+            return loc+1, []
+        elif loc > len(instring):
+            return loc, []
+        else:
+            raise ParseException(instring, loc, self.errmsg, self)
+
+class WordStart(_PositionToken):
+    """Matches if the current position is at the beginning of a Word,
+    and is not preceded by any character in a given set of
+    ``wordChars`` (default= ``printables``). To emulate the
+    ``\b`` behavior of regular expressions, use
+    ``WordStart(alphanums)``. ``WordStart`` will also match at
+    the beginning of the string being parsed, or at the beginning of
+    a line.
+    """
+    def __init__(self, wordChars = printables):
+        super(WordStart,self).__init__()
+        self.wordChars = set(wordChars)
+        self.errmsg = "Not at the start of a word"
+
+    def parseImpl(self, instring, loc, doActions=True ):
+        if loc != 0:
+            if (instring[loc-1] in self.wordChars or
+                instring[loc] not in self.wordChars):
+                raise ParseException(instring, loc, self.errmsg, self)
+        return loc, []
+
+class WordEnd(_PositionToken):
+    """Matches if the current position is at the end of a Word, and is
+    not followed by any character in a given set of ``wordChars``
+    (default= ``printables``). To emulate the ``\b`` behavior of
+    regular expressions, use ``WordEnd(alphanums)``. ``WordEnd``
+    will also match at the end of the string being parsed, or at the end
+    of a line.
+    """
+    def __init__(self, wordChars = printables):
+        super(WordEnd,self).__init__()
+        self.wordChars = set(wordChars)
+        self.skipWhitespace = False
+        self.errmsg = "Not at the end of a word"
+
+    def parseImpl(self, instring, loc, doActions=True ):
+        instrlen = len(instring)
+        if instrlen>0 and loc<instrlen:
+            if (instring[loc] in self.wordChars or
+                instring[loc-1] not in self.wordChars):
+                raise ParseException(instring, loc, self.errmsg, self)
+        return loc, []
+
+
+class ParseExpression(ParserElement):
+    """Abstract subclass of ParserElement, for combining and
+    post-processing parsed tokens.
+    """
+    def __init__( self, exprs, savelist = False ):
+        super(ParseExpression,self).__init__(savelist)
+        if isinstance( exprs, _generatorType ):
+            exprs = list(exprs)
+
+        if isinstance( exprs, basestring ):
+            self.exprs = [ ParserElement._literalStringClass( exprs ) ]
+        elif isinstance( exprs, Iterable ):
+            exprs = list(exprs)
+            # if sequence of strings provided, wrap with Literal
+            if all(isinstance(expr, basestring) for expr in exprs):
+                exprs = map(ParserElement._literalStringClass, exprs)
+            self.exprs = list(exprs)
+        else:
+            try:
+                self.exprs = list( exprs )
+            except TypeError:
+                self.exprs = [ exprs ]
+        self.callPreparse = False
+
+    def __getitem__( self, i ):
+        return self.exprs[i]
+
+    def append( self, other ):
+        self.exprs.append( other )
+        self.strRepr = None
+        return self
+
+    def leaveWhitespace( self ):
+        """Extends ``leaveWhitespace`` defined in base class, and also invokes ``leaveWhitespace`` on
+           all contained expressions."""
+        self.skipWhitespace = False
+        self.exprs = [ e.copy() for e in self.exprs ]
+        for e in self.exprs:
+            e.leaveWhitespace()
+        return self
+
+    def ignore( self, other ):
+        if isinstance( other, Suppress ):
+            if other not in self.ignoreExprs:
+                super( ParseExpression, self).ignore( other )
+                for e in self.exprs:
+                    e.ignore( self.ignoreExprs[-1] )
+        else:
+            super( ParseExpression, self).ignore( other )
+            for e in self.exprs:
+                e.ignore( self.ignoreExprs[-1] )
+        return self
+
+    def __str__( self ):
+        try:
+            return super(ParseExpression,self).__str__()
+        except Exception:
+            pass
+
+        if self.strRepr is None:
+            self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.exprs) )
+        return self.strRepr
+
+    def streamline( self ):
+        super(ParseExpression,self).streamline()
+
+        for e in self.exprs:
+            e.streamline()
+
+        # collapse nested And's of the form And( And( And( a,b), c), d) to And( a,b,c,d )
+        # but only if there are no parse actions or resultsNames on the nested And's
+        # (likewise for Or's and MatchFirst's)
+        if ( len(self.exprs) == 2 ):
+            other = self.exprs[0]
+            if ( isinstance( other, self.__class__ ) and
+                  not(other.parseAction) and
+                  other.resultsName is None and
+                  not other.debug ):
+                self.exprs = other.exprs[:] + [ self.exprs[1] ]
+                self.strRepr = None
+                self.mayReturnEmpty |= other.mayReturnEmpty
+                self.mayIndexError  |= other.mayIndexError
+
+            other = self.exprs[-1]
+            if ( isinstance( other, self.__class__ ) and
+                  not(other.parseAction) and
+                  other.resultsName is None and
+                  not other.debug ):
+                self.exprs = self.exprs[:-1] + other.exprs[:]
+                self.strRepr = None
+                self.mayReturnEmpty |= other.mayReturnEmpty
+                self.mayIndexError  |= other.mayIndexError
+
+        self.errmsg = "Expected " + _ustr(self)
+
+        return self
+
+    def setResultsName( self, name, listAllMatches=False ):
+        ret = super(ParseExpression,self).setResultsName(name,listAllMatches)
+        return ret
+
+    def validate( self, validateTrace=[] ):
+        tmp = validateTrace[:]+[self]
+        for e in self.exprs:
+            e.validate(tmp)
+        self.checkRecursion( [] )
+
+    def copy(self):
+        ret = super(ParseExpression,self).copy()
+        ret.exprs = [e.copy() for e in self.exprs]
+        return ret
+
+class And(ParseExpression):
+    """
+    Requires all given :class:`ParseExpression` s to be found in the given order.
+    Expressions may be separated by whitespace.
+    May be constructed using the ``'+'`` operator.
+    May also be constructed using the ``'-'`` operator, which will
+    suppress backtracking.
+
+    Example::
+
+        integer = Word(nums)
+        name_expr = OneOrMore(Word(alphas))
+
+        expr = And([integer("id"),name_expr("name"),integer("age")])
+        # more easily written as:
+        expr = integer("id") + name_expr("name") + integer("age")
+    """
+
+    class _ErrorStop(Empty):
+        def __init__(self, *args, **kwargs):
+            super(And._ErrorStop,self).__init__(*args, **kwargs)
+            self.name = '-'
+            self.leaveWhitespace()
+
+    def __init__( self, exprs, savelist = True ):
+        super(And,self).__init__(exprs, savelist)
+        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)
+        self.setWhitespaceChars( self.exprs[0].whiteChars )
+        self.skipWhitespace = self.exprs[0].skipWhitespace
+        self.callPreparse = True
+
+    def streamline(self):
+        super(And, self).streamline()
+        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)
+        return self
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        # pass False as last arg to _parse for first element, since we already
+        # pre-parsed the string as part of our And pre-parsing
+        loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
+        errorStop = False
+        for e in self.exprs[1:]:
+            if isinstance(e, And._ErrorStop):
+                errorStop = True
+                continue
+            if errorStop:
+                try:
+                    loc, exprtokens = e._parse( instring, loc, doActions )
+                except ParseSyntaxException:
+                    raise
+                except ParseBaseException as pe:
+                    pe.__traceback__ = None
+                    raise ParseSyntaxException._from_exception(pe)
+                except IndexError:
+                    raise ParseSyntaxException(instring, len(instring), self.errmsg, self)
+            else:
+                loc, exprtokens = e._parse( instring, loc, doActions )
+            if exprtokens or exprtokens.haskeys():
+                resultlist += exprtokens
+        return loc, resultlist
+
+    def __iadd__(self, other ):
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        return self.append( other ) #And( [ self, other ] )
+
+    def checkRecursion( self, parseElementList ):
+        subRecCheckList = parseElementList[:] + [ self ]
+        for e in self.exprs:
+            e.checkRecursion( subRecCheckList )
+            if not e.mayReturnEmpty:
+                break
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "{" + " ".join(_ustr(e) for e in self.exprs) + "}"
+
+        return self.strRepr
+
+
+class Or(ParseExpression):
+    """Requires that at least one :class:`ParseExpression` is found. If
+    two expressions match, the expression that matches the longest
+    string will be used. May be constructed using the ``'^'``
+    operator.
+
+    Example::
+
+        # construct Or using '^' operator
+
+        number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums))
+        print(number.searchString("123 3.1416 789"))
+
+    prints::
+
+        [['123'], ['3.1416'], ['789']]
+    """
+    def __init__( self, exprs, savelist = False ):
+        super(Or,self).__init__(exprs, savelist)
+        if self.exprs:
+            self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs)
+        else:
+            self.mayReturnEmpty = True
+
+    def streamline(self):
+        super(Or, self).streamline()
+        self.saveAsList = any(e.saveAsList for e in self.exprs)
+        return self
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        maxExcLoc = -1
+        maxException = None
+        matches = []
+        for e in self.exprs:
+            try:
+                loc2 = e.tryParse( instring, loc )
+            except ParseException as err:
+                err.__traceback__ = None
+                if err.loc > maxExcLoc:
+                    maxException = err
+                    maxExcLoc = err.loc
+            except IndexError:
+                if len(instring) > maxExcLoc:
+                    maxException = ParseException(instring,len(instring),e.errmsg,self)
+                    maxExcLoc = len(instring)
+            else:
+                # save match among all matches, to retry longest to shortest
+                matches.append((loc2, e))
+
+        if matches:
+            matches.sort(key=lambda x: -x[0])
+            for _,e in matches:
+                try:
+                    return e._parse( instring, loc, doActions )
+                except ParseException as err:
+                    err.__traceback__ = None
+                    if err.loc > maxExcLoc:
+                        maxException = err
+                        maxExcLoc = err.loc
+
+        if maxException is not None:
+            maxException.msg = self.errmsg
+            raise maxException
+        else:
+            raise ParseException(instring, loc, "no defined alternatives to match", self)
+
+
+    def __ixor__(self, other ):
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        return self.append( other ) #Or( [ self, other ] )
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "{" + " ^ ".join(_ustr(e) for e in self.exprs) + "}"
+
+        return self.strRepr
+
+    def checkRecursion( self, parseElementList ):
+        subRecCheckList = parseElementList[:] + [ self ]
+        for e in self.exprs:
+            e.checkRecursion( subRecCheckList )
+
+
+class MatchFirst(ParseExpression):
+    """Requires that at least one :class:`ParseExpression` is found. If
+    two expressions match, the first one listed is the one that will
+    match. May be constructed using the ``'|'`` operator.
+
+    Example::
+
+        # construct MatchFirst using '|' operator
+
+        # watch the order of expressions to match
+        number = Word(nums) | Combine(Word(nums) + '.' + Word(nums))
+        print(number.searchString("123 3.1416 789")) #  Fail! -> [['123'], ['3'], ['1416'], ['789']]
+
+        # put more selective expression first
+        number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums)
+        print(number.searchString("123 3.1416 789")) #  Better -> [['123'], ['3.1416'], ['789']]
+    """
+    def __init__( self, exprs, savelist = False ):
+        super(MatchFirst,self).__init__(exprs, savelist)
+        if self.exprs:
+            self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs)
+            # self.saveAsList = any(e.saveAsList for e in self.exprs)
+        else:
+            self.mayReturnEmpty = True
+
+    def streamline(self):
+        super(MatchFirst, self).streamline()
+        self.saveAsList = any(e.saveAsList for e in self.exprs)
+        return self
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        maxExcLoc = -1
+        maxException = None
+        for e in self.exprs:
+            try:
+                ret = e._parse( instring, loc, doActions )
+                return ret
+            except ParseException as err:
+                if err.loc > maxExcLoc:
+                    maxException = err
+                    maxExcLoc = err.loc
+            except IndexError:
+                if len(instring) > maxExcLoc:
+                    maxException = ParseException(instring,len(instring),e.errmsg,self)
+                    maxExcLoc = len(instring)
+
+        # only got here if no expression matched, raise exception for match that made it the furthest
+        else:
+            if maxException is not None:
+                maxException.msg = self.errmsg
+                raise maxException
+            else:
+                raise ParseException(instring, loc, "no defined alternatives to match", self)
+
+    def __ior__(self, other ):
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass( other )
+        return self.append( other ) #MatchFirst( [ self, other ] )
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "{" + " | ".join(_ustr(e) for e in self.exprs) + "}"
+
+        return self.strRepr
+
+    def checkRecursion( self, parseElementList ):
+        subRecCheckList = parseElementList[:] + [ self ]
+        for e in self.exprs:
+            e.checkRecursion( subRecCheckList )
+
+
+class Each(ParseExpression):
+    """Requires all given :class:`ParseExpression` s to be found, but in
+    any order. Expressions may be separated by whitespace.
+
+    May be constructed using the ``'&'`` operator.
+
+    Example::
+
+        color = oneOf("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN")
+        shape_type = oneOf("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON")
+        integer = Word(nums)
+        shape_attr = "shape:" + shape_type("shape")
+        posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn")
+        color_attr = "color:" + color("color")
+        size_attr = "size:" + integer("size")
+
+        # use Each (using operator '&') to accept attributes in any order
+        # (shape and posn are required, color and size are optional)
+        shape_spec = shape_attr & posn_attr & Optional(color_attr) & Optional(size_attr)
+
+        shape_spec.runTests('''
+            shape: SQUARE color: BLACK posn: 100, 120
+            shape: CIRCLE size: 50 color: BLUE posn: 50,80
+            color:GREEN size:20 shape:TRIANGLE posn:20,40
+            '''
+            )
+
+    prints::
+
+        shape: SQUARE color: BLACK posn: 100, 120
+        ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']]
+        - color: BLACK
+        - posn: ['100', ',', '120']
+          - x: 100
+          - y: 120
+        - shape: SQUARE
+
+
+        shape: CIRCLE size: 50 color: BLUE posn: 50,80
+        ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']]
+        - color: BLUE
+        - posn: ['50', ',', '80']
+          - x: 50
+          - y: 80
+        - shape: CIRCLE
+        - size: 50
+
+
+        color: GREEN size: 20 shape: TRIANGLE posn: 20,40
+        ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']]
+        - color: GREEN
+        - posn: ['20', ',', '40']
+          - x: 20
+          - y: 40
+        - shape: TRIANGLE
+        - size: 20
+    """
+    def __init__( self, exprs, savelist = True ):
+        super(Each,self).__init__(exprs, savelist)
+        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)
+        self.skipWhitespace = True
+        self.initExprGroups = True
+        self.saveAsList = True
+
+    def streamline(self):
+        super(Each, self).streamline()
+        self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)
+        return self
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if self.initExprGroups:
+            self.opt1map = dict((id(e.expr),e) for e in self.exprs if isinstance(e,Optional))
+            opt1 = [ e.expr for e in self.exprs if isinstance(e,Optional) ]
+            opt2 = [ e for e in self.exprs if e.mayReturnEmpty and not isinstance(e,Optional)]
+            self.optionals = opt1 + opt2
+            self.multioptionals = [ e.expr for e in self.exprs if isinstance(e,ZeroOrMore) ]
+            self.multirequired = [ e.expr for e in self.exprs if isinstance(e,OneOrMore) ]
+            self.required = [ e for e in self.exprs if not isinstance(e,(Optional,ZeroOrMore,OneOrMore)) ]
+            self.required += self.multirequired
+            self.initExprGroups = False
+        tmpLoc = loc
+        tmpReqd = self.required[:]
+        tmpOpt  = self.optionals[:]
+        matchOrder = []
+
+        keepMatching = True
+        while keepMatching:
+            tmpExprs = tmpReqd + tmpOpt + self.multioptionals + self.multirequired
+            failed = []
+            for e in tmpExprs:
+                try:
+                    tmpLoc = e.tryParse( instring, tmpLoc )
+                except ParseException:
+                    failed.append(e)
+                else:
+                    matchOrder.append(self.opt1map.get(id(e),e))
+                    if e in tmpReqd:
+                        tmpReqd.remove(e)
+                    elif e in tmpOpt:
+                        tmpOpt.remove(e)
+            if len(failed) == len(tmpExprs):
+                keepMatching = False
+
+        if tmpReqd:
+            missing = ", ".join(_ustr(e) for e in tmpReqd)
+            raise ParseException(instring,loc,"Missing one or more required elements (%s)" % missing )
+
+        # add any unmatched Optionals, in case they have default values defined
+        matchOrder += [e for e in self.exprs if isinstance(e,Optional) and e.expr in tmpOpt]
+
+        resultlist = []
+        for e in matchOrder:
+            loc,results = e._parse(instring,loc,doActions)
+            resultlist.append(results)
+
+        finalResults = sum(resultlist, ParseResults([]))
+        return loc, finalResults
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "{" + " & ".join(_ustr(e) for e in self.exprs) + "}"
+
+        return self.strRepr
+
+    def checkRecursion( self, parseElementList ):
+        subRecCheckList = parseElementList[:] + [ self ]
+        for e in self.exprs:
+            e.checkRecursion( subRecCheckList )
+
+
+class ParseElementEnhance(ParserElement):
+    """Abstract subclass of :class:`ParserElement`, for combining and
+    post-processing parsed tokens.
+    """
+    def __init__( self, expr, savelist=False ):
+        super(ParseElementEnhance,self).__init__(savelist)
+        if isinstance( expr, basestring ):
+            if issubclass(ParserElement._literalStringClass, Token):
+                expr = ParserElement._literalStringClass(expr)
+            else:
+                expr = ParserElement._literalStringClass(Literal(expr))
+        self.expr = expr
+        self.strRepr = None
+        if expr is not None:
+            self.mayIndexError = expr.mayIndexError
+            self.mayReturnEmpty = expr.mayReturnEmpty
+            self.setWhitespaceChars( expr.whiteChars )
+            self.skipWhitespace = expr.skipWhitespace
+            self.saveAsList = expr.saveAsList
+            self.callPreparse = expr.callPreparse
+            self.ignoreExprs.extend(expr.ignoreExprs)
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if self.expr is not None:
+            return self.expr._parse( instring, loc, doActions, callPreParse=False )
+        else:
+            raise ParseException("",loc,self.errmsg,self)
+
+    def leaveWhitespace( self ):
+        self.skipWhitespace = False
+        self.expr = self.expr.copy()
+        if self.expr is not None:
+            self.expr.leaveWhitespace()
+        return self
+
+    def ignore( self, other ):
+        if isinstance( other, Suppress ):
+            if other not in self.ignoreExprs:
+                super( ParseElementEnhance, self).ignore( other )
+                if self.expr is not None:
+                    self.expr.ignore( self.ignoreExprs[-1] )
+        else:
+            super( ParseElementEnhance, self).ignore( other )
+            if self.expr is not None:
+                self.expr.ignore( self.ignoreExprs[-1] )
+        return self
+
+    def streamline( self ):
+        super(ParseElementEnhance,self).streamline()
+        if self.expr is not None:
+            self.expr.streamline()
+        return self
+
+    def checkRecursion( self, parseElementList ):
+        if self in parseElementList:
+            raise RecursiveGrammarException( parseElementList+[self] )
+        subRecCheckList = parseElementList[:] + [ self ]
+        if self.expr is not None:
+            self.expr.checkRecursion( subRecCheckList )
+
+    def validate( self, validateTrace=[] ):
+        tmp = validateTrace[:]+[self]
+        if self.expr is not None:
+            self.expr.validate(tmp)
+        self.checkRecursion( [] )
+
+    def __str__( self ):
+        try:
+            return super(ParseElementEnhance,self).__str__()
+        except Exception:
+            pass
+
+        if self.strRepr is None and self.expr is not None:
+            self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.expr) )
+        return self.strRepr
+
+
+class FollowedBy(ParseElementEnhance):
+    """Lookahead matching of the given parse expression.
+    ``FollowedBy`` does *not* advance the parsing position within
+    the input string, it only verifies that the specified parse
+    expression matches at the current position.  ``FollowedBy``
+    always returns a null token list. If any results names are defined
+    in the lookahead expression, those *will* be returned for access by
+    name.
+
+    Example::
+
+        # use FollowedBy to match a label only if it is followed by a ':'
+        data_word = Word(alphas)
+        label = data_word + FollowedBy(':')
+        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
+
+        OneOrMore(attr_expr).parseString("shape: SQUARE color: BLACK posn: upper left").pprint()
+
+    prints::
+
+        [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']]
+    """
+    def __init__( self, expr ):
+        super(FollowedBy,self).__init__(expr)
+        self.mayReturnEmpty = True
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        _, ret = self.expr._parse(instring, loc, doActions=doActions)
+        del ret[:]
+        return loc, ret
+
+
+class PrecededBy(ParseElementEnhance):
+    """Lookbehind matching of the given parse expression.
+    ``PrecededBy`` does not advance the parsing position within the
+    input string, it only verifies that the specified parse expression
+    matches prior to the current position.  ``PrecededBy`` always
+    returns a null token list, but if a results name is defined on the
+    given expression, it is returned.
+
+    Parameters:
+
+     - expr - expression that must match prior to the current parse
+       location
+     - retreat - (default= ``None``) - (int) maximum number of characters
+       to lookbehind prior to the current parse location
+
+    If the lookbehind expression is a string, Literal, Keyword, or
+    a Word or CharsNotIn with a specified exact or maximum length, then
+    the retreat parameter is not required. Otherwise, retreat must be
+    specified to give a maximum number of characters to look back from
+    the current parse position for a lookbehind match.
+
+    Example::
+
+        # VB-style variable names with type prefixes
+        int_var = PrecededBy("#") + pyparsing_common.identifier
+        str_var = PrecededBy("$") + pyparsing_common.identifier
+
+    """
+    def __init__(self, expr, retreat=None):
+        super(PrecededBy, self).__init__(expr)
+        self.expr = self.expr().leaveWhitespace()
+        self.mayReturnEmpty = True
+        self.mayIndexError = False
+        self.exact = False
+        if isinstance(expr, str):
+            retreat = len(expr)
+            self.exact = True
+        elif isinstance(expr, (Literal, Keyword)):
+            retreat = expr.matchLen
+            self.exact = True
+        elif isinstance(expr, (Word, CharsNotIn)) and expr.maxLen != _MAX_INT:
+            retreat = expr.maxLen
+            self.exact = True
+        elif isinstance(expr, _PositionToken):
+            retreat = 0
+            self.exact = True
+        self.retreat = retreat
+        self.errmsg = "not preceded by " + str(expr)
+        self.skipWhitespace = False
+
+    def parseImpl(self, instring, loc=0, doActions=True):
+        if self.exact:
+            if loc < self.retreat:
+                raise ParseException(instring, loc, self.errmsg)
+            start = loc - self.retreat
+            _, ret = self.expr._parse(instring, start)
+        else:
+            # retreat specified a maximum lookbehind window, iterate
+            test_expr = self.expr + StringEnd()
+            instring_slice = instring[:loc]
+            last_expr = ParseException(instring, loc, self.errmsg)
+            for offset in range(1, min(loc, self.retreat+1)):
+                try:
+                    _, ret = test_expr._parse(instring_slice, loc-offset)
+                except ParseBaseException as pbe:
+                    last_expr = pbe
+                else:
+                    break
+            else:
+                raise last_expr
+        # return empty list of tokens, but preserve any defined results names
+        del ret[:]
+        return loc, ret
+
+
+class NotAny(ParseElementEnhance):
+    """Lookahead to disallow matching with the given parse expression.
+    ``NotAny`` does *not* advance the parsing position within the
+    input string, it only verifies that the specified parse expression
+    does *not* match at the current position.  Also, ``NotAny`` does
+    *not* skip over leading whitespace. ``NotAny`` always returns
+    a null token list.  May be constructed using the '~' operator.
+
+    Example::
+
+        AND, OR, NOT = map(CaselessKeyword, "AND OR NOT".split())
+
+        # take care not to mistake keywords for identifiers
+        ident = ~(AND | OR | NOT) + Word(alphas)
+        boolean_term = Optional(NOT) + ident
+
+        # very crude boolean expression - to support parenthesis groups and
+        # operation hierarchy, use infixNotation
+        boolean_expr = boolean_term + ZeroOrMore((AND | OR) + boolean_term)
+
+        # integers that are followed by "." are actually floats
+        integer = Word(nums) + ~Char(".")
+    """
+    def __init__( self, expr ):
+        super(NotAny,self).__init__(expr)
+        #~ self.leaveWhitespace()
+        self.skipWhitespace = False  # do NOT use self.leaveWhitespace(), don't want to propagate to exprs
+        self.mayReturnEmpty = True
+        self.errmsg = "Found unwanted token, "+_ustr(self.expr)
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        if self.expr.canParseNext(instring, loc):
+            raise ParseException(instring, loc, self.errmsg, self)
+        return loc, []
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "~{" + _ustr(self.expr) + "}"
+
+        return self.strRepr
+
+class _MultipleMatch(ParseElementEnhance):
+    def __init__( self, expr, stopOn=None):
+        super(_MultipleMatch, self).__init__(expr)
+        self.saveAsList = True
+        ender = stopOn
+        if isinstance(ender, basestring):
+            ender = ParserElement._literalStringClass(ender)
+        self.not_ender = ~ender if ender is not None else None
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        self_expr_parse = self.expr._parse
+        self_skip_ignorables = self._skipIgnorables
+        check_ender = self.not_ender is not None
+        if check_ender:
+            try_not_ender = self.not_ender.tryParse
+
+        # must be at least one (but first see if we are the stopOn sentinel;
+        # if so, fail)
+        if check_ender:
+            try_not_ender(instring, loc)
+        loc, tokens = self_expr_parse( instring, loc, doActions, callPreParse=False )
+        try:
+            hasIgnoreExprs = (not not self.ignoreExprs)
+            while 1:
+                if check_ender:
+                    try_not_ender(instring, loc)
+                if hasIgnoreExprs:
+                    preloc = self_skip_ignorables( instring, loc )
+                else:
+                    preloc = loc
+                loc, tmptokens = self_expr_parse( instring, preloc, doActions )
+                if tmptokens or tmptokens.haskeys():
+                    tokens += tmptokens
+        except (ParseException,IndexError):
+            pass
+
+        return loc, tokens
+
+class OneOrMore(_MultipleMatch):
+    """Repetition of one or more of the given expression.
+
+    Parameters:
+     - expr - expression that must match one or more times
+     - stopOn - (default= ``None``) - expression for a terminating sentinel
+          (only required if the sentinel would ordinarily match the repetition
+          expression)
+
+    Example::
+
+        data_word = Word(alphas)
+        label = data_word + FollowedBy(':')
+        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))
+
+        text = "shape: SQUARE posn: upper left color: BLACK"
+        OneOrMore(attr_expr).parseString(text).pprint()  # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']]
+
+        # use stopOn attribute for OneOrMore to avoid reading label string as part of the data
+        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
+        OneOrMore(attr_expr).parseString(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']]
+
+        # could also be written as
+        (attr_expr * (1,)).parseString(text).pprint()
+    """
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "{" + _ustr(self.expr) + "}..."
+
+        return self.strRepr
+
+class ZeroOrMore(_MultipleMatch):
+    """Optional repetition of zero or more of the given expression.
+
+    Parameters:
+     - expr - expression that must match zero or more times
+     - stopOn - (default= ``None``) - expression for a terminating sentinel
+          (only required if the sentinel would ordinarily match the repetition
+          expression)
+
+    Example: similar to :class:`OneOrMore`
+    """
+    def __init__( self, expr, stopOn=None):
+        super(ZeroOrMore,self).__init__(expr, stopOn=stopOn)
+        self.mayReturnEmpty = True
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        try:
+            return super(ZeroOrMore, self).parseImpl(instring, loc, doActions)
+        except (ParseException,IndexError):
+            return loc, []
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "[" + _ustr(self.expr) + "]..."
+
+        return self.strRepr
+
+class _NullToken(object):
+    def __bool__(self):
+        return False
+    __nonzero__ = __bool__
+    def __str__(self):
+        return ""
+
+_optionalNotMatched = _NullToken()
+class Optional(ParseElementEnhance):
+    """Optional matching of the given expression.
+
+    Parameters:
+     - expr - expression that must match zero or more times
+     - default (optional) - value to be returned if the optional expression is not found.
+
+    Example::
+
+        # US postal code can be a 5-digit zip, plus optional 4-digit qualifier
+        zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4)))
+        zip.runTests('''
+            # traditional ZIP code
+            12345
+
+            # ZIP+4 form
+            12101-0001
+
+            # invalid ZIP
+            98765-
+            ''')
+
+    prints::
+
+        # traditional ZIP code
+        12345
+        ['12345']
+
+        # ZIP+4 form
+        12101-0001
+        ['12101-0001']
+
+        # invalid ZIP
+        98765-
+             ^
+        FAIL: Expected end of text (at char 5), (line:1, col:6)
+    """
+    def __init__( self, expr, default=_optionalNotMatched ):
+        super(Optional,self).__init__( expr, savelist=False )
+        self.saveAsList = self.expr.saveAsList
+        self.defaultValue = default
+        self.mayReturnEmpty = True
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        try:
+            loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )
+        except (ParseException,IndexError):
+            if self.defaultValue is not _optionalNotMatched:
+                if self.expr.resultsName:
+                    tokens = ParseResults([ self.defaultValue ])
+                    tokens[self.expr.resultsName] = self.defaultValue
+                else:
+                    tokens = [ self.defaultValue ]
+            else:
+                tokens = []
+        return loc, tokens
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+
+        if self.strRepr is None:
+            self.strRepr = "[" + _ustr(self.expr) + "]"
+
+        return self.strRepr
+
+class SkipTo(ParseElementEnhance):
+    """Token for skipping over all undefined text until the matched
+    expression is found.
+
+    Parameters:
+     - expr - target expression marking the end of the data to be skipped
+     - include - (default= ``False``) if True, the target expression is also parsed
+          (the skipped text and target expression are returned as a 2-element list).
+     - ignore - (default= ``None``) used to define grammars (typically quoted strings and
+          comments) that might contain false matches to the target expression
+     - failOn - (default= ``None``) define expressions that are not allowed to be
+          included in the skipped test; if found before the target expression is found,
+          the SkipTo is not a match
+
+    Example::
+
+        report = '''
+            Outstanding Issues Report - 1 Jan 2000
+
+               # | Severity | Description                               |  Days Open
+            -----+----------+-------------------------------------------+-----------
+             101 | Critical | Intermittent system crash                 |          6
+              94 | Cosmetic | Spelling error on Login ('log|n')         |         14
+              79 | Minor    | System slow when running too many reports |         47
+            '''
+        integer = Word(nums)
+        SEP = Suppress('|')
+        # use SkipTo to simply match everything up until the next SEP
+        # - ignore quoted strings, so that a '|' character inside a quoted string does not match
+        # - parse action will call token.strip() for each matched token, i.e., the description body
+        string_data = SkipTo(SEP, ignore=quotedString)
+        string_data.setParseAction(tokenMap(str.strip))
+        ticket_expr = (integer("issue_num") + SEP
+                      + string_data("sev") + SEP
+                      + string_data("desc") + SEP
+                      + integer("days_open"))
+
+        for tkt in ticket_expr.searchString(report):
+            print tkt.dump()
+
+    prints::
+
+        ['101', 'Critical', 'Intermittent system crash', '6']
+        - days_open: 6
+        - desc: Intermittent system crash
+        - issue_num: 101
+        - sev: Critical
+        ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14']
+        - days_open: 14
+        - desc: Spelling error on Login ('log|n')
+        - issue_num: 94
+        - sev: Cosmetic
+        ['79', 'Minor', 'System slow when running too many reports', '47']
+        - days_open: 47
+        - desc: System slow when running too many reports
+        - issue_num: 79
+        - sev: Minor
+    """
+    def __init__( self, other, include=False, ignore=None, failOn=None ):
+        super( SkipTo, self ).__init__( other )
+        self.ignoreExpr = ignore
+        self.mayReturnEmpty = True
+        self.mayIndexError = False
+        self.includeMatch = include
+        self.saveAsList = False
+        if isinstance(failOn, basestring):
+            self.failOn = ParserElement._literalStringClass(failOn)
+        else:
+            self.failOn = failOn
+        self.errmsg = "No match found for "+_ustr(self.expr)
+
+    def parseImpl( self, instring, loc, doActions=True ):
+        startloc = loc
+        instrlen = len(instring)
+        expr = self.expr
+        expr_parse = self.expr._parse
+        self_failOn_canParseNext = self.failOn.canParseNext if self.failOn is not None else None
+        self_ignoreExpr_tryParse = self.ignoreExpr.tryParse if self.ignoreExpr is not None else None
+
+        tmploc = loc
+        while tmploc <= instrlen:
+            if self_failOn_canParseNext is not None:
+                # break if failOn expression matches
+                if self_failOn_canParseNext(instring, tmploc):
+                    break
+
+            if self_ignoreExpr_tryParse is not None:
+                # advance past ignore expressions
+                while 1:
+                    try:
+                        tmploc = self_ignoreExpr_tryParse(instring, tmploc)
+                    except ParseBaseException:
+                        break
+
+            try:
+                expr_parse(instring, tmploc, doActions=False, callPreParse=False)
+            except (ParseException, IndexError):
+                # no match, advance loc in string
+                tmploc += 1
+            else:
+                # matched skipto expr, done
+                break
+
+        else:
+            # ran off the end of the input string without matching skipto expr, fail
+            raise ParseException(instring, loc, self.errmsg, self)
+
+        # build up return values
+        loc = tmploc
+        skiptext = instring[startloc:loc]
+        skipresult = ParseResults(skiptext)
+
+        if self.includeMatch:
+            loc, mat = expr_parse(instring,loc,doActions,callPreParse=False)
+            skipresult += mat
+
+        return loc, skipresult
+
+class Forward(ParseElementEnhance):
+    """Forward declaration of an expression to be defined later -
+    used for recursive grammars, such as algebraic infix notation.
+    When the expression is known, it is assigned to the ``Forward``
+    variable using the '<<' operator.
+
+    Note: take care when assigning to ``Forward`` not to overlook
+    precedence of operators.
+
+    Specifically, '|' has a lower precedence than '<<', so that::
+
+        fwdExpr << a | b | c
+
+    will actually be evaluated as::
+
+        (fwdExpr << a) | b | c
+
+    thereby leaving b and c out as parseable alternatives.  It is recommended that you
+    explicitly group the values inserted into the ``Forward``::
+
+        fwdExpr << (a | b | c)
+
+    Converting to use the '<<=' operator instead will avoid this problem.
+
+    See :class:`ParseResults.pprint` for an example of a recursive
+    parser created using ``Forward``.
+    """
+    def __init__( self, other=None ):
+        super(Forward,self).__init__( other, savelist=False )
+
+    def __lshift__( self, other ):
+        if isinstance( other, basestring ):
+            other = ParserElement._literalStringClass(other)
+        self.expr = other
+        self.strRepr = None
+        self.mayIndexError = self.expr.mayIndexError
+        self.mayReturnEmpty = self.expr.mayReturnEmpty
+        self.setWhitespaceChars( self.expr.whiteChars )
+        self.skipWhitespace = self.expr.skipWhitespace
+        self.saveAsList = self.expr.saveAsList
+        self.ignoreExprs.extend(self.expr.ignoreExprs)
+        return self
+
+    def __ilshift__(self, other):
+        return self << other
+
+    def leaveWhitespace( self ):
+        self.skipWhitespace = False
+        return self
+
+    def streamline( self ):
+        if not self.streamlined:
+            self.streamlined = True
+            if self.expr is not None:
+                self.expr.streamline()
+        return self
+
+    def validate( self, validateTrace=[] ):
+        if self not in validateTrace:
+            tmp = validateTrace[:]+[self]
+            if self.expr is not None:
+                self.expr.validate(tmp)
+        self.checkRecursion([])
+
+    def __str__( self ):
+        if hasattr(self,"name"):
+            return self.name
+        return self.__class__.__name__ + ": ..."
+
+        # stubbed out for now - creates awful memory and perf issues
+        self._revertClass = self.__class__
+        self.__class__ = _ForwardNoRecurse
+        try:
+            if self.expr is not None:
+                retString = _ustr(self.expr)
+            else:
+                retString = "None"
+        finally:
+            self.__class__ = self._revertClass
+        return self.__class__.__name__ + ": " + retString
+
+    def copy(self):
+        if self.expr is not None:
+            return super(Forward,self).copy()
+        else:
+            ret = Forward()
+            ret <<= self
+            return ret
+
+class _ForwardNoRecurse(Forward):
+    def __str__( self ):
+        return "..."
+
+class TokenConverter(ParseElementEnhance):
+    """
+    Abstract subclass of :class:`ParseExpression`, for converting parsed results.
+    """
+    def __init__( self, expr, savelist=False ):
+        super(TokenConverter,self).__init__( expr )#, savelist )
+        self.saveAsList = False
+
+class Combine(TokenConverter):
+    """Converter to concatenate all matching tokens to a single string.
+    By default, the matching patterns must also be contiguous in the
+    input string; this can be disabled by specifying
+    ``'adjacent=False'`` in the constructor.
+
+    Example::
+
+        real = Word(nums) + '.' + Word(nums)
+        print(real.parseString('3.1416')) # -> ['3', '.', '1416']
+        # will also erroneously match the following
+        print(real.parseString('3. 1416')) # -> ['3', '.', '1416']
+
+        real = Combine(Word(nums) + '.' + Word(nums))
+        print(real.parseString('3.1416')) # -> ['3.1416']
+        # no match when there are internal spaces
+        print(real.parseString('3. 1416')) # -> Exception: Expected W:(0123...)
+    """
+    def __init__( self, expr, joinString="", adjacent=True ):
+        super(Combine,self).__init__( expr )
+        # suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself
+        if adjacent:
+            self.leaveWhitespace()
+        self.adjacent = adjacent
+        self.skipWhitespace = True
+        self.joinString = joinString
+        self.callPreparse = True
+
+    def ignore( self, other ):
+        if self.adjacent:
+            ParserElement.ignore(self, other)
+        else:
+            super( Combine, self).ignore( other )
+        return self
+
+    def postParse( self, instring, loc, tokenlist ):
+        retToks = tokenlist.copy()
+        del retToks[:]
+        retToks += ParseResults([ "".join(tokenlist._asStringList(self.joinString)) ], modal=self.modalResults)
+
+        if self.resultsName and retToks.haskeys():
+            return [ retToks ]
+        else:
+            return retToks
+
+class Group(TokenConverter):
+    """Converter to return the matched tokens as a list - useful for
+    returning tokens of :class:`ZeroOrMore` and :class:`OneOrMore` expressions.
+
+    Example::
+
+        ident = Word(alphas)
+        num = Word(nums)
+        term = ident | num
+        func = ident + Optional(delimitedList(term))
+        print(func.parseString("fn a,b,100"))  # -> ['fn', 'a', 'b', '100']
+
+        func = ident + Group(Optional(delimitedList(term)))
+        print(func.parseString("fn a,b,100"))  # -> ['fn', ['a', 'b', '100']]
+    """
+    def __init__( self, expr ):
+        super(Group,self).__init__( expr )
+        self.saveAsList = expr.saveAsList
+
+    def postParse( self, instring, loc, tokenlist ):
+        return [ tokenlist ]
+
+class Dict(TokenConverter):
+    """Converter to return a repetitive expression as a list, but also
+    as a dictionary. Each element can also be referenced using the first
+    token in the expression as its key. Useful for tabular report
+    scraping when the first column can be used as a item key.
+
+    Example::
+
+        data_word = Word(alphas)
+        label = data_word + FollowedBy(':')
+        attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))
+
+        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"
+        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
+
+        # print attributes as plain groups
+        print(OneOrMore(attr_expr).parseString(text).dump())
+
+        # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names
+        result = Dict(OneOrMore(Group(attr_expr))).parseString(text)
+        print(result.dump())
+
+        # access named fields as dict entries, or output as dict
+        print(result['shape'])
+        print(result.asDict())
+
+    prints::
+
+        ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap']
+        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
+        - color: light blue
+        - posn: upper left
+        - shape: SQUARE
+        - texture: burlap
+        SQUARE
+        {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'}
+
+    See more examples at :class:`ParseResults` of accessing fields by results name.
+    """
+    def __init__( self, expr ):
+        super(Dict,self).__init__( expr )
+        self.saveAsList = True
+
+    def postParse( self, instring, loc, tokenlist ):
+        for i,tok in enumerate(tokenlist):
+            if len(tok) == 0:
+                continue
+            ikey = tok[0]
+            if isinstance(ikey,int):
+                ikey = _ustr(tok[0]).strip()
+            if len(tok)==1:
+                tokenlist[ikey] = _ParseResultsWithOffset("",i)
+            elif len(tok)==2 and not isinstance(tok[1],ParseResults):
+                tokenlist[ikey] = _ParseResultsWithOffset(tok[1],i)
+            else:
+                dictvalue = tok.copy() #ParseResults(i)
+                del dictvalue[0]
+                if len(dictvalue)!= 1 or (isinstance(dictvalue,ParseResults) and dictvalue.haskeys()):
+                    tokenlist[ikey] = _ParseResultsWithOffset(dictvalue,i)
+                else:
+                    tokenlist[ikey] = _ParseResultsWithOffset(dictvalue[0],i)
+
+        if self.resultsName:
+            return [ tokenlist ]
+        else:
+            return tokenlist
+
+
+class Suppress(TokenConverter):
+    """Converter for ignoring the results of a parsed expression.
+
+    Example::
+
+        source = "a, b, c,d"
+        wd = Word(alphas)
+        wd_list1 = wd + ZeroOrMore(',' + wd)
+        print(wd_list1.parseString(source))
+
+        # often, delimiters that are useful during parsing are just in the
+        # way afterward - use Suppress to keep them out of the parsed output
+        wd_list2 = wd + ZeroOrMore(Suppress(',') + wd)
+        print(wd_list2.parseString(source))
+
+    prints::
+
+        ['a', ',', 'b', ',', 'c', ',', 'd']
+        ['a', 'b', 'c', 'd']
+
+    (See also :class:`delimitedList`.)
+    """
+    def postParse( self, instring, loc, tokenlist ):
+        return []
+
+    def suppress( self ):
+        return self
+
+
+class OnlyOnce(object):
+    """Wrapper for parse actions, to ensure they are only called once.
+    """
+    def __init__(self, methodCall):
+        self.callable = _trim_arity(methodCall)
+        self.called = False
+    def __call__(self,s,l,t):
+        if not self.called:
+            results = self.callable(s,l,t)
+            self.called = True
+            return results
+        raise ParseException(s,l,"")
+    def reset(self):
+        self.called = False
+
+def traceParseAction(f):
+    """Decorator for debugging parse actions.
+
+    When the parse action is called, this decorator will print
+    ``">> entering method-name(line:<current_source_line>, <parse_location>, <matched_tokens>)"``.
+    When the parse action completes, the decorator will print
+    ``"<<"`` followed by the returned value, or any exception that the parse action raised.
+
+    Example::
+
+        wd = Word(alphas)
+
+        @traceParseAction
+        def remove_duplicate_chars(tokens):
+            return ''.join(sorted(set(''.join(tokens))))
+
+        wds = OneOrMore(wd).setParseAction(remove_duplicate_chars)
+        print(wds.parseString("slkdjs sld sldd sdlf sdljf"))
+
+    prints::
+
+        >>entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {}))
+        <<leaving remove_duplicate_chars (ret: 'dfjkls')
+        ['dfjkls']
+    """
+    f = _trim_arity(f)
+    def z(*paArgs):
+        thisFunc = f.__name__
+        s,l,t = paArgs[-3:]
+        if len(paArgs)>3:
+            thisFunc = paArgs[0].__class__.__name__ + '.' + thisFunc
+        sys.stderr.write( ">>entering %s(line: '%s', %d, %r)\n" % (thisFunc,line(l,s),l,t) )
+        try:
+            ret = f(*paArgs)
+        except Exception as exc:
+            sys.stderr.write( "<<leaving %s (exception: %s)\n" % (thisFunc,exc) )
+            raise
+        sys.stderr.write( "<<leaving %s (ret: %r)\n" % (thisFunc,ret) )
+        return ret
+    try:
+        z.__name__ = f.__name__
+    except AttributeError:
+        pass
+    return z
+
+#
+# global helpers
+#
+def delimitedList( expr, delim=",", combine=False ):
+    """Helper to define a delimited list of expressions - the delimiter
+    defaults to ','. By default, the list elements and delimiters can
+    have intervening whitespace, and comments, but this can be
+    overridden by passing ``combine=True`` in the constructor. If
+    ``combine`` is set to ``True``, the matching tokens are
+    returned as a single token string, with the delimiters included;
+    otherwise, the matching tokens are returned as a list of tokens,
+    with the delimiters suppressed.
+
+    Example::
+
+        delimitedList(Word(alphas)).parseString("aa,bb,cc") # -> ['aa', 'bb', 'cc']
+        delimitedList(Word(hexnums), delim=':', combine=True).parseString("AA:BB:CC:DD:EE") # -> ['AA:BB:CC:DD:EE']
+    """
+    dlName = _ustr(expr)+" ["+_ustr(delim)+" "+_ustr(expr)+"]..."
+    if combine:
+        return Combine( expr + ZeroOrMore( delim + expr ) ).setName(dlName)
+    else:
+        return ( expr + ZeroOrMore( Suppress( delim ) + expr ) ).setName(dlName)
+
+def countedArray( expr, intExpr=None ):
+    """Helper to define a counted list of expressions.
+
+    This helper defines a pattern of the form::
+
+        integer expr expr expr...
+
+    where the leading integer tells how many expr expressions follow.
+    The matched tokens returns the array of expr tokens as a list - the
+    leading count token is suppressed.
+
+    If ``intExpr`` is specified, it should be a pyparsing expression
+    that produces an integer value.
+
+    Example::
+
+        countedArray(Word(alphas)).parseString('2 ab cd ef')  # -> ['ab', 'cd']
+
+        # in this parser, the leading integer value is given in binary,
+        # '10' indicating that 2 values are in the array
+        binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2))
+        countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef')  # -> ['ab', 'cd']
+    """
+    arrayExpr = Forward()
+    def countFieldParseAction(s,l,t):
+        n = t[0]
+        arrayExpr << (n and Group(And([expr]*n)) or Group(empty))
+        return []
+    if intExpr is None:
+        intExpr = Word(nums).setParseAction(lambda t:int(t[0]))
+    else:
+        intExpr = intExpr.copy()
+    intExpr.setName("arrayLen")
+    intExpr.addParseAction(countFieldParseAction, callDuringTry=True)
+    return ( intExpr + arrayExpr ).setName('(len) ' + _ustr(expr) + '...')
+
+def _flatten(L):
+    ret = []
+    for i in L:
+        if isinstance(i,list):
+            ret.extend(_flatten(i))
+        else:
+            ret.append(i)
+    return ret
+
+def matchPreviousLiteral(expr):
+    """Helper to define an expression that is indirectly defined from
+    the tokens matched in a previous expression, that is, it looks for
+    a 'repeat' of a previous expression.  For example::
+
+        first = Word(nums)
+        second = matchPreviousLiteral(first)
+        matchExpr = first + ":" + second
+
+    will match ``"1:1"``, but not ``"1:2"``.  Because this
+    matches a previous literal, will also match the leading
+    ``"1:1"`` in ``"1:10"``. If this is not desired, use
+    :class:`matchPreviousExpr`. Do *not* use with packrat parsing
+    enabled.
+    """
+    rep = Forward()
+    def copyTokenToRepeater(s,l,t):
+        if t:
+            if len(t) == 1:
+                rep << t[0]
+            else:
+                # flatten t tokens
+                tflat = _flatten(t.asList())
+                rep << And(Literal(tt) for tt in tflat)
+        else:
+            rep << Empty()
+    expr.addParseAction(copyTokenToRepeater, callDuringTry=True)
+    rep.setName('(prev) ' + _ustr(expr))
+    return rep
+
+def matchPreviousExpr(expr):
+    """Helper to define an expression that is indirectly defined from
+    the tokens matched in a previous expression, that is, it looks for
+    a 'repeat' of a previous expression.  For example::
+
+        first = Word(nums)
+        second = matchPreviousExpr(first)
+        matchExpr = first + ":" + second
+
+    will match ``"1:1"``, but not ``"1:2"``.  Because this
+    matches by expressions, will *not* match the leading ``"1:1"``
+    in ``"1:10"``; the expressions are evaluated first, and then
+    compared, so ``"1"`` is compared with ``"10"``. Do *not* use
+    with packrat parsing enabled.
+    """
+    rep = Forward()
+    e2 = expr.copy()
+    rep <<= e2
+    def copyTokenToRepeater(s,l,t):
+        matchTokens = _flatten(t.asList())
+        def mustMatchTheseTokens(s,l,t):
+            theseTokens = _flatten(t.asList())
+            if  theseTokens != matchTokens:
+                raise ParseException("",0,"")
+        rep.setParseAction( mustMatchTheseTokens, callDuringTry=True )
+    expr.addParseAction(copyTokenToRepeater, callDuringTry=True)
+    rep.setName('(prev) ' + _ustr(expr))
+    return rep
+
+def _escapeRegexRangeChars(s):
+    #~  escape these chars: ^-]
+    for c in r"\^-]":
+        s = s.replace(c,_bslash+c)
+    s = s.replace("\n",r"\n")
+    s = s.replace("\t",r"\t")
+    return _ustr(s)
+
+def oneOf( strs, caseless=False, useRegex=True ):
+    """Helper to quickly define a set of alternative Literals, and makes
+    sure to do longest-first testing when there is a conflict,
+    regardless of the input order, but returns
+    a :class:`MatchFirst` for best performance.
+
+    Parameters:
+
+     - strs - a string of space-delimited literals, or a collection of
+       string literals
+     - caseless - (default= ``False``) - treat all literals as
+       caseless
+     - useRegex - (default= ``True``) - as an optimization, will
+       generate a Regex object; otherwise, will generate
+       a :class:`MatchFirst` object (if ``caseless=True``, or if
+       creating a :class:`Regex` raises an exception)
+
+    Example::
+
+        comp_oper = oneOf("< = > <= >= !=")
+        var = Word(alphas)
+        number = Word(nums)
+        term = var | number
+        comparison_expr = term + comp_oper + term
+        print(comparison_expr.searchString("B = 12  AA=23 B<=AA AA>12"))
+
+    prints::
+
+        [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']]
+    """
+    if caseless:
+        isequal = ( lambda a,b: a.upper() == b.upper() )
+        masks = ( lambda a,b: b.upper().startswith(a.upper()) )
+        parseElementClass = CaselessLiteral
+    else:
+        isequal = ( lambda a,b: a == b )
+        masks = ( lambda a,b: b.startswith(a) )
+        parseElementClass = Literal
+
+    symbols = []
+    if isinstance(strs,basestring):
+        symbols = strs.split()
+    elif isinstance(strs, Iterable):
+        symbols = list(strs)
+    else:
+        warnings.warn("Invalid argument to oneOf, expected string or iterable",
+                SyntaxWarning, stacklevel=2)
+    if not symbols:
+        return NoMatch()
+
+    i = 0
+    while i < len(symbols)-1:
+        cur = symbols[i]
+        for j,other in enumerate(symbols[i+1:]):
+            if ( isequal(other, cur) ):
+                del symbols[i+j+1]
+                break
+            elif ( masks(cur, other) ):
+                del symbols[i+j+1]
+                symbols.insert(i,other)
+                cur = other
+                break
+        else:
+            i += 1
+
+    if not caseless and useRegex:
+        #~ print (strs,"->", "|".join( [ _escapeRegexChars(sym) for sym in symbols] ))
+        try:
+            if len(symbols)==len("".join(symbols)):
+                return Regex( "[%s]" % "".join(_escapeRegexRangeChars(sym) for sym in symbols) ).setName(' | '.join(symbols))
+            else:
+                return Regex( "|".join(re.escape(sym) for sym in symbols) ).setName(' | '.join(symbols))
+        except Exception:
+            warnings.warn("Exception creating Regex for oneOf, building MatchFirst",
+                    SyntaxWarning, stacklevel=2)
+
+
+    # last resort, just use MatchFirst
+    return MatchFirst(parseElementClass(sym) for sym in symbols).setName(' | '.join(symbols))
+
+def dictOf( key, value ):
+    """Helper to easily and clearly define a dictionary by specifying
+    the respective patterns for the key and value.  Takes care of
+    defining the :class:`Dict`, :class:`ZeroOrMore`, and
+    :class:`Group` tokens in the proper order.  The key pattern
+    can include delimiting markers or punctuation, as long as they are
+    suppressed, thereby leaving the significant key text.  The value
+    pattern can include named results, so that the :class:`Dict` results
+    can include named token fields.
+
+    Example::
+
+        text = "shape: SQUARE posn: upper left color: light blue texture: burlap"
+        attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
+        print(OneOrMore(attr_expr).parseString(text).dump())
+
+        attr_label = label
+        attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)
+
+        # similar to Dict, but simpler call format
+        result = dictOf(attr_label, attr_value).parseString(text)
+        print(result.dump())
+        print(result['shape'])
+        print(result.shape)  # object attribute access works too
+        print(result.asDict())
+
+    prints::
+
+        [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
+        - color: light blue
+        - posn: upper left
+        - shape: SQUARE
+        - texture: burlap
+        SQUARE
+        SQUARE
+        {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'}
+    """
+    return Dict(OneOrMore(Group(key + value)))
+
+def originalTextFor(expr, asString=True):
+    """Helper to return the original, untokenized text for a given
+    expression.  Useful to restore the parsed fields of an HTML start
+    tag into the raw tag text itself, or to revert separate tokens with
+    intervening whitespace back to the original matching input text. By
+    default, returns astring containing the original parsed text.
+
+    If the optional ``asString`` argument is passed as
+    ``False``, then the return value is
+    a :class:`ParseResults` containing any results names that
+    were originally matched, and a single token containing the original
+    matched text from the input string.  So if the expression passed to
+    :class:`originalTextFor` contains expressions with defined
+    results names, you must set ``asString`` to ``False`` if you
+    want to preserve those results name values.
+
+    Example::
+
+        src = "this is test <b> bold <i>text</i> </b> normal text "
+        for tag in ("b","i"):
+            opener,closer = makeHTMLTags(tag)
+            patt = originalTextFor(opener + SkipTo(closer) + closer)
+            print(patt.searchString(src)[0])
+
+    prints::
+
+        ['<b> bold <i>text</i> </b>']
+        ['<i>text</i>']
+    """
+    locMarker = Empty().setParseAction(lambda s,loc,t: loc)
+    endlocMarker = locMarker.copy()
+    endlocMarker.callPreparse = False
+    matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end")
+    if asString:
+        extractText = lambda s,l,t: s[t._original_start:t._original_end]
+    else:
+        def extractText(s,l,t):
+            t[:] = [s[t.pop('_original_start'):t.pop('_original_end')]]
+    matchExpr.setParseAction(extractText)
+    matchExpr.ignoreExprs = expr.ignoreExprs
+    return matchExpr
+
+def ungroup(expr):
+    """Helper to undo pyparsing's default grouping of And expressions,
+    even if all but one are non-empty.
+    """
+    return TokenConverter(expr).setParseAction(lambda t:t[0])
+
+def locatedExpr(expr):
+    """Helper to decorate a returned token with its starting and ending
+    locations in the input string.
+
+    This helper adds the following results names:
+
+     - locn_start = location where matched expression begins
+     - locn_end = location where matched expression ends
+     - value = the actual parsed results
+
+    Be careful if the input text contains ``<TAB>`` characters, you
+    may want to call :class:`ParserElement.parseWithTabs`
+
+    Example::
+
+        wd = Word(alphas)
+        for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"):
+            print(match)
+
+    prints::
+
+        [[0, 'ljsdf', 5]]
+        [[8, 'lksdjjf', 15]]
+        [[18, 'lkkjj', 23]]
+    """
+    locator = Empty().setParseAction(lambda s,l,t: l)
+    return Group(locator("locn_start") + expr("value") + locator.copy().leaveWhitespace()("locn_end"))
+
+
+# convenience constants for positional expressions
+empty       = Empty().setName("empty")
+lineStart   = LineStart().setName("lineStart")
+lineEnd     = LineEnd().setName("lineEnd")
+stringStart = StringStart().setName("stringStart")
+stringEnd   = StringEnd().setName("stringEnd")
+
+_escapedPunc = Word( _bslash, r"\[]-*.$+^?()~ ", exact=2 ).setParseAction(lambda s,l,t:t[0][1])
+_escapedHexChar = Regex(r"\\0?[xX][0-9a-fA-F]+").setParseAction(lambda s,l,t:unichr(int(t[0].lstrip(r'\0x'),16)))
+_escapedOctChar = Regex(r"\\0[0-7]+").setParseAction(lambda s,l,t:unichr(int(t[0][1:],8)))
+_singleChar = _escapedPunc | _escapedHexChar | _escapedOctChar | CharsNotIn(r'\]', exact=1)
+_charRange = Group(_singleChar + Suppress("-") + _singleChar)
+_reBracketExpr = Literal("[") + Optional("^").setResultsName("negate") + Group( OneOrMore( _charRange | _singleChar ) ).setResultsName("body") + "]"
+
+def srange(s):
+    r"""Helper to easily define string ranges for use in Word
+    construction. Borrows syntax from regexp '[]' string range
+    definitions::
+
+        srange("[0-9]")   -> "0123456789"
+        srange("[a-z]")   -> "abcdefghijklmnopqrstuvwxyz"
+        srange("[a-z$_]") -> "abcdefghijklmnopqrstuvwxyz$_"
+
+    The input string must be enclosed in []'s, and the returned string
+    is the expanded character set joined into a single string. The
+    values enclosed in the []'s may be:
+
+     - a single character
+     - an escaped character with a leading backslash (such as ``\-``
+       or ``\]``)
+     - an escaped hex character with a leading ``'\x'``
+       (``\x21``, which is a ``'!'`` character) (``\0x##``
+       is also supported for backwards compatibility)
+     - an escaped octal character with a leading ``'\0'``
+       (``\041``, which is a ``'!'`` character)
+     - a range of any of the above, separated by a dash (``'a-z'``,
+       etc.)
+     - any combination of the above (``'aeiouy'``,
+       ``'a-zA-Z0-9_$'``, etc.)
+    """
+    _expanded = lambda p: p if not isinstance(p,ParseResults) else ''.join(unichr(c) for c in range(ord(p[0]),ord(p[1])+1))
+    try:
+        return "".join(_expanded(part) for part in _reBracketExpr.parseString(s).body)
+    except Exception:
+        return ""
+
+def matchOnlyAtCol(n):
+    """Helper method for defining parse actions that require matching at
+    a specific column in the input text.
+    """
+    def verifyCol(strg,locn,toks):
+        if col(locn,strg) != n:
+            raise ParseException(strg,locn,"matched token not at column %d" % n)
+    return verifyCol
+
+def replaceWith(replStr):
+    """Helper method for common parse actions that simply return
+    a literal value.  Especially useful when used with
+    :class:`transformString<ParserElement.transformString>` ().
+
+    Example::
+
+        num = Word(nums).setParseAction(lambda toks: int(toks[0]))
+        na = oneOf("N/A NA").setParseAction(replaceWith(math.nan))
+        term = na | num
+
+        OneOrMore(term).parseString("324 234 N/A 234") # -> [324, 234, nan, 234]
+    """
+    return lambda s,l,t: [replStr]
+
+def removeQuotes(s,l,t):
+    """Helper parse action for removing quotation marks from parsed
+    quoted strings.
+
+    Example::
+
+        # by default, quotation marks are included in parsed results
+        quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["'Now is the Winter of our Discontent'"]
+
+        # use removeQuotes to strip quotation marks from parsed results
+        quotedString.setParseAction(removeQuotes)
+        quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["Now is the Winter of our Discontent"]
+    """
+    return t[0][1:-1]
+
+def tokenMap(func, *args):
+    """Helper to define a parse action by mapping a function to all
+    elements of a ParseResults list. If any additional args are passed,
+    they are forwarded to the given function as additional arguments
+    after the token, as in
+    ``hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))``,
+    which will convert the parsed data to an integer using base 16.
+
+    Example (compare the last to example in :class:`ParserElement.transformString`::
+
+        hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))
+        hex_ints.runTests('''
+            00 11 22 aa FF 0a 0d 1a
+            ''')
+
+        upperword = Word(alphas).setParseAction(tokenMap(str.upper))
+        OneOrMore(upperword).runTests('''
+            my kingdom for a horse
+            ''')
+
+        wd = Word(alphas).setParseAction(tokenMap(str.title))
+        OneOrMore(wd).setParseAction(' '.join).runTests('''
+            now is the winter of our discontent made glorious summer by this sun of york
+            ''')
+
+    prints::
+
+        00 11 22 aa FF 0a 0d 1a
+        [0, 17, 34, 170, 255, 10, 13, 26]
+
+        my kingdom for a horse
+        ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE']
+
+        now is the winter of our discontent made glorious summer by this sun of york
+        ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York']
+    """
+    def pa(s,l,t):
+        return [func(tokn, *args) for tokn in t]
+
+    try:
+        func_name = getattr(func, '__name__',
+                            getattr(func, '__class__').__name__)
+    except Exception:
+        func_name = str(func)
+    pa.__name__ = func_name
+
+    return pa
+
+upcaseTokens = tokenMap(lambda t: _ustr(t).upper())
+"""(Deprecated) Helper parse action to convert tokens to upper case.
+Deprecated in favor of :class:`pyparsing_common.upcaseTokens`"""
+
+downcaseTokens = tokenMap(lambda t: _ustr(t).lower())
+"""(Deprecated) Helper parse action to convert tokens to lower case.
+Deprecated in favor of :class:`pyparsing_common.downcaseTokens`"""
+
+def _makeTags(tagStr, xml):
+    """Internal helper to construct opening and closing tag expressions, given a tag name"""
+    if isinstance(tagStr,basestring):
+        resname = tagStr
+        tagStr = Keyword(tagStr, caseless=not xml)
+    else:
+        resname = tagStr.name
+
+    tagAttrName = Word(alphas,alphanums+"_-:")
+    if (xml):
+        tagAttrValue = dblQuotedString.copy().setParseAction( removeQuotes )
+        openTag = Suppress("<") + tagStr("tag") + \
+                Dict(ZeroOrMore(Group( tagAttrName + Suppress("=") + tagAttrValue ))) + \
+                Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">")
+    else:
+        printablesLessRAbrack = "".join(c for c in printables if c not in ">")
+        tagAttrValue = quotedString.copy().setParseAction( removeQuotes ) | Word(printablesLessRAbrack)
+        openTag = Suppress("<") + tagStr("tag") + \
+                Dict(ZeroOrMore(Group( tagAttrName.setParseAction(downcaseTokens) + \
+                Optional( Suppress("=") + tagAttrValue ) ))) + \
+                Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">")
+    closeTag = Combine(_L("</") + tagStr + ">")
+
+    openTag = openTag.setResultsName("start"+"".join(resname.replace(":"," ").title().split())).setName("<%s>" % resname)
+    closeTag = closeTag.setResultsName("end"+"".join(resname.replace(":"," ").title().split())).setName("</%s>" % resname)
+    openTag.tag = resname
+    closeTag.tag = resname
+    return openTag, closeTag
+
+def makeHTMLTags(tagStr):
+    """Helper to construct opening and closing tag expressions for HTML,
+    given a tag name. Matches tags in either upper or lower case,
+    attributes with namespaces and with quoted or unquoted values.
+
+    Example::
+
+        text = '<td>More info at the <a href="https://github.com/pyparsing/pyparsing/wiki">pyparsing</a> wiki page</td>'
+        # makeHTMLTags returns pyparsing expressions for the opening and
+        # closing tags as a 2-tuple
+        a,a_end = makeHTMLTags("A")
+        link_expr = a + SkipTo(a_end)("link_text") + a_end
+
+        for link in link_expr.searchString(text):
+            # attributes in the <A> tag (like "href" shown here) are
+            # also accessible as named results
+            print(link.link_text, '->', link.href)
+
+    prints::
+
+        pyparsing -> https://github.com/pyparsing/pyparsing/wiki
+    """
+    return _makeTags( tagStr, False )
+
+def makeXMLTags(tagStr):
+    """Helper to construct opening and closing tag expressions for XML,
+    given a tag name. Matches tags only in the given upper/lower case.
+
+    Example: similar to :class:`makeHTMLTags`
+    """
+    return _makeTags( tagStr, True )
+
+def withAttribute(*args,**attrDict):
+    """Helper to create a validating parse action to be used with start
+    tags created with :class:`makeXMLTags` or
+    :class:`makeHTMLTags`. Use ``withAttribute`` to qualify
+    a starting tag with a required attribute value, to avoid false
+    matches on common tags such as ``<TD>`` or ``<DIV>``.
+
+    Call ``withAttribute`` with a series of attribute names and
+    values. Specify the list of filter attributes names and values as:
+
+     - keyword arguments, as in ``(align="right")``, or
+     - as an explicit dict with ``**`` operator, when an attribute
+       name is also a Python reserved word, as in ``**{"class":"Customer", "align":"right"}``
+     - a list of name-value tuples, as in ``(("ns1:class", "Customer"), ("ns2:align","right"))``
+
+    For attribute names with a namespace prefix, you must use the second
+    form.  Attribute names are matched insensitive to upper/lower case.
+
+    If just testing for ``class`` (with or without a namespace), use
+    :class:`withClass`.
+
+    To verify that the attribute exists, but without specifying a value,
+    pass ``withAttribute.ANY_VALUE`` as the value.
+
+    Example::
+
+        html = '''
+            <div>
+            Some text
+            <div type="grid">1 4 0 1 0</div>
+            <div type="graph">1,3 2,3 1,1</div>
+            <div>this has no type</div>
+            </div>
+
+        '''
+        div,div_end = makeHTMLTags("div")
+
+        # only match div tag having a type attribute with value "grid"
+        div_grid = div().setParseAction(withAttribute(type="grid"))
+        grid_expr = div_grid + SkipTo(div | div_end)("body")
+        for grid_header in grid_expr.searchString(html):
+            print(grid_header.body)
+
+        # construct a match with any div tag having a type attribute, regardless of the value
+        div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE))
+        div_expr = div_any_type + SkipTo(div | div_end)("body")
+        for div_header in div_expr.searchString(html):
+            print(div_header.body)
+
+    prints::
+
+        1 4 0 1 0
+
+        1 4 0 1 0
+        1,3 2,3 1,1
+    """
+    if args:
+        attrs = args[:]
+    else:
+        attrs = attrDict.items()
+    attrs = [(k,v) for k,v in attrs]
+    def pa(s,l,tokens):
+        for attrName,attrValue in attrs:
+            if attrName not in tokens:
+                raise ParseException(s,l,"no matching attribute " + attrName)
+            if attrValue != withAttribute.ANY_VALUE and tokens[attrName] != attrValue:
+                raise ParseException(s,l,"attribute '%s' has value '%s', must be '%s'" %
+                                            (attrName, tokens[attrName], attrValue))
+    return pa
+withAttribute.ANY_VALUE = object()
+
+def withClass(classname, namespace=''):
+    """Simplified version of :class:`withAttribute` when
+    matching on a div class - made difficult because ``class`` is
+    a reserved word in Python.
+
+    Example::
+
+        html = '''
+            <div>
+            Some text
+            <div class="grid">1 4 0 1 0</div>
+            <div class="graph">1,3 2,3 1,1</div>
+            <div>this &lt;div&gt; has no class</div>
+            </div>
+
+        '''
+        div,div_end = makeHTMLTags("div")
+        div_grid = div().setParseAction(withClass("grid"))
+
+        grid_expr = div_grid + SkipTo(div | div_end)("body")
+        for grid_header in grid_expr.searchString(html):
+            print(grid_header.body)
+
+        div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE))
+        div_expr = div_any_type + SkipTo(div | div_end)("body")
+        for div_header in div_expr.searchString(html):
+            print(div_header.body)
+
+    prints::
+
+        1 4 0 1 0
+
+        1 4 0 1 0
+        1,3 2,3 1,1
+    """
+    classattr = "%s:class" % namespace if namespace else "class"
+    return withAttribute(**{classattr : classname})
+
+opAssoc = SimpleNamespace()
+opAssoc.LEFT = object()
+opAssoc.RIGHT = object()
+
+def infixNotation( baseExpr, opList, lpar=Suppress('('), rpar=Suppress(')') ):
+    """Helper method for constructing grammars of expressions made up of
+    operators working in a precedence hierarchy.  Operators may be unary
+    or binary, left- or right-associative.  Parse actions can also be
+    attached to operator expressions. The generated parser will also
+    recognize the use of parentheses to override operator precedences
+    (see example below).
+
+    Note: if you define a deep operator list, you may see performance
+    issues when using infixNotation. See
+    :class:`ParserElement.enablePackrat` for a mechanism to potentially
+    improve your parser performance.
+
+    Parameters:
+     - baseExpr - expression representing the most basic element for the
+       nested
+     - opList - list of tuples, one for each operator precedence level
+       in the expression grammar; each tuple is of the form ``(opExpr,
+       numTerms, rightLeftAssoc, parseAction)``, where:
+
+       - opExpr is the pyparsing expression for the operator; may also
+         be a string, which will be converted to a Literal; if numTerms
+         is 3, opExpr is a tuple of two expressions, for the two
+         operators separating the 3 terms
+       - numTerms is the number of terms for this operator (must be 1,
+         2, or 3)
+       - rightLeftAssoc is the indicator whether the operator is right
+         or left associative, using the pyparsing-defined constants
+         ``opAssoc.RIGHT`` and ``opAssoc.LEFT``.
+       - parseAction is the parse action to be associated with
+         expressions matching this operator expression (the parse action
+         tuple member may be omitted); if the parse action is passed
+         a tuple or list of functions, this is equivalent to calling
+         ``setParseAction(*fn)``
+         (:class:`ParserElement.setParseAction`)
+     - lpar - expression for matching left-parentheses
+       (default= ``Suppress('(')``)
+     - rpar - expression for matching right-parentheses
+       (default= ``Suppress(')')``)
+
+    Example::
+
+        # simple example of four-function arithmetic with ints and
+        # variable names
+        integer = pyparsing_common.signed_integer
+        varname = pyparsing_common.identifier
+
+        arith_expr = infixNotation(integer | varname,
+            [
+            ('-', 1, opAssoc.RIGHT),
+            (oneOf('* /'), 2, opAssoc.LEFT),
+            (oneOf('+ -'), 2, opAssoc.LEFT),
+            ])
+
+        arith_expr.runTests('''
+            5+3*6
+            (5+3)*6
+            -2--11
+            ''', fullDump=False)
+
+    prints::
+
+        5+3*6
+        [[5, '+', [3, '*', 6]]]
+
+        (5+3)*6
+        [[[5, '+', 3], '*', 6]]
+
+        -2--11
+        [[['-', 2], '-', ['-', 11]]]
+    """
+    # captive version of FollowedBy that does not do parse actions or capture results names
+    class _FB(FollowedBy):
+        def parseImpl(self, instring, loc, doActions=True):
+            self.expr.tryParse(instring, loc)
+            return loc, []
+
+    ret = Forward()
+    lastExpr = baseExpr | ( lpar + ret + rpar )
+    for i,operDef in enumerate(opList):
+        opExpr,arity,rightLeftAssoc,pa = (operDef + (None,))[:4]
+        termName = "%s term" % opExpr if arity < 3 else "%s%s term" % opExpr
+        if arity == 3:
+            if opExpr is None or len(opExpr) != 2:
+                raise ValueError(
+                    "if numterms=3, opExpr must be a tuple or list of two expressions")
+            opExpr1, opExpr2 = opExpr
+        thisExpr = Forward().setName(termName)
+        if rightLeftAssoc == opAssoc.LEFT:
+            if arity == 1:
+                matchExpr = _FB(lastExpr + opExpr) + Group( lastExpr + OneOrMore( opExpr ) )
+            elif arity == 2:
+                if opExpr is not None:
+                    matchExpr = _FB(lastExpr + opExpr + lastExpr) + Group( lastExpr + OneOrMore( opExpr + lastExpr ) )
+                else:
+                    matchExpr = _FB(lastExpr+lastExpr) + Group( lastExpr + OneOrMore(lastExpr) )
+            elif arity == 3:
+                matchExpr = _FB(lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr) + \
+                            Group( lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr )
+            else:
+                raise ValueError("operator must be unary (1), binary (2), or ternary (3)")
+        elif rightLeftAssoc == opAssoc.RIGHT:
+            if arity == 1:
+                # try to avoid LR with this extra test
+                if not isinstance(opExpr, Optional):
+                    opExpr = Optional(opExpr)
+                matchExpr = _FB(opExpr.expr + thisExpr) + Group( opExpr + thisExpr )
+            elif arity == 2:
+                if opExpr is not None:
+                    matchExpr = _FB(lastExpr + opExpr + thisExpr) + Group( lastExpr + OneOrMore( opExpr + thisExpr ) )
+                else:
+                    matchExpr = _FB(lastExpr + thisExpr) + Group( lastExpr + OneOrMore( thisExpr ) )
+            elif arity == 3:
+                matchExpr = _FB(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) + \
+                            Group( lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr )
+            else:
+                raise ValueError("operator must be unary (1), binary (2), or ternary (3)")
+        else:
+            raise ValueError("operator must indicate right or left associativity")
+        if pa:
+            if isinstance(pa, (tuple, list)):
+                matchExpr.setParseAction(*pa)
+            else:
+                matchExpr.setParseAction(pa)
+        thisExpr <<= ( matchExpr.setName(termName) | lastExpr )
+        lastExpr = thisExpr
+    ret <<= lastExpr
+    return ret
+
+operatorPrecedence = infixNotation
+"""(Deprecated) Former name of :class:`infixNotation`, will be
+dropped in a future release."""
+
+dblQuotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"').setName("string enclosed in double quotes")
+sglQuotedString = Combine(Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("string enclosed in single quotes")
+quotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"'|
+                       Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("quotedString using single or double quotes")
+unicodeString = Combine(_L('u') + quotedString.copy()).setName("unicode string literal")
+
+def nestedExpr(opener="(", closer=")", content=None, ignoreExpr=quotedString.copy()):
+    """Helper method for defining nested lists enclosed in opening and
+    closing delimiters ("(" and ")" are the default).
+
+    Parameters:
+     - opener - opening character for a nested list
+       (default= ``"("``); can also be a pyparsing expression
+     - closer - closing character for a nested list
+       (default= ``")"``); can also be a pyparsing expression
+     - content - expression for items within the nested lists
+       (default= ``None``)
+     - ignoreExpr - expression for ignoring opening and closing
+       delimiters (default= :class:`quotedString`)
+
+    If an expression is not provided for the content argument, the
+    nested expression will capture all whitespace-delimited content
+    between delimiters as a list of separate values.
+
+    Use the ``ignoreExpr`` argument to define expressions that may
+    contain opening or closing characters that should not be treated as
+    opening or closing characters for nesting, such as quotedString or
+    a comment expression.  Specify multiple expressions using an
+    :class:`Or` or :class:`MatchFirst`. The default is
+    :class:`quotedString`, but if no expressions are to be ignored, then
+    pass ``None`` for this argument.
+
+    Example::
+
+        data_type = oneOf("void int short long char float double")
+        decl_data_type = Combine(data_type + Optional(Word('*')))
+        ident = Word(alphas+'_', alphanums+'_')
+        number = pyparsing_common.number
+        arg = Group(decl_data_type + ident)
+        LPAR,RPAR = map(Suppress, "()")
+
+        code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment))
+
+        c_function = (decl_data_type("type")
+                      + ident("name")
+                      + LPAR + Optional(delimitedList(arg), [])("args") + RPAR
+                      + code_body("body"))
+        c_function.ignore(cStyleComment)
+
+        source_code = '''
+            int is_odd(int x) {
+                return (x%2);
+            }
+
+            int dec_to_hex(char hchar) {
+                if (hchar >= '0' && hchar <= '9') {
+                    return (ord(hchar)-ord('0'));
+                } else {
+                    return (10+ord(hchar)-ord('A'));
+                }
+            }
+        '''
+        for func in c_function.searchString(source_code):
+            print("%(name)s (%(type)s) args: %(args)s" % func)
+
+
+    prints::
+
+        is_odd (int) args: [['int', 'x']]
+        dec_to_hex (int) args: [['char', 'hchar']]
+    """
+    if opener == closer:
+        raise ValueError("opening and closing strings cannot be the same")
+    if content is None:
+        if isinstance(opener,basestring) and isinstance(closer,basestring):
+            if len(opener) == 1 and len(closer)==1:
+                if ignoreExpr is not None:
+                    content = (Combine(OneOrMore(~ignoreExpr +
+                                    CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS,exact=1))
+                                ).setParseAction(lambda t:t[0].strip()))
+                else:
+                    content = (empty.copy()+CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS
+                                ).setParseAction(lambda t:t[0].strip()))
+            else:
+                if ignoreExpr is not None:
+                    content = (Combine(OneOrMore(~ignoreExpr +
+                                    ~Literal(opener) + ~Literal(closer) +
+                                    CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1))
+                                ).setParseAction(lambda t:t[0].strip()))
+                else:
+                    content = (Combine(OneOrMore(~Literal(opener) + ~Literal(closer) +
+                                    CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1))
+                                ).setParseAction(lambda t:t[0].strip()))
+        else:
+            raise ValueError("opening and closing arguments must be strings if no content expression is given")
+    ret = Forward()
+    if ignoreExpr is not None:
+        ret <<= Group( Suppress(opener) + ZeroOrMore( ignoreExpr | ret | content ) + Suppress(closer) )
+    else:
+        ret <<= Group( Suppress(opener) + ZeroOrMore( ret | content )  + Suppress(closer) )
+    ret.setName('nested %s%s expression' % (opener,closer))
+    return ret
+
+def indentedBlock(blockStatementExpr, indentStack, indent=True):
+    """Helper method for defining space-delimited indentation blocks,
+    such as those used to define block statements in Python source code.
+
+    Parameters:
+
+     - blockStatementExpr - expression defining syntax of statement that
+       is repeated within the indented block
+     - indentStack - list created by caller to manage indentation stack
+       (multiple statementWithIndentedBlock expressions within a single
+       grammar should share a common indentStack)
+     - indent - boolean indicating whether block must be indented beyond
+       the the current level; set to False for block of left-most
+       statements (default= ``True``)
+
+    A valid block must contain at least one ``blockStatement``.
+
+    Example::
+
+        data = '''
+        def A(z):
+          A1
+          B = 100
+          G = A2
+          A2
+          A3
+        B
+        def BB(a,b,c):
+          BB1
+          def BBA():
+            bba1
+            bba2
+            bba3
+        C
+        D
+        def spam(x,y):
+             def eggs(z):
+                 pass
+        '''
+
+
+        indentStack = [1]
+        stmt = Forward()
+
+        identifier = Word(alphas, alphanums)
+        funcDecl = ("def" + identifier + Group( "(" + Optional( delimitedList(identifier) ) + ")" ) + ":")
+        func_body = indentedBlock(stmt, indentStack)
+        funcDef = Group( funcDecl + func_body )
+
+        rvalue = Forward()
+        funcCall = Group(identifier + "(" + Optional(delimitedList(rvalue)) + ")")
+        rvalue << (funcCall | identifier | Word(nums))
+        assignment = Group(identifier + "=" + rvalue)
+        stmt << ( funcDef | assignment | identifier )
+
+        module_body = OneOrMore(stmt)
+
+        parseTree = module_body.parseString(data)
+        parseTree.pprint()
+
+    prints::
+
+        [['def',
+          'A',
+          ['(', 'z', ')'],
+          ':',
+          [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]],
+         'B',
+         ['def',
+          'BB',
+          ['(', 'a', 'b', 'c', ')'],
+          ':',
+          [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]],
+         'C',
+         'D',
+         ['def',
+          'spam',
+          ['(', 'x', 'y', ')'],
+          ':',
+          [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]]
+    """
+    def checkPeerIndent(s,l,t):
+        if l >= len(s): return
+        curCol = col(l,s)
+        if curCol != indentStack[-1]:
+            if curCol > indentStack[-1]:
+                raise ParseFatalException(s,l,"illegal nesting")
+            raise ParseException(s,l,"not a peer entry")
+
+    def checkSubIndent(s,l,t):
+        curCol = col(l,s)
+        if curCol > indentStack[-1]:
+            indentStack.append( curCol )
+        else:
+            raise ParseException(s,l,"not a subentry")
+
+    def checkUnindent(s,l,t):
+        if l >= len(s): return
+        curCol = col(l,s)
+        if not(indentStack and curCol < indentStack[-1] and curCol <= indentStack[-2]):
+            raise ParseException(s,l,"not an unindent")
+        indentStack.pop()
+
+    NL = OneOrMore(LineEnd().setWhitespaceChars("\t ").suppress())
+    INDENT = (Empty() + Empty().setParseAction(checkSubIndent)).setName('INDENT')
+    PEER   = Empty().setParseAction(checkPeerIndent).setName('')
+    UNDENT = Empty().setParseAction(checkUnindent).setName('UNINDENT')
+    if indent:
+        smExpr = Group( Optional(NL) +
+            #~ FollowedBy(blockStatementExpr) +
+            INDENT + (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) + UNDENT)
+    else:
+        smExpr = Group( Optional(NL) +
+            (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) )
+    blockStatementExpr.ignore(_bslash + LineEnd())
+    return smExpr.setName('indented block')
+
+alphas8bit = srange(r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]")
+punc8bit = srange(r"[\0xa1-\0xbf\0xd7\0xf7]")
+
+anyOpenTag,anyCloseTag = makeHTMLTags(Word(alphas,alphanums+"_:").setName('any tag'))
+_htmlEntityMap = dict(zip("gt lt amp nbsp quot apos".split(),'><& "\''))
+commonHTMLEntity = Regex('&(?P<entity>' + '|'.join(_htmlEntityMap.keys()) +");").setName("common HTML entity")
+def replaceHTMLEntity(t):
+    """Helper parser action to replace common HTML entities with their special characters"""
+    return _htmlEntityMap.get(t.entity)
+
+# it's easy to get these comment structures wrong - they're very common, so may as well make them available
+cStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/').setName("C style comment")
+"Comment of the form ``/* ... */``"
+
+htmlComment = Regex(r"<!--[\s\S]*?-->").setName("HTML comment")
+"Comment of the form ``<!-- ... -->``"
+
+restOfLine = Regex(r".*").leaveWhitespace().setName("rest of line")
+dblSlashComment = Regex(r"//(?:\\\n|[^\n])*").setName("// comment")
+"Comment of the form ``// ... (to end of line)``"
+
+cppStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/'| dblSlashComment).setName("C++ style comment")
+"Comment of either form :class:`cStyleComment` or :class:`dblSlashComment`"
+
+javaStyleComment = cppStyleComment
+"Same as :class:`cppStyleComment`"
+
+pythonStyleComment = Regex(r"#.*").setName("Python style comment")
+"Comment of the form ``# ... (to end of line)``"
+
+_commasepitem = Combine(OneOrMore(Word(printables, excludeChars=',') +
+                                  Optional( Word(" \t") +
+                                            ~Literal(",") + ~LineEnd() ) ) ).streamline().setName("commaItem")
+commaSeparatedList = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("commaSeparatedList")
+"""(Deprecated) Predefined expression of 1 or more printable words or
+quoted strings, separated by commas.
+
+This expression is deprecated in favor of :class:`pyparsing_common.comma_separated_list`.
+"""
+
+# some other useful expressions - using lower-case class name since we are really using this as a namespace
+class pyparsing_common:
+    """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>`
+
+    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')]
+    """
+
+    convertToInteger = tokenMap(int)
+    """
+    Parse action for converting parsed integers to Python int
+    """
+
+    convertToFloat = tokenMap(float)
+    """
+    Parse action for converting parsed numbers to Python float
+    """
+
+    integer = Word(nums).setName("integer").setParseAction(convertToInteger)
+    """expression that parses an unsigned integer, returns an int"""
+
+    hex_integer = Word(hexnums).setName("hex integer").setParseAction(tokenMap(int,16))
+    """expression that parses a hexadecimal integer, returns an int"""
+
+    signed_integer = Regex(r'[+-]?\d+').setName("signed integer").setParseAction(convertToInteger)
+    """expression that parses an integer with optional leading sign, returns an int"""
+
+    fraction = (signed_integer().setParseAction(convertToFloat) + '/' + signed_integer().setParseAction(convertToFloat)).setName("fraction")
+    """fractional expression of an integer divided by an integer, returns a float"""
+    fraction.addParseAction(lambda t: t[0]/t[-1])
+
+    mixed_integer = (fraction | signed_integer + Optional(Optional('-').suppress() + fraction)).setName("fraction or mixed integer-fraction")
+    """mixed integer of the form 'integer - fraction', with optional leading integer, returns float"""
+    mixed_integer.addParseAction(sum)
+
+    real = Regex(r'[+-]?\d+\.\d*').setName("real number").setParseAction(convertToFloat)
+    """expression that parses a floating point number and returns a float"""
+
+    sci_real = Regex(r'[+-]?\d+([eE][+-]?\d+|\.\d*([eE][+-]?\d+)?)').setName("real number with scientific notation").setParseAction(convertToFloat)
+    """expression that parses a floating point number with optional
+    scientific notation and returns a float"""
+
+    # streamlining this expression makes the docs nicer-looking
+    number = (sci_real | real | signed_integer).streamline()
+    """any numeric expression, returns the corresponding Python type"""
+
+    fnumber = Regex(r'[+-]?\d+\.?\d*([eE][+-]?\d+)?').setName("fnumber").setParseAction(convertToFloat)
+    """any int or real number, returned as float"""
+
+    identifier = Word(alphas+'_', alphanums+'_').setName("identifier")
+    """typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')"""
+
+    ipv4_address = Regex(r'(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}').setName("IPv4 address")
+    "IPv4 address (``0.0.0.0 - 255.255.255.255``)"
+
+    _ipv6_part = Regex(r'[0-9a-fA-F]{1,4}').setName("hex_integer")
+    _full_ipv6_address = (_ipv6_part + (':' + _ipv6_part)*7).setName("full IPv6 address")
+    _short_ipv6_address = (Optional(_ipv6_part + (':' + _ipv6_part)*(0,6)) + "::" + Optional(_ipv6_part + (':' + _ipv6_part)*(0,6))).setName("short IPv6 address")
+    _short_ipv6_address.addCondition(lambda t: sum(1 for tt in t if pyparsing_common._ipv6_part.matches(tt)) < 8)
+    _mixed_ipv6_address = ("::ffff:" + ipv4_address).setName("mixed IPv6 address")
+    ipv6_address = Combine((_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).setName("IPv6 address")).setName("IPv6 address")
+    "IPv6 address (long, short, or mixed form)"
+
+    mac_address = Regex(r'[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}').setName("MAC address")
+    "MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)"
+
+    @staticmethod
+    def convertToDate(fmt="%Y-%m-%d"):
+        """
+        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)]
+        """
+        def cvt_fn(s,l,t):
+            try:
+                return datetime.strptime(t[0], fmt).date()
+            except ValueError as ve:
+                raise ParseException(s, l, str(ve))
+        return cvt_fn
+
+    @staticmethod
+    def convertToDatetime(fmt="%Y-%m-%dT%H:%M:%S.%f"):
+        """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)]
+        """
+        def cvt_fn(s,l,t):
+            try:
+                return datetime.strptime(t[0], fmt)
+            except ValueError as ve:
+                raise ParseException(s, l, str(ve))
+        return cvt_fn
+
+    iso8601_date = Regex(r'(?P<year>\d{4})(?:-(?P<month>\d\d)(?:-(?P<day>\d\d))?)?').setName("ISO8601 date")
+    "ISO8601 date (``yyyy-mm-dd``)"
+
+    iso8601_datetime = Regex(r'(?P<year>\d{4})-(?P<month>\d\d)-(?P<day>\d\d)[T ](?P<hour>\d\d):(?P<minute>\d\d)(:(?P<second>\d\d(\.\d*)?)?)?(?P<tz>Z|[+-]\d\d:?\d\d)?').setName("ISO8601 datetime")
+    "ISO8601 datetime (``yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)``) - trailing seconds, milliseconds, and timezone optional; accepts separating ``'T'`` or ``' '``"
+
+    uuid = Regex(r'[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}').setName("UUID")
+    "UUID (``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx``)"
+
+    _html_stripper = anyOpenTag.suppress() | anyCloseTag.suppress()
+    @staticmethod
+    def stripHTMLTags(s, l, tokens):
+        """Parse action to remove HTML tags from web page HTML source
+
+        Example::
+
+            # strip HTML links from normal text
+            text = '<td>More info at the <a href="https://github.com/pyparsing/pyparsing/wiki">pyparsing</a> wiki page</td>'
+            td,td_end = makeHTMLTags("TD")
+            table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end
+            print(table_text.parseString(text).body)
+
+        Prints::
+
+            More info at the pyparsing wiki page
+        """
+        return pyparsing_common._html_stripper.transformString(tokens[0])
+
+    _commasepitem = Combine(OneOrMore(~Literal(",") + ~LineEnd() + Word(printables, excludeChars=',')
+                                        + Optional( White(" \t") ) ) ).streamline().setName("commaItem")
+    comma_separated_list = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("comma separated list")
+    """Predefined expression of 1 or more printable words or quoted strings, separated by commas."""
+
+    upcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).upper()))
+    """Parse action to convert tokens to upper case."""
+
+    downcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).lower()))
+    """Parse action to convert tokens to lower case."""
+
+
+class _lazyclassproperty(object):
+    def __init__(self, fn):
+        self.fn = fn
+        self.__doc__ = fn.__doc__
+        self.__name__ = fn.__name__
+
+    def __get__(self, obj, cls):
+        if cls is None:
+            cls = type(obj)
+        if not hasattr(cls, '_intern') or any(cls._intern is getattr(superclass, '_intern', []) for superclass in cls.__mro__[1:]):
+            cls._intern = {}
+        attrname = self.fn.__name__
+        if attrname not in cls._intern:
+            cls._intern[attrname] = self.fn(cls)
+        return cls._intern[attrname]
+
+
+class unicode_set(object):
+    """
+    A set of Unicode characters, for language-specific strings for
+    ``alphas``, ``nums``, ``alphanums``, and ``printables``.
+    A unicode_set is defined by a list of ranges in the Unicode character
+    set, in a class attribute ``_ranges``, such as::
+
+        _ranges = [(0x0020, 0x007e), (0x00a0, 0x00ff),]
+
+    A unicode set can also be defined using multiple inheritance of other unicode sets::
+
+        class CJK(Chinese, Japanese, Korean):
+            pass
+    """
+    _ranges = []
+
+    @classmethod
+    def _get_chars_for_ranges(cls):
+        ret = []
+        for cc in cls.__mro__:
+            if cc is unicode_set:
+                break
+            for rr in cc._ranges:
+                ret.extend(range(rr[0], rr[-1]+1))
+        return [unichr(c) for c in sorted(set(ret))]
+
+    @_lazyclassproperty
+    def printables(cls):
+        "all non-whitespace characters in this range"
+        return u''.join(filterfalse(unicode.isspace, cls._get_chars_for_ranges()))
+
+    @_lazyclassproperty
+    def alphas(cls):
+        "all alphabetic characters in this range"
+        return u''.join(filter(unicode.isalpha, cls._get_chars_for_ranges()))
+
+    @_lazyclassproperty
+    def nums(cls):
+        "all numeric digit characters in this range"
+        return u''.join(filter(unicode.isdigit, cls._get_chars_for_ranges()))
+
+    @_lazyclassproperty
+    def alphanums(cls):
+        "all alphanumeric characters in this range"
+        return cls.alphas + cls.nums
+
+
+class pyparsing_unicode(unicode_set):
+    """
+    A namespace class for defining common language unicode_sets.
+    """
+    _ranges = [(32, sys.maxunicode)]
+
+    class Latin1(unicode_set):
+        "Unicode set for Latin-1 Unicode Character Range"
+        _ranges = [(0x0020, 0x007e), (0x00a0, 0x00ff),]
+
+    class LatinA(unicode_set):
+        "Unicode set for Latin-A Unicode Character Range"
+        _ranges = [(0x0100, 0x017f),]
+
+    class LatinB(unicode_set):
+        "Unicode set for Latin-B Unicode Character Range"
+        _ranges = [(0x0180, 0x024f),]
+
+    class Greek(unicode_set):
+        "Unicode set for Greek Unicode Character Ranges"
+        _ranges = [
+            (0x0370, 0x03ff), (0x1f00, 0x1f15), (0x1f18, 0x1f1d), (0x1f20, 0x1f45), (0x1f48, 0x1f4d),
+            (0x1f50, 0x1f57), (0x1f59,), (0x1f5b,), (0x1f5d,), (0x1f5f, 0x1f7d), (0x1f80, 0x1fb4), (0x1fb6, 0x1fc4),
+            (0x1fc6, 0x1fd3), (0x1fd6, 0x1fdb), (0x1fdd, 0x1fef), (0x1ff2, 0x1ff4), (0x1ff6, 0x1ffe),
+        ]
+
+    class Cyrillic(unicode_set):
+        "Unicode set for Cyrillic Unicode Character Range"
+        _ranges = [(0x0400, 0x04ff)]
+
+    class Chinese(unicode_set):
+        "Unicode set for Chinese Unicode Character Range"
+        _ranges = [(0x4e00, 0x9fff), (0x3000, 0x303f), ]
+
+    class Japanese(unicode_set):
+        "Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana ranges"
+        _ranges = [ ]
+
+        class Kanji(unicode_set):
+            "Unicode set for Kanji Unicode Character Range"
+            _ranges = [(0x4E00, 0x9Fbf), (0x3000, 0x303f), ]
+
+        class Hiragana(unicode_set):
+            "Unicode set for Hiragana Unicode Character Range"
+            _ranges = [(0x3040, 0x309f), ]
+
+        class Katakana(unicode_set):
+            "Unicode set for Katakana  Unicode Character Range"
+            _ranges = [(0x30a0, 0x30ff), ]
+
+    class Korean(unicode_set):
+        "Unicode set for Korean Unicode Character Range"
+        _ranges = [(0xac00, 0xd7af), (0x1100, 0x11ff), (0x3130, 0x318f), (0xa960, 0xa97f), (0xd7b0, 0xd7ff), (0x3000, 0x303f), ]
+
+    class CJK(Chinese, Japanese, Korean):
+        "Unicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character Range"
+        pass
+
+    class Thai(unicode_set):
+        "Unicode set for Thai Unicode Character Range"
+        _ranges = [(0x0e01, 0x0e3a), (0x0e3f, 0x0e5b), ]
+
+    class Arabic(unicode_set):
+        "Unicode set for Arabic Unicode Character Range"
+        _ranges = [(0x0600, 0x061b), (0x061e, 0x06ff), (0x0700, 0x077f), ]
+
+    class Hebrew(unicode_set):
+        "Unicode set for Hebrew Unicode Character Range"
+        _ranges = [(0x0590, 0x05ff), ]
+
+    class Devanagari(unicode_set):
+        "Unicode set for Devanagari Unicode Character Range"
+        _ranges = [(0x0900, 0x097f), (0xa8e0, 0xa8ff)]
+
+pyparsing_unicode.Japanese._ranges = (pyparsing_unicode.Japanese.Kanji._ranges
+                                      + pyparsing_unicode.Japanese.Hiragana._ranges
+                                      + pyparsing_unicode.Japanese.Katakana._ranges)
+
+# define ranges in language character sets
+if PY_3:
+    setattr(pyparsing_unicode, "العربية", pyparsing_unicode.Arabic)
+    setattr(pyparsing_unicode, "中文", pyparsing_unicode.Chinese)
+    setattr(pyparsing_unicode, "кириллица", pyparsing_unicode.Cyrillic)
+    setattr(pyparsing_unicode, "Ελληνικά", pyparsing_unicode.Greek)
+    setattr(pyparsing_unicode, "עִברִית", pyparsing_unicode.Hebrew)
+    setattr(pyparsing_unicode, "日本語", pyparsing_unicode.Japanese)
+    setattr(pyparsing_unicode.Japanese, "漢字", pyparsing_unicode.Japanese.Kanji)
+    setattr(pyparsing_unicode.Japanese, "カタカナ", pyparsing_unicode.Japanese.Katakana)
+    setattr(pyparsing_unicode.Japanese, "ひらがな", pyparsing_unicode.Japanese.Hiragana)
+    setattr(pyparsing_unicode, "한국어", pyparsing_unicode.Korean)
+    setattr(pyparsing_unicode, "ไทย", pyparsing_unicode.Thai)
+    setattr(pyparsing_unicode, "देवनागरी", pyparsing_unicode.Devanagari)
+
+
+if __name__ == "__main__":
+
+    selectToken    = CaselessLiteral("select")
+    fromToken      = CaselessLiteral("from")
+
+    ident          = Word(alphas, alphanums + "_$")
+
+    columnName     = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens)
+    columnNameList = Group(delimitedList(columnName)).setName("columns")
+    columnSpec     = ('*' | columnNameList)
+
+    tableName      = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens)
+    tableNameList  = Group(delimitedList(tableName)).setName("tables")
+
+    simpleSQL      = selectToken("command") + columnSpec("columns") + fromToken + tableNameList("tables")
+
+    # demo runTests method, including embedded comments in test string
+    simpleSQL.runTests("""
+        # '*' as column list and dotted table name
+        select * from SYS.XYZZY
+
+        # caseless match on "SELECT", and casts back to "select"
+        SELECT * from XYZZY, ABC
+
+        # list of column names, and mixed case SELECT keyword
+        Select AA,BB,CC from Sys.dual
+
+        # multiple tables
+        Select A, B, C from Sys.dual, Table2
+
+        # invalid SELECT keyword - should fail
+        Xelect A, B, C from Sys.dual
+
+        # incomplete command - should fail
+        Select
+
+        # invalid column name - should fail
+        Select ^^^ frox Sys.dual
+
+        """)
+
+    pyparsing_common.number.runTests("""
+        100
+        -100
+        +100
+        3.14159
+        6.02e23
+        1e-12
+        """)
+
+    # any int or real number, returned as float
+    pyparsing_common.fnumber.runTests("""
+        100
+        -100
+        +100
+        3.14159
+        6.02e23
+        1e-12
+        """)
+
+    pyparsing_common.hex_integer.runTests("""
+        100
+        FF
+        """)
+
+    import uuid
+    pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID))
+    pyparsing_common.uuid.runTests("""
+        12345678-1234-5678-1234-567812345678
+        """)
diff --git a/pyparsingClassDiagram.JPG b/pyparsingClassDiagram.JPG
deleted file mode 100644 (file)
index ef10424..0000000
Binary files a/pyparsingClassDiagram.JPG and /dev/null differ
diff --git a/pyparsingClassDiagram.PNG b/pyparsingClassDiagram.PNG
deleted file mode 100644 (file)
index f59baaf..0000000
Binary files a/pyparsingClassDiagram.PNG and /dev/null differ
index 51b5f83b3da1c73c4f95d2f3324918ad9de75958..163eba3165f1afa5161e7c1c1d77d4ad1c23763b 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -7,4 +7,5 @@ license_file = LICENSE
 [egg_info]
 tag_build = 
 tag_date = 0
+tag_svn_revision = 0
 
index 5e5c69a40d54d18355715cead268a45d5951926c..89ad68b0f0964a7ce0feb90bc67839fa68f647ac 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -2,18 +2,9 @@
 \r
 """Setup script for the pyparsing module distribution."""\r
 \r
-# Setuptools depends on pyparsing (via packaging) as of version 34, so allow\r
-# installing without it to avoid bootstrap problems.\r
-try:\r
-    from setuptools import setup\r
-except ImportError:\r
-    from distutils.core import setup\r
-\r
-import sys\r
-import os\r
-\r
+from setuptools import setup\r
 from pyparsing import __version__ as pyparsing_version\r
-    \r
+\r
 modules = ["pyparsing",]\r
 \r
 setup(# Distribution meta-data\r
diff --git a/simple_unit_tests.py b/simple_unit_tests.py
new file mode 100644 (file)
index 0000000..f13ff07
--- /dev/null
@@ -0,0 +1,422 @@
+#
+# simple_unit_tests.py
+#
+# While these unit tests *do* perform low-level unit testing of the classes in pyparsing,
+# this testing module should also serve an instructional purpose, to clearly show simple passing
+# and failing parse cases of some basic pyparsing expressions.
+#
+# Copyright (c) 2018  Paul T. McGuire
+#
+from __future__ import division
+
+try:
+    import unittest2 as unittest
+except ImportError:
+    import unittest
+import pyparsing as pp
+from collections import namedtuple
+from datetime import datetime
+
+# Test spec data class for specifying simple pyparsing test cases
+PpTestSpec = namedtuple("PpTestSpec", "desc expr text parse_fn "
+                                      "expected_list expected_dict expected_fail_locn")
+PpTestSpec.__new__.__defaults__ = ('', pp.Empty(), '', 'parseString', None, None, None)
+
+
+class PyparsingExpressionTestCase(unittest.TestCase):
+    """
+    Base pyparsing testing class to parse various pyparsing expressions against
+    given text strings. Subclasses must define a class attribute 'tests' which
+    is a list of PpTestSpec instances.
+    """
+    tests = []
+    def runTest(self):
+        if self.__class__ is PyparsingExpressionTestCase:
+            return
+
+        for test_spec in self.tests:
+            # for each spec in the class's tests list, create a subtest
+            # that will either:
+            #  - parse the string with expected success, display the
+            #    results, and validate the returned ParseResults
+            #  - or parse the string with expected failure, display the
+            #    error message and mark the error location, and validate
+            #    the location against an expected value
+            with self.subTest(test_spec=test_spec):
+                test_spec.expr.streamline()
+                print("\n{} - {}({})".format(test_spec.desc,
+                                             type(test_spec.expr).__name__,
+                                             test_spec.expr))
+
+                parsefn = getattr(test_spec.expr, test_spec.parse_fn)
+                if test_spec.expected_fail_locn is None:
+                    # expect success
+                    result = parsefn(test_spec.text)
+                    if test_spec.parse_fn == 'parseString':
+                        print(result.dump())
+                        # compare results against given list and/or dict
+                        if test_spec.expected_list is not None:
+                            self.assertEqual(result.asList(), test_spec.expected_list)
+                        if test_spec.expected_dict is not None:
+                            self.assertEqual(result.asDict(), test_spec.expected_dict)
+                    elif test_spec.parse_fn == 'transformString':
+                        print(result)
+                        # compare results against given list and/or dict
+                        if test_spec.expected_list is not None:
+                            self.assertEqual([result], test_spec.expected_list)
+                    elif test_spec.parse_fn == 'searchString':
+                        print(result)
+                        # compare results against given list and/or dict
+                        if test_spec.expected_list is not None:
+                            self.assertEqual([result], test_spec.expected_list)
+
+                else:
+                    # expect fail
+                    try:
+                        parsefn(test_spec.text)
+                    except Exception as exc:
+                        print(pp.ParseException.explain(exc))
+                        self.assertEqual(exc.loc, test_spec.expected_fail_locn)
+                    else:
+                        self.assertTrue(False, "failed to raise expected exception")
+
+
+#=========== TEST DEFINITIONS START HERE ==============
+
+class TestLiteral(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Simple match",
+            expr = pp.Literal("xyz"),
+            text = "xyz",
+            expected_list = ["xyz"],
+        ),
+        PpTestSpec(
+            desc = "Simple match after skipping whitespace",
+            expr = pp.Literal("xyz"),
+            text = "  xyz",
+            expected_list = ["xyz"],
+        ),
+        PpTestSpec(
+            desc = "Simple fail - parse an empty string",
+            expr = pp.Literal("xyz"),
+            text = "",
+            expected_fail_locn = 0,
+        ),
+        PpTestSpec(
+            desc = "Simple fail - parse a mismatching string",
+            expr = pp.Literal("xyz"),
+            text = "xyu",
+            expected_fail_locn = 0,
+        ),
+        PpTestSpec(
+            desc = "Simple fail - parse a partially matching string",
+            expr = pp.Literal("xyz"),
+            text = "xy",
+            expected_fail_locn = 0,
+        ),
+        PpTestSpec(
+            desc = "Fail - parse a partially matching string by matching individual letters",
+            expr =  pp.Literal("x") + pp.Literal("y") + pp.Literal("z"),
+            text = "xy",
+            expected_fail_locn = 2,
+        ),
+    ]
+
+class TestCaselessLiteral(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Match colors, converting to consistent case",
+            expr = pp.OneOrMore(pp.CaselessLiteral("RED") | pp.CaselessLiteral("GREEN") | pp.CaselessLiteral("BLUE")),
+            text = "red Green BluE blue GREEN green rEd",
+            expected_list = ['RED', 'GREEN', 'BLUE', 'BLUE', 'GREEN', 'GREEN', 'RED'],
+        ),
+    ]
+
+class TestWord(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Simple Word match",
+            expr = pp.Word("xy"),
+            text = "xxyxxyy",
+            expected_list = ["xxyxxyy"],
+        ),
+        PpTestSpec(
+            desc = "Simple Word match of two separate Words",
+            expr = pp.Word("x") + pp.Word("y"),
+            text = "xxxxxyy",
+            expected_list = ["xxxxx", "yy"],
+        ),
+        PpTestSpec(
+            desc = "Simple Word match of two separate Words - implicitly skips whitespace",
+            expr = pp.Word("x") + pp.Word("y"),
+            text = "xxxxx yy",
+            expected_list = ["xxxxx", "yy"],
+        ),
+    ]
+
+class TestRepetition(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Match several words",
+            expr = pp.OneOrMore(pp.Word("x") | pp.Word("y")),
+            text = "xxyxxyyxxyxyxxxy",
+            expected_list = ['xx', 'y', 'xx', 'yy', 'xx', 'y', 'x', 'y', 'xxx', 'y'],
+        ),
+        PpTestSpec(
+            desc = "Match several words, skipping whitespace",
+            expr = pp.OneOrMore(pp.Word("x") | pp.Word("y")),
+            text = "x x  y xxy yxx y xyx  xxy",
+            expected_list = ['x', 'x', 'y', 'xx', 'y', 'y', 'xx', 'y', 'x', 'y', 'x', 'xx', 'y'],
+        ),
+        PpTestSpec(
+            desc = "Match words and numbers - show use of results names to collect types of tokens",
+            expr = pp.OneOrMore(pp.Word(pp.alphas)("alpha*") | pp.pyparsing_common.integer("int*")),
+            text = "sdlfj23084ksdfs08234kjsdlfkjd0934",
+            expected_list = ['sdlfj', 23084, 'ksdfs', 8234, 'kjsdlfkjd', 934],
+            expected_dict = { 'alpha': ['sdlfj', 'ksdfs', 'kjsdlfkjd'], 'int': [23084, 8234, 934] }
+        ),
+        PpTestSpec(
+            desc = "Using delimitedList (comma is the default delimiter)",
+            expr = pp.delimitedList(pp.Word(pp.alphas)),
+            text = "xxyx,xy,y,xxyx,yxx, xy",
+            expected_list = ['xxyx', 'xy', 'y', 'xxyx', 'yxx', 'xy'],
+        ),
+        PpTestSpec(
+            desc = "Using delimitedList, with ':' delimiter",
+            expr = pp.delimitedList(pp.Word(pp.hexnums, exact=2), delim=':', combine=True),
+            text = "0A:4B:73:21:FE:76",
+            expected_list = ['0A:4B:73:21:FE:76'],
+        ),
+    ]
+
+class TestResultsName(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Match with results name",
+            expr = pp.Literal("xyz").setResultsName("value"),
+            text = "xyz",
+            expected_dict = {'value': 'xyz'},
+            expected_list = ['xyz'],
+        ),
+        PpTestSpec(
+            desc = "Match with results name - using naming short-cut",
+            expr = pp.Literal("xyz")("value"),
+            text = "xyz",
+            expected_dict = {'value': 'xyz'},
+            expected_list = ['xyz'],
+        ),
+        PpTestSpec(
+            desc = "Define multiple results names",
+            expr = pp.Word(pp.alphas, pp.alphanums)("key") + '=' + pp.pyparsing_common.integer("value"),
+            text = "range=5280",
+            expected_dict = {'key': 'range', 'value': 5280},
+            expected_list = ['range', '=', 5280],
+        ),
+    ]
+
+class TestGroups(PyparsingExpressionTestCase):
+    EQ = pp.Suppress('=')
+    tests = [
+        PpTestSpec(
+            desc = "Define multiple results names in groups",
+            expr = pp.OneOrMore(pp.Group(pp.Word(pp.alphas)("key")
+                                          + EQ
+                                          + pp.pyparsing_common.number("value"))),
+            text = "range=5280 long=-138.52 lat=46.91",
+            expected_list = [['range', 5280], ['long', -138.52], ['lat', 46.91]],
+        ),
+        PpTestSpec(
+            desc = "Define multiple results names in groups - use Dict to define results names using parsed keys",
+            expr = pp.Dict(pp.OneOrMore(pp.Group(pp.Word(pp.alphas)
+                                          + EQ
+                                          + pp.pyparsing_common.number))),
+            text = "range=5280 long=-138.52 lat=46.91",
+            expected_list = [['range', 5280], ['long', -138.52], ['lat', 46.91]],
+            expected_dict = {'lat': 46.91, 'long': -138.52, 'range': 5280}
+        ),
+        PpTestSpec(
+            desc = "Define multiple value types",
+            expr = pp.Dict(pp.OneOrMore(pp.Group(pp.Word(pp.alphas)
+                                          + EQ
+                                          + (pp.pyparsing_common.number | pp.oneOf("True False") | pp.QuotedString("'"))
+                                        ))),
+            text = "long=-122.47 lat=37.82 public=True name='Golden Gate Bridge'",
+            expected_list = [['long', -122.47], ['lat', 37.82], ['public', 'True'], ['name', 'Golden Gate Bridge']],
+            expected_dict = {'long': -122.47, 'lat': 37.82, 'public': 'True', 'name': 'Golden Gate Bridge'}
+        ),
+    ]
+
+class TestParseAction(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Match with numeric string converted to int",
+            expr = pp.Word("0123456789").addParseAction(lambda t: int(t[0])),
+            text = "12345",
+            expected_list = [12345],  # note - result is type int, not str
+        ),
+        PpTestSpec(
+            desc = "Use two parse actions to convert numeric string, then convert to datetime",
+            expr = pp.Word(pp.nums).addParseAction(lambda t: int(t[0]),
+                                                   lambda t: datetime.utcfromtimestamp(t[0])),
+            text = "1537415628",
+            expected_list = [datetime(2018, 9, 20, 3, 53, 48)],
+        ),
+        PpTestSpec(
+            desc = "Use tokenMap for parse actions that operate on a single-length token",
+            expr = pp.Word(pp.nums).addParseAction(pp.tokenMap(int),
+                                                   pp.tokenMap(datetime.utcfromtimestamp)),
+            text = "1537415628",
+            expected_list = [datetime(2018, 9, 20, 3, 53, 48)],
+        ),
+        PpTestSpec(
+            desc = "Using a built-in function that takes a sequence of strs as a parse action",
+            expr = pp.OneOrMore(pp.Word(pp.hexnums, exact=2)).addParseAction(':'.join),
+            text = "0A4B7321FE76",
+            expected_list = ['0A:4B:73:21:FE:76'],
+        ),
+        PpTestSpec(
+            desc = "Using a built-in function that takes a sequence of strs as a parse action",
+            expr = pp.OneOrMore(pp.Word(pp.hexnums, exact=2)).addParseAction(sorted),
+            text = "0A4B7321FE76",
+            expected_list = ['0A', '21', '4B', '73', '76', 'FE'],
+        ),
+    ]
+
+class TestResultsModifyingParseAction(PyparsingExpressionTestCase):
+    def compute_stats_parse_action(t):
+        # by the time this parse action is called, parsed numeric words
+        # have been converted to ints by a previous parse action, so
+        # they can be treated as ints
+        t['sum'] = sum(t)
+        t['ave'] = sum(t) / len(t)
+        t['min'] = min(t)
+        t['max'] = max(t)
+
+    tests = [
+        PpTestSpec(
+            desc = "A parse action that adds new key-values",
+            expr = pp.OneOrMore(pp.pyparsing_common.integer).addParseAction(compute_stats_parse_action),
+            text = "27 1 14 22 89",
+            expected_list = [27, 1, 14, 22, 89],
+            expected_dict = {'ave': 30.6, 'max': 89, 'min': 1, 'sum': 153}
+        ),
+    ]
+
+class TestParseCondition(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "Define a condition to only match numeric values that are multiples of 7",
+            expr = pp.OneOrMore(pp.Word(pp.nums).addCondition(lambda t: int(t[0]) % 7 == 0)),
+            text = "14 35 77 12 28",
+            expected_list = ['14', '35', '77'],
+        ),
+        PpTestSpec(
+            desc = "Separate conversion to int and condition into separate parse action/conditions",
+            expr = pp.OneOrMore(pp.Word(pp.nums).addParseAction(lambda t: int(t[0]))
+                                                 .addCondition(lambda t: t[0] % 7 == 0)),
+            text = "14 35 77 12 28",
+            expected_list = [14, 35, 77],
+        ),
+    ]
+
+class TestTransformStringUsingParseActions(PyparsingExpressionTestCase):
+    markup_convert_map = {
+        '*' : 'B',
+        '_' : 'U',
+        '/' : 'I',
+    }
+    def markup_convert(t):
+        htmltag = TestTransformStringUsingParseActions.markup_convert_map[t.markup_symbol]
+        return "<{}>{}</{}>".format(htmltag, t.body, htmltag)
+
+    tests = [
+        PpTestSpec(
+            desc = "Use transformString to convert simple markup to HTML",
+            expr = (pp.oneOf(markup_convert_map)('markup_symbol')
+                    + "(" + pp.CharsNotIn(")")('body') + ")").addParseAction(markup_convert),
+            text = "Show in *(bold), _(underscore), or /(italic) type",
+            expected_list = ['Show in <B>bold</B>, <U>underscore</U>, or <I>italic</I> type'],
+            parse_fn = 'transformString',
+        ),
+    ]
+
+class TestCommonHelperExpressions(PyparsingExpressionTestCase):
+    tests = [
+        PpTestSpec(
+            desc = "A comma-delimited list of words",
+            expr = pp.delimitedList(pp.Word(pp.alphas)),
+            text = "this, that, blah,foo,   bar",
+            expected_list = ['this', 'that', 'blah', 'foo', 'bar'],
+        ),
+        PpTestSpec(
+            desc = "A counted array of words",
+            expr = pp.OneOrMore(pp.countedArray(pp.Word('ab'))),
+            text = "2 aaa bbb 0 3 abab bbaa abbab",
+            expected_list = [['aaa', 'bbb'], [], ['abab', 'bbaa', 'abbab']],
+        ),
+        PpTestSpec(
+            desc = "skipping comments with ignore",
+            expr = (pp.pyparsing_common.identifier('lhs')
+                    + '='
+                    + pp.pyparsing_common.fnumber('rhs')).ignore(pp.cppStyleComment),
+            text = "abc_100 = /* value to be tested */ 3.1416",
+            expected_list = ['abc_100', '=', 3.1416],
+            expected_dict = {'lhs': 'abc_100', 'rhs': 3.1416},
+        ),
+        PpTestSpec(
+            desc = "some pre-defined expressions in pyparsing_common, and building a dotted identifier with delimted_list",
+            expr = (pp.pyparsing_common.number("id_num")
+                    + pp.delimitedList(pp.pyparsing_common.identifier, '.', combine=True)("name")
+                    + pp.pyparsing_common.ipv4_address("ip_address")
+                    ),
+            text = "1001 www.google.com 192.168.10.199",
+            expected_list = [1001, 'www.google.com', '192.168.10.199'],
+            expected_dict = {'id_num': 1001, 'name': 'www.google.com', 'ip_address': '192.168.10.199'},
+        ),
+        PpTestSpec(
+            desc = "using oneOf (shortcut for Literal('a') | Literal('b') | Literal('c'))",
+            expr = pp.OneOrMore(pp.oneOf("a b c")),
+            text = "a b a b b a c c a b b",
+            expected_list = ['a', 'b', 'a', 'b', 'b', 'a', 'c', 'c', 'a', 'b', 'b'],
+        ),
+        PpTestSpec(
+            desc = "parsing nested parentheses",
+            expr = pp.nestedExpr(),
+            text = "(a b (c) d (e f g ()))",
+            expected_list = [['a', 'b', ['c'], 'd', ['e', 'f', 'g', []]]],
+        ),
+        PpTestSpec(
+            desc = "parsing nested braces",
+            expr = (pp.Keyword('if')
+                    + pp.nestedExpr()('condition')
+                    + pp.nestedExpr('{', '}')('body')),
+            text = 'if ((x == y) || !z) {printf("{}");}',
+            expected_list = ['if', [['x', '==', 'y'], '||', '!z'], ['printf(', '"{}"', ');']],
+            expected_dict = {'condition': [[['x', '==', 'y'], '||', '!z']],
+                             'body': [['printf(', '"{}"', ');']]},
+        ),
+    ]
+
+
+#============ MAIN ================
+
+if __name__ == '__main__':
+    # we use unittest features that are in Py3 only, bail out if run on Py2
+    import sys
+    if sys.version_info[0] < 3:
+        print("simple_unit_tests.py runs on Python 3 only")
+        sys.exit(0)
+
+    import inspect
+    def get_decl_line_no(cls):
+        return inspect.getsourcelines(cls)[1]
+
+    # get all test case classes defined in this module and sort them by decl line no
+    test_case_classes = list(PyparsingExpressionTestCase.__subclasses__())
+    test_case_classes.sort(key=get_decl_line_no)
+
+    # make into a suite and run it - this will run the tests in the same order
+    # they are declared in this module
+    suite = unittest.TestSuite(cls() for cls in test_case_classes)
+    unittest.TextTestRunner().run(suite)
diff --git a/test/__init__.py b/test/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/__init__.pyc b/test/__init__.pyc
new file mode 100644 (file)
index 0000000..2bf2b94
Binary files /dev/null and b/test/__init__.pyc differ
diff --git a/test/__pycache__/__init__.cpython-35.pyc b/test/__pycache__/__init__.cpython-35.pyc
new file mode 100644 (file)
index 0000000..d00969f
Binary files /dev/null and b/test/__pycache__/__init__.cpython-35.pyc differ
diff --git a/test/__pycache__/jsonParserTests.cpython-35.pyc b/test/__pycache__/jsonParserTests.cpython-35.pyc
new file mode 100644 (file)
index 0000000..8ebb289
Binary files /dev/null and b/test/__pycache__/jsonParserTests.cpython-35.pyc differ
diff --git a/test/jsonParserTests.py b/test/jsonParserTests.py
new file mode 100644 (file)
index 0000000..61c6eb8
--- /dev/null
@@ -0,0 +1,359 @@
+# jsonParser.py\r
+#\r
+# Copyright (c) 2006, Paul McGuire\r
+#\r
+\r
+test1 = """\r
+{\r
+        "glossary": {\r
+            "title": "example glossary",\r
+                "GlossDiv": {\r
+                        "title": "S",\r
+                        "GlossList": [{\r
+                "ID": "SGML",\r
+                "SortAs": "SGML",\r
+                "GlossTerm": "Standard Generalized Markup Language",\r
+                "Acronym": "SGML",\r
+                "LargestPrimeLessThan100": 97,\r
+                "AvogadroNumber": 6.02E23,\r
+                "EvenPrimesGreaterThan2": null,\r
+                "PrimesLessThan10" : [2,3,5,7],\r
+                "WMDsFound" : false,\r
+                "IraqAlQaedaConnections" : null,\r
+                "Abbrev": "ISO 8879:1986",\r
+                "GlossDef":\r
+"A meta-markup language, used to create markup languages such as DocBook.",\r
+                "GlossSeeAlso": ["GML", "XML", "markup"],\r
+                "EmptyDict" : {},\r
+                "EmptyList" : []\r
+            }]\r
+        }\r
+    }\r
+}\r
+"""\r
+\r
+test2 = """\r
+{"menu": {\r
+  "id": "file",\r
+  "value": "File:",\r
+  "popup": {\r
+    "menuitem": [\r
+      {"value": "New", "onclick": "CreateNewDoc()"},\r
+      {"value": "Open", "onclick": "OpenDoc()"},\r
+      {"value": "Close", "onclick": "CloseDoc()"}\r
+    ]\r
+  }\r
+}}\r
+"""\r
+test3 = """\r
+{"widget": {\r
+    "debug": "on",\r
+    "window": {\r
+        "title": "Sample Konfabulator Widget",        "name": "main_window",        "width": 500,        "height": 500\r
+    },    "image": {\r
+        "src": "Images/Sun.png",\r
+        "name": "sun1",        "hOffset": 250,        "vOffset": 250,        "alignment": "center"\r
+    },    "text": {\r
+        "data": "Click Here",\r
+        "size": 36,\r
+        "style": "bold",        "name": "text1",        "hOffset": 250,        "vOffset": 100,        "alignment": "center",\r
+        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"\r
+    }\r
+}}\r
+"""\r
+test4 = """\r
+{"web-app": {\r
+  "servlet": [    // Defines the CDSServlet\r
+    {\r
+      "servlet-name": "cofaxCDS",\r
+      "servlet-class": "org.cofax.cds.CDSServlet",\r
+/*\r
+    Defines glossary variables that template designers\r
+    can use across the site.  You can add new\r
+    variables to this set by creating a new init-param, with\r
+    the param-name prefixed with "configGlossary:".\r
+*/\r
+      "init-param": {\r
+        "configGlossary:installationAt": "Philadelphia, PA",\r
+        "configGlossary:adminEmail": "ksm@pobox.com",\r
+        "configGlossary:poweredBy": "Cofax",\r
+        "configGlossary:poweredByIcon": "/images/cofax.gif",\r
+        "configGlossary:staticPath": "/content/static",\r
+/*\r
+    Defines the template loader and template processor\r
+    classes.  These are implementations of org.cofax.TemplateProcessor\r
+    and org.cofax.TemplateLoader respectively.  Simply create new\r
+    implementation of these classes and set them here if the default\r
+    implementations do not suit your needs.  Leave these alone\r
+    for the defaults.\r
+*/\r
+        "templateProcessorClass": "org.cofax.WysiwygTemplate",\r
+        "templateLoaderClass": "org.cofax.FilesTemplateLoader",\r
+        "templatePath": "templates",\r
+        "templateOverridePath": "",\r
+/*\r
+    Defines the names of the default templates to look for\r
+    when acquiring WYSIWYG templates.  Leave these at their\r
+    defaults for most usage.\r
+*/\r
+        "defaultListTemplate": "listTemplate.htm",\r
+        "defaultFileTemplate": "articleTemplate.htm",\r
+/*\r
+    New! useJSP switches on JSP template processing.\r
+    jspListTemplate and jspFileTemplate are the names\r
+    of the default templates to look for when aquiring JSP\r
+    templates.  Cofax currently in production at KR has useJSP\r
+    set to false, since our sites currently use WYSIWYG\r
+    templating exclusively.\r
+*/\r
+        "useJSP": false,\r
+        "jspListTemplate": "listTemplate.jsp",\r
+        "jspFileTemplate": "articleTemplate.jsp",\r
+/*\r
+    Defines the packageTag cache.  This cache keeps\r
+    Cofax from needing to interact with the database\r
+    to look up packageTag commands.\r
+*/\r
+        "cachePackageTagsTrack": 200,\r
+        "cachePackageTagsStore": 200,\r
+        "cachePackageTagsRefresh": 60,\r
+/*\r
+    Defines the template cache.  Keeps Cofax from needing\r
+    to go to the file system to load a raw template from\r
+    the file system.\r
+*/\r
+        "cacheTemplatesTrack": 100,\r
+        "cacheTemplatesStore": 50,\r
+        "cacheTemplatesRefresh": 15,\r
+/*\r
+    Defines the page cache.  Keeps Cofax from processing\r
+    templates to deliver to users.\r
+*/\r
+        "cachePagesTrack": 200,\r
+        "cachePagesStore": 100,\r
+        "cachePagesRefresh": 10,\r
+        "cachePagesDirtyRead": 10,\r
+/*\r
+    Defines the templates Cofax will use when\r
+    being browsed by a search engine identified in\r
+    searchEngineRobotsDb\r
+*/\r
+        "searchEngineListTemplate": "forSearchEnginesList.htm",\r
+        "searchEngineFileTemplate": "forSearchEngines.htm",\r
+        "searchEngineRobotsDb": "WEB-INF/robots.db",\r
+/*\r
+    New!  useDataStore enables/disables the Cofax database pool\r
+*/\r
+        "useDataStore": true,\r
+/*\r
+    Defines the implementation of org.cofax.DataStore that Cofax\r
+    will use.  If this DataStore class does not suit your needs\r
+    simply implement a new DataStore class and set here.\r
+*/\r
+        "dataStoreClass": "org.cofax.SqlDataStore",\r
+/*\r
+    Defines the implementation of org.cofax.Redirection that\r
+    Cofax will use.  If this Redirection class does not suit\r
+    your needs simply implenet a new Redirection class\r
+    and set here.\r
+*/\r
+        "redirectionClass": "org.cofax.SqlRedirection",\r
+/*\r
+    Defines the data store name.   Keep this at the default\r
+*/\r
+        "dataStoreName": "cofax",\r
+/*\r
+    Defines the JDBC driver that Cofax's database pool will use\r
+*/\r
+        "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",\r
+/*\r
+    Defines the JDBC connection URL to connect to the database\r
+*/\r
+        "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",\r
+/*\r
+    Defines the user name to connect to the database\r
+*/\r
+        "dataStoreUser": "sa",\r
+/*\r
+    Defines the password to connect to the database\r
+*/\r
+        "dataStorePassword": "dataStoreTestQuery",\r
+/*\r
+    A query that will run to test the validity of the\r
+    connection in the pool.\r
+*/\r
+        "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",\r
+/*\r
+    A log file to print out database information\r
+*/\r
+        "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",\r
+/*\r
+    The number of connection to initialize on startup\r
+*/\r
+        "dataStoreInitConns": 10,\r
+/*\r
+    The maximum number of connection to use in the pool\r
+*/\r
+        "dataStoreMaxConns": 100,\r
+/*\r
+    The number of times a connection will be utilized from the\r
+    pool before disconnect\r
+*/\r
+        "dataStoreConnUsageLimit": 100,\r
+/*\r
+    The level of information to print to the log\r
+*/\r
+        "dataStoreLogLevel": "debug",\r
+/*\r
+    The maximum URL length allowable by the CDS Servlet\r
+    Helps to prevent hacking\r
+*/\r
+        "maxUrlLength": 500}},\r
+/*\r
+    Defines the Email Servlet\r
+*/\r
+    {\r
+      "servlet-name": "cofaxEmail",\r
+      "servlet-class": "org.cofax.cds.EmailServlet",\r
+      "init-param": {\r
+/*\r
+    The mail host to be used by the mail servlet\r
+*/\r
+        "mailHost": "mail1",\r
+/*\r
+    An override\r
+*/\r
+        "mailHostOverride": "mail2"}},\r
+/*\r
+    Defines the Admin Servlet - used to refresh cache on\r
+    demand and see statistics\r
+*/\r
+    {\r
+      "servlet-name": "cofaxAdmin",\r
+      "servlet-class": "org.cofax.cds.AdminServlet"},\r
+/*\r
+    Defines the File Servlet - used to display files like Apache\r
+*/\r
+    {\r
+      "servlet-name": "fileServlet",\r
+      "servlet-class": "org.cofax.cds.FileServlet"},\r
+    {\r
+      "servlet-name": "cofaxTools",\r
+      "servlet-class": "org.cofax.cms.CofaxToolsServlet",\r
+      "init-param": {\r
+/*\r
+    Path to the template folder relative to the tools tomcat installation.\r
+*/\r
+        "templatePath": "toolstemplates/",\r
+/*\r
+    Logging boolean 1 = on, 0 = off\r
+*/\r
+        "log": 1,\r
+/*\r
+    Location of log. If empty, log will be written System.out\r
+*/\r
+        "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",\r
+/*\r
+    Max size of log in BITS. If size is empty, no limit to log.\r
+    If size is defined, log will be overwritten upon reaching defined size.\r
+*/\r
+        "logMaxSize": "",\r
+/*\r
+    DataStore logging boolean 1 = on, 0 = off\r
+*/\r
+        "dataLog": 1,\r
+/*\r
+    DataStore location of log. If empty, log will be written System.out\r
+*/\r
+        "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",\r
+/*\r
+    Max size of log in BITS. If size is empty, no limit to log.\r
+    If size is defined, log will be overwritten upon reaching defined size.\r
+*/\r
+        "dataLogMaxSize": "",\r
+/*\r
+    Http string relative to server root to call for page cache\r
+    removal to Cofax Servlet.\r
+*/\r
+        "removePageCache": "/content/admin/remove?cache=pages&id=",\r
+/*\r
+    Http string relative to server root to call for template\r
+    cache removal to Cofax Servlet.\r
+*/\r
+        "removeTemplateCache": "/content/admin/remove?cache=templates&id=",\r
+/*\r
+    Location of folder from root of drive that will be used for\r
+    ftp transfer from beta server or user hard drive to live servers.\r
+    Note that Edit Article will not function without this variable\r
+    set correctly. MultiPart request relies upon access to this folder.\r
+*/\r
+        "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",\r
+/*\r
+    Defines whether the Server should look in another path for\r
+    config files or variables.\r
+*/\r
+        "lookInContext": 1,\r
+/*\r
+    Number of the ID of the top level administration group in tblPermGroups.\r
+*/\r
+        "adminGroupID": 4,\r
+/*\r
+    Is the tools app running on  the 'beta server'.\r
+*/\r
+        "betaServer": true}}],\r
+  "servlet-mapping": {\r
+/*\r
+    URL mapping for the CDS Servlet\r
+*/\r
+     "cofaxCDS": "/",\r
+/*\r
+    URL mapping for the Email Servlet\r
+*/\r
+     "cofaxEmail": "/cofaxutil/aemail/*",\r
+/*\r
+    URL mapping for the Admin servlet\r
+*/\r
+     "cofaxAdmin": "/admin/*",\r
+/*\r
+    URL mapping for the Files servlet\r
+*/\r
+     "fileServlet": "/static/*",\r
+     "cofaxTools": "/tools/*"},\r
+/*\r
+    New! The cofax taglib descriptor file\r
+*/\r
+  "taglib": {\r
+    "taglib-uri": "cofax.tld",\r
+    "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}\r
+\r
+"""\r
+\r
+test5 = """\r
+{"menu": {\r
+    "header": "SVG Viewer",\r
+    "items": [\r
+        {"id": "Open"},\r
+        {"id": "OpenNew", "label": "Open New"},\r
+        null,\r
+        {"id": "ZoomIn", "label": "Zoom In"},\r
+        {"id": "ZoomOut", "label": "Zoom Out"},\r
+        {"id": "OriginalView", "label": "Original View"},\r
+        null,\r
+        {"id": "Quality"},\r
+        {"id": "Pause"},\r
+        {"id": "Mute"},\r
+        null,\r
+        {"id": "Find", "label": "Find..."},\r
+        {"id": "FindAgain", "label": "Find Again"},\r
+        {"id": "Copy"},\r
+        {"id": "CopyAgain", "label": "Copy Again"},\r
+        {"id": "CopySVG", "label": "Copy SVG"},\r
+        {"id": "ViewSVG", "label": "View SVG"},\r
+        {"id": "ViewSource", "label": "View Source"},\r
+        {"id": "SaveAs", "label": "Save As"},\r
+        null,\r
+        {"id": "Help"},\r
+        {"id": "About", "label": "About Adobe CVG Viewer..."}\r
+    ]\r
+}}\r
+"""\r
diff --git a/test/jsonParserTests.pyc b/test/jsonParserTests.pyc
new file mode 100644 (file)
index 0000000..7bb8c34
Binary files /dev/null and b/test/jsonParserTests.pyc differ
diff --git a/test/karthik.ini b/test/karthik.ini
new file mode 100644 (file)
index 0000000..785d0ea
--- /dev/null
@@ -0,0 +1,14 @@
+[users]\r
+source_dir = '/home/karthik/Projects/python'\r
+data_dir   = '/home/karthik/Projects/data'\r
+result_dir = '/home/karthik/Projects/Results'\r
+param_file = $result_dir/param_file\r
+res_file   = $result_dir/result_file\r
+comment    = 'this is a comment'\r
+; a line starting with ';' is a comment\r
+K = 8\r
+simulate_K = 0\r
+N = 4000\r
+mod_scheme = 'QPSK'\r
+\r
+Na = K+2
\ No newline at end of file
diff --git a/test/parsefiletest_input_file.txt b/test/parsefiletest_input_file.txt
new file mode 100644 (file)
index 0000000..022837a
--- /dev/null
@@ -0,0 +1 @@
+123 456 789
\ No newline at end of file
diff --git a/unitTests.py b/unitTests.py
new file mode 100644 (file)
index 0000000..14cfe22
--- /dev/null
@@ -0,0 +1,4205 @@
+# -*- coding: utf-8 -*-
+#
+# unitTests.py
+#
+# Unit tests for pyparsing module
+#
+# Copyright 2002-2018, Paul McGuire
+#
+#
+from __future__ import division
+
+from unittest import TestCase, TestSuite, TextTestRunner
+import datetime
+from pyparsing import ParseException
+import pyparsing as pp
+
+import sys
+
+PY_3 = sys.version.startswith('3')
+if PY_3:
+    import builtins
+    print_ = getattr(builtins, "print")
+
+    # catch calls to builtin print(), should be print_
+    def printX(*args, **kwargs):
+        raise Exception("Test coding error: using print() directly, should use print_()")
+    globals()['print'] = printX
+
+    from io import StringIO
+else:
+    def _print(*args, **kwargs):
+        if 'end' in kwargs:
+            sys.stdout.write(' '.join(map(str,args)) + kwargs['end'])
+        else:
+            sys.stdout.write(' '.join(map(str,args)) + '\n')
+    print_ = _print
+    from cStringIO import StringIO
+
+
+# see which Python implementation we are running
+CPYTHON_ENV = (sys.platform == "win32")
+IRON_PYTHON_ENV = (sys.platform == "cli")
+JYTHON_ENV = sys.platform.startswith("java")
+
+TEST_USING_PACKRAT = True
+#~ TEST_USING_PACKRAT = False
+
+VERBOSE = True
+
+# simple utility for flattening nested lists
+def flatten(L):
+    if type(L) is not list: return [L]
+    if L == []: return L
+    return flatten(L[0]) + flatten(L[1:])
+
+"""
+class ParseTest(TestCase):
+    def setUp(self):
+        pass
+
+    def runTest(self):
+        self.assertTrue(1==1, "we've got bigger problems...")
+
+    def tearDown(self):
+        pass
+"""
+
+class AutoReset(object):
+    def __init__(self, *args):
+        ob = args[0]
+        attrnames = args[1:]
+        self.ob = ob
+        self.save_attrs = attrnames
+        self.save_values = [getattr(ob, attrname) for attrname in attrnames]
+
+    def __enter__(self):
+        pass
+
+    def __exit__(self, *args):
+        for attr, value in zip(self.save_attrs, self.save_values):
+            setattr(self.ob, attr, value)
+
+BUFFER_OUTPUT = True
+
+class ParseTestCase(TestCase):
+    def __init__(self):
+        super(ParseTestCase, self).__init__(methodName='_runTest')
+
+    def _runTest(self):
+
+        buffered_stdout = StringIO()
+
+        try:
+            with AutoReset(sys, 'stdout', 'stderr'):
+                try:
+                    if BUFFER_OUTPUT:
+                        sys.stdout = buffered_stdout
+                        sys.stderr = buffered_stdout
+                    print_(">>>> Starting test",str(self))
+                    self.runTest()
+
+                finally:
+                    print_("<<<< End of test",str(self))
+                    print_()
+
+        except Exception as exc:
+            if BUFFER_OUTPUT:
+                print_()
+                print_(buffered_stdout.getvalue())
+            raise
+
+    def runTest(self):
+        pass
+
+    def __str__(self):
+        return self.__class__.__name__
+
+class PyparsingTestInit(ParseTestCase):
+    def setUp(self):
+        from pyparsing import __version__ as pyparsingVersion
+        print_("Beginning test of pyparsing, version", pyparsingVersion)
+        print_("Python version", sys.version)
+    def tearDown(self):
+        pass
+
+if 0:
+    class ParseASMLTest(ParseTestCase):
+        def runTest(self):
+            import parseASML
+            files = [ ("A52759.txt", 2150, True, True, 0.38, 25, "21:47:17", "22:07:32", 235),
+                      ("24141506_P5107RM59_399A1457N1_PHS04", 373,True, True, 0.5, 1, "11:35:25", "11:37:05", 183),
+                      ("24141506_P5107RM59_399A1457N1_PHS04B", 373, True, True, 0.5, 1, "01:02:54", "01:04:49", 186),
+                      ("24157800_P5107RM74_399A1828M1_PHS04", 1141, True, False, 0.5, 13, "00:00:54", "23:59:48", 154) ]
+            for testFile,numToks,trkInpUsed,trkOutpUsed,maxDelta,numWafers,minProcBeg,maxProcEnd,maxLevStatsIV in files:
+                print_("Parsing",testFile,"...", end=' ')
+                #~ text = "\n".join( [ line for line in file(testFile) ] )
+                #~ results = parseASML.BNF().parseString( text )
+                results = parseASML.BNF().parseFile( testFile )
+                #~ pprint.pprint( results.asList() )
+                #~ pprint.pprint( results.batchData.asList() )
+                #~ print results.batchData.keys()
+
+                allToks = flatten( results.asList() )
+                self.assertTrue(len(allToks) == numToks,
+                    "wrong number of tokens parsed (%s), got %d, expected %d" % (testFile, len(allToks),numToks))
+                self.assertTrue(results.batchData.trackInputUsed == trkInpUsed, "error evaluating results.batchData.trackInputUsed")
+                self.assertTrue(results.batchData.trackOutputUsed == trkOutpUsed, "error evaluating results.batchData.trackOutputUsed")
+                self.assertTrue(results.batchData.maxDelta == maxDelta,"error evaluating results.batchData.maxDelta")
+                self.assertTrue(len(results.waferData) == numWafers, "did not read correct number of wafers")
+                self.assertTrue(min([wd.procBegin for wd in results.waferData]) == minProcBeg, "error reading waferData.procBegin")
+                self.assertTrue(max([results.waferData[k].procEnd for k in range(len(results.waferData))]) == maxProcEnd, "error reading waferData.procEnd")
+                self.assertTrue(sum(results.levelStatsIV['MAX']) == maxLevStatsIV, "error reading levelStatsIV")
+                self.assertTrue(sum(results.levelStatsIV.MAX) == maxLevStatsIV, "error reading levelStatsIV")
+                print_("OK")
+                print_(testFile,len(allToks))
+                #~ print "results.batchData.trackInputUsed =",results.batchData.trackInputUsed
+                #~ print "results.batchData.trackOutputUsed =",results.batchData.trackOutputUsed
+                #~ print "results.batchData.maxDelta =",results.batchData.maxDelta
+                #~ print len(results.waferData)," wafers"
+                #~ print min([wd.procBegin for wd in results.waferData])
+                #~ print max([results.waferData[k].procEnd for k in range(len(results.waferData))])
+                #~ print sum(results.levelStatsIV['MAX.'])
+
+
+class ParseFourFnTest(ParseTestCase):
+    def runTest(self):
+        import examples.fourFn as fourFn
+        def test(s,ans):
+            fourFn.exprStack = []
+            results = fourFn.BNF().parseString( s )
+            resultValue = fourFn.evaluateStack( fourFn.exprStack )
+            self.assertTrue(resultValue == ans, "failed to evaluate %s, got %f" % ( s, resultValue ))
+            print_(s, "->", resultValue)
+
+        from math import pi,exp
+        e = exp(1)
+
+        test( "9", 9 )
+        test( "9 + 3 + 6", 18 )
+        test( "9 + 3 / 11", 9.0+3.0/11.0)
+        test( "(9 + 3)", 12 )
+        test( "(9+3) / 11", (9.0+3.0)/11.0 )
+        test( "9 - (12 - 6)", 3)
+        test( "2*3.14159", 6.28318)
+        test( "3.1415926535*3.1415926535 / 10", 3.1415926535*3.1415926535/10.0 )
+        test( "PI * PI / 10", pi*pi/10.0 )
+        test( "PI*PI/10", pi*pi/10.0 )
+        test( "6.02E23 * 8.048", 6.02E23 * 8.048 )
+        test( "e / 3", e/3.0 )
+        test( "sin(PI/2)", 1.0 )
+        test( "trunc(E)", 2.0 )
+        test( "E^PI", e**pi )
+        test( "2^3^2", 2**3**2)
+        test( "2^3+2", 2**3+2)
+        test( "2^9", 2**9 )
+        test( "sgn(-2)", -1 )
+        test( "sgn(0)", 0 )
+        test( "sgn(0.1)", 1 )
+
+class ParseSQLTest(ParseTestCase):
+    def runTest(self):
+        import examples.simpleSQL as simpleSQL
+
+        def test(s, numToks, errloc=-1):
+            try:
+                sqlToks = flatten(simpleSQL.simpleSQL.parseString(s).asList())
+                print_(s,sqlToks,len(sqlToks))
+                self.assertEqual(len(sqlToks), numToks,
+                                 "invalid parsed tokens, expected {0}, found {1} ({2})".format(numToks,
+                                                                                            len(sqlToks),
+                                                                                            sqlToks))
+            except ParseException as e:
+                if errloc >= 0:
+                    self.assertEqual(e.loc, errloc, "expected error at {0}, found at {1}".format(errloc, e.loc))
+
+        test( "SELECT * from XYZZY, ABC", 6 )
+        test( "select * from SYS.XYZZY", 5 )
+        test( "Select A from Sys.dual", 5 )
+        test( "Select A,B,C from Sys.dual", 7 )
+        test( "Select A, B, C from Sys.dual", 7 )
+        test( "Select A, B, C from Sys.dual, Table2   ", 8 )
+        test( "Xelect A, B, C from Sys.dual", 0, 0 )
+        test( "Select A, B, C frox Sys.dual", 0, 15 )
+        test( "Select", 0, 6 )
+        test( "Select &&& frox Sys.dual", 0, 7 )
+        test( "Select A from Sys.dual where a in ('RED','GREEN','BLUE')", 12 )
+        test( "Select A from Sys.dual where a in ('RED','GREEN','BLUE') and b in (10,20,30)", 20 )
+        test( "Select A,b from table1,table2 where table1.id eq table2.id -- test out comparison operators", 10 )
+
+class ParseConfigFileTest(ParseTestCase):
+    def runTest(self):
+        from examples import configParse
+
+        def test(fnam,numToks,resCheckList):
+            print_("Parsing",fnam,"...", end=' ')
+            with open(fnam) as infile:
+                iniFileLines = "\n".join(infile.read().splitlines())
+            iniData = configParse.inifile_BNF().parseString( iniFileLines )
+            print_(len(flatten(iniData.asList())))
+            #~ pprint.pprint( iniData.asList() )
+            #~ pprint.pprint( repr(iniData) )
+            #~ print len(iniData), len(flatten(iniData.asList()))
+            print_(list(iniData.keys()))
+            #~ print iniData.users.keys()
+            #~ print
+            self.assertEqual(len(flatten(iniData.asList())), numToks, "file %s not parsed correctly" % fnam)
+            for chk in resCheckList:
+                var = iniData
+                for attr in chk[0].split('.'):
+                    var = getattr(var, attr)
+                print_(chk[0], var, chk[1])
+                self.assertEqual(var, chk[1],
+                                 "ParseConfigFileTest: failed to parse ini {0!r} as expected {1}, found {2}".format(chk[0],
+                                                                                                                 chk[1],
+                                                                                                                 var))
+            print_("OK")
+
+        test("test/karthik.ini", 23,
+                [ ("users.K","8"),
+                  ("users.mod_scheme","'QPSK'"),
+                  ("users.Na", "K+2") ]
+                  )
+        test("examples/Setup.ini", 125,
+                [ ("Startup.audioinf", "M3i"),
+                  ("Languages.key1", "0x0003"),
+                  ("test.foo","bar") ] )
+
+class ParseJSONDataTest(ParseTestCase):
+    def runTest(self):
+        from examples.jsonParser import jsonObject
+        from test.jsonParserTests import test1,test2,test3,test4,test5
+        from test.jsonParserTests import test1,test2,test3,test4,test5
+
+        expected = [
+            [],
+            [],
+            [],
+            [],
+            [],
+            ]
+
+        for t,exp in zip((test1,test2,test3,test4,test5),expected):
+            result = jsonObject.parseString(t)
+##            print result.dump()
+            result.pprint()
+            print_()
+##            if result.asList() != exp:
+##                print "Expected %s, parsed results as %s" % (exp, result.asList())
+
+class ParseCommaSeparatedValuesTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import commaSeparatedList
+
+        testData = [
+            "a,b,c,100.2,,3",
+            "d, e, j k , m  ",
+            "'Hello, World', f, g , , 5.1,x",
+            "John Doe, 123 Main St., Cleveland, Ohio",
+            "Jane Doe, 456 St. James St., Los Angeles , California   ",
+            "",
+            ]
+        testVals = [
+            [ (3,'100.2'), (4,''), (5, '3') ],
+            [ (2, 'j k'), (3, 'm') ],
+            [ (0, "'Hello, World'"), (2, 'g'), (3, '') ],
+            [ (0,'John Doe'), (1, '123 Main St.'), (2, 'Cleveland'), (3, 'Ohio') ],
+            [ (0,'Jane Doe'), (1, '456 St. James St.'), (2, 'Los Angeles'), (3, 'California') ]
+            ]
+        for line,tests in zip(testData, testVals):
+            print_("Parsing: \""+line+"\" ->", end=' ')
+            results = commaSeparatedList.parseString(line)
+            print_(results.asList())
+            for t in tests:
+                if not(len(results)>t[0] and results[t[0]] == t[1]):
+                    print_("$$$", results.dump())
+                    print_("$$$", results[0])
+                self.assertTrue(len(results)>t[0] and results[t[0]] == t[1],
+                                "failed on %s, item %d s/b '%s', got '%s'" % (line, t[0], t[1], str(results.asList())))
+
+class ParseEBNFTest(ParseTestCase):
+    def runTest(self):
+        from examples import ebnf
+        from pyparsing import Word, quotedString, alphas, nums
+
+        print_('Constructing EBNF parser with pyparsing...')
+
+        grammar = '''
+        syntax = (syntax_rule), {(syntax_rule)};
+        syntax_rule = meta_identifier, '=', definitions_list, ';';
+        definitions_list = single_definition, {'|', single_definition};
+        single_definition = syntactic_term, {',', syntactic_term};
+        syntactic_term = syntactic_factor,['-', syntactic_factor];
+        syntactic_factor = [integer, '*'], syntactic_primary;
+        syntactic_primary = optional_sequence | repeated_sequence |
+          grouped_sequence | meta_identifier | terminal_string;
+        optional_sequence = '[', definitions_list, ']';
+        repeated_sequence = '{', definitions_list, '}';
+        grouped_sequence = '(', definitions_list, ')';
+        (*
+        terminal_string = "'", character - "'", {character - "'"}, "'" |
+          '"', character - '"', {character - '"'}, '"';
+         meta_identifier = letter, {letter | digit};
+        integer = digit, {digit};
+        *)
+        '''
+
+        table = {}
+        table['terminal_string'] = quotedString
+        table['meta_identifier'] = Word(alphas+"_", alphas+"_"+nums)
+        table['integer'] = Word(nums)
+
+        print_('Parsing EBNF grammar with EBNF parser...')
+        parsers = ebnf.parse(grammar, table)
+        ebnf_parser = parsers['syntax']
+        #~ print ",\n ".join( str(parsers.keys()).split(", ") )
+        print_("-","\n- ".join( list(parsers.keys()) ))
+        self.assertEqual(len(list(parsers.keys())), 13, "failed to construct syntax grammar")
+
+        print_('Parsing EBNF grammar with generated EBNF parser...')
+        parsed_chars = ebnf_parser.parseString(grammar)
+        parsed_char_len = len(parsed_chars)
+
+        print_("],\n".join(str( parsed_chars.asList() ).split("],")))
+        self.assertEqual(len(flatten(parsed_chars.asList())), 98, "failed to tokenize grammar correctly")
+
+
+class ParseIDLTest(ParseTestCase):
+    def runTest(self):
+        from examples import idlParse
+
+        def test( strng, numToks, errloc=0 ):
+            print_(strng)
+            try:
+                bnf = idlParse.CORBA_IDL_BNF()
+                tokens = bnf.parseString( strng )
+                print_("tokens = ")
+                tokens.pprint()
+                tokens = flatten( tokens.asList() )
+                print_(len(tokens))
+                self.assertEqual(len(tokens), numToks, "error matching IDL string, %s -> %s" % (strng, str(tokens)))
+            except ParseException as err:
+                print_(err.line)
+                print_(" "*(err.column-1) + "^")
+                print_(err)
+                self.assertEqual(numToks, 0, "unexpected ParseException while parsing %s, %s" % (strng, str(err)))
+                self.assertEqual(err.loc, errloc,
+                                 "expected ParseException at %d, found exception at %d" % (errloc, err.loc))
+
+        test(
+            """
+            /*
+             * a block comment *
+             */
+            typedef string[10] tenStrings;
+            typedef sequence<string> stringSeq;
+            typedef sequence< sequence<string> > stringSeqSeq;
+
+            interface QoSAdmin {
+                stringSeq method1( in string arg1, inout long arg2 );
+                stringSeqSeq method2( in string arg1, inout long arg2, inout long arg3);
+                string method3();
+              };
+            """, 59
+            )
+        test(
+            """
+            /*
+             * a block comment *
+             */
+            typedef string[10] tenStrings;
+            typedef
+                /** ** *** **** *
+                 * a block comment *
+                 */
+                sequence<string> /*comment inside an And */ stringSeq;
+            /* */  /**/ /***/ /****/
+            typedef sequence< sequence<string> > stringSeqSeq;
+
+            interface QoSAdmin {
+                stringSeq method1( in string arg1, inout long arg2 );
+                stringSeqSeq method2( in string arg1, inout long arg2, inout long arg3);
+                string method3();
+              };
+            """, 59
+            )
+        test(
+            r"""
+              const string test="Test String\n";
+              const long  a = 0;
+              const long  b = -100;
+              const float c = 3.14159;
+              const long  d = 0x007f7f7f;
+              exception TestException
+                {
+                string msg;
+                sequence<string> dataStrings;
+                };
+
+              interface TestInterface
+                {
+                void method1( in string arg1, inout long arg2 );
+                };
+            """, 60
+            )
+        test(
+            """
+            module Test1
+              {
+              exception TestException
+                {
+                string msg;
+                ];
+
+              interface TestInterface
+                {
+                void method1( in string arg1, inout long arg2 )
+                  raises ( TestException );
+                };
+              };
+            """, 0, 56
+            )
+        test(
+            """
+            module Test1
+              {
+              exception TestException
+                {
+                string msg;
+                };
+
+              };
+            """, 13
+            )
+
+class ParseVerilogTest(ParseTestCase):
+    def runTest(self):
+        pass
+
+class RunExamplesTest(ParseTestCase):
+    def runTest(self):
+        pass
+
+class ScanStringTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, Combine, Suppress, CharsNotIn, nums, StringEnd
+        testdata = """
+            <table border="0" cellpadding="3" cellspacing="3" frame="" width="90%">
+                <tr align="left" valign="top">
+                        <td><b>Name</b></td>
+                        <td><b>IP Address</b></td>
+                        <td><b>Location</b></td>
+                </tr>
+                <tr align="left" valign="top" bgcolor="#c7efce">
+                        <td>time-a.nist.gov</td>
+                        <td>129.6.15.28</td>
+                        <td>NIST, Gaithersburg, Maryland</td>
+                </tr>
+                <tr align="left" valign="top">
+                        <td>time-b.nist.gov</td>
+                        <td>129.6.15.29</td>
+                        <td>NIST, Gaithersburg, Maryland</td>
+                </tr>
+                <tr align="left" valign="top" bgcolor="#c7efce">
+                        <td>time-a.timefreq.bldrdoc.gov</td>
+                        <td>132.163.4.101</td>
+                        <td>NIST, Boulder, Colorado</td>
+                </tr>
+                <tr align="left" valign="top">
+                        <td>time-b.timefreq.bldrdoc.gov</td>
+                        <td>132.163.4.102</td>
+                        <td>NIST, Boulder, Colorado</td>
+                </tr>
+                <tr align="left" valign="top" bgcolor="#c7efce">
+                        <td>time-c.timefreq.bldrdoc.gov</td>
+                        <td>132.163.4.103</td>
+                        <td>NIST, Boulder, Colorado</td>
+                </tr>
+            </table>
+            """
+        integer = Word(nums)
+        ipAddress = Combine( integer + "." + integer + "." + integer + "." + integer )
+        tdStart = Suppress("<td>")
+        tdEnd = Suppress("</td>")
+        timeServerPattern = (tdStart + ipAddress("ipAddr") + tdEnd
+                             + tdStart + CharsNotIn("<")("loc") + tdEnd)
+        servers = [srvr.ipAddr for srvr,startloc,endloc in timeServerPattern.scanString( testdata )]
+
+        print_(servers)
+        self.assertEqual(servers,
+                         ['129.6.15.28', '129.6.15.29', '132.163.4.101', '132.163.4.102', '132.163.4.103'],
+                         "failed scanString()")
+
+        # test for stringEnd detection in scanString
+        foundStringEnds = [ r for r in StringEnd().scanString("xyzzy") ]
+        print_(foundStringEnds)
+        self.assertTrue(foundStringEnds, "Failed to find StringEnd in scanString")
+
+class QuotedStringsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import sglQuotedString,dblQuotedString,quotedString,QuotedString
+        testData = \
+            """
+                'a valid single quoted string'
+                'an invalid single quoted string
+                 because it spans lines'
+                "a valid double quoted string"
+                "an invalid double quoted string
+                 because it spans lines"
+            """
+        print_(testData)
+
+        sglStrings = [(t[0],b,e) for (t,b,e) in sglQuotedString.scanString(testData)]
+        print_(sglStrings)
+        self.assertTrue(len(sglStrings) == 1 and (sglStrings[0][1] == 17 and sglStrings[0][2] == 47),
+                        "single quoted string failure")
+
+        dblStrings = [(t[0],b,e) for (t,b,e) in dblQuotedString.scanString(testData)]
+        print_(dblStrings)
+        self.assertTrue(len(dblStrings) == 1 and (dblStrings[0][1] == 154 and dblStrings[0][2] == 184),
+                        "double quoted string failure")
+
+        allStrings = [(t[0],b,e) for (t,b,e) in quotedString.scanString(testData)]
+        print_(allStrings)
+        self.assertTrue(len(allStrings) == 2
+                        and (allStrings[0][1] == 17
+                             and allStrings[0][2] == 47)
+                        and (allStrings[1][1] == 154
+                             and allStrings[1][2] == 184),
+                        "quoted string failure")
+
+        escapedQuoteTest = \
+            r"""
+                'This string has an escaped (\') quote character'
+                "This string has an escaped (\") quote character"
+            """
+
+        sglStrings = [(t[0],b,e) for (t,b,e) in sglQuotedString.scanString(escapedQuoteTest)]
+        print_(sglStrings)
+        self.assertTrue(len(sglStrings) == 1 and (sglStrings[0][1]==17 and sglStrings[0][2]==66),
+                        "single quoted string escaped quote failure (%s)" % str(sglStrings[0]))
+
+        dblStrings = [(t[0],b,e) for (t,b,e) in dblQuotedString.scanString(escapedQuoteTest)]
+        print_(dblStrings)
+        self.assertTrue(len(dblStrings) == 1 and (dblStrings[0][1]==83 and dblStrings[0][2]==132),
+                        "double quoted string escaped quote failure (%s)" % str(dblStrings[0]))
+
+        allStrings = [(t[0],b,e) for (t,b,e) in quotedString.scanString(escapedQuoteTest)]
+        print_(allStrings)
+        self.assertTrue(len(allStrings) == 2
+                        and (allStrings[0][1] == 17
+                             and allStrings[0][2] == 66
+                             and allStrings[1][1] == 83
+                             and allStrings[1][2] == 132),
+                        "quoted string escaped quote failure (%s)" % ([str(s[0]) for s in allStrings]))
+
+        dblQuoteTest = \
+            r"""
+                'This string has an doubled ('') quote character'
+                "This string has an doubled ("") quote character"
+            """
+        sglStrings = [(t[0],b,e) for (t,b,e) in sglQuotedString.scanString(dblQuoteTest)]
+        print_(sglStrings)
+        self.assertTrue(len(sglStrings) == 1 and (sglStrings[0][1]==17 and sglStrings[0][2]==66),
+                        "single quoted string escaped quote failure (%s)" % str(sglStrings[0]))
+        dblStrings = [(t[0],b,e) for (t,b,e) in dblQuotedString.scanString(dblQuoteTest)]
+        print_(dblStrings)
+        self.assertTrue(len(dblStrings) == 1 and (dblStrings[0][1]==83 and dblStrings[0][2]==132),
+                        "double quoted string escaped quote failure (%s)" % str(dblStrings[0]))
+        allStrings = [(t[0],b,e) for (t,b,e) in quotedString.scanString(dblQuoteTest)]
+        print_(allStrings)
+        self.assertTrue(len(allStrings) == 2
+                        and (allStrings[0][1] == 17
+                             and allStrings[0][2] == 66
+                             and allStrings[1][1] == 83
+                             and allStrings[1][2] == 132),
+                        "quoted string escaped quote failure (%s)" % ([str(s[0]) for s in allStrings]))
+
+        print_("testing catastrophic RE backtracking in implementation of dblQuotedString")
+        for expr, test_string in [
+            (dblQuotedString, '"' + '\\xff' * 500),
+            (sglQuotedString, "'" + '\\xff' * 500),
+            (quotedString, '"' + '\\xff' * 500),
+            (quotedString, "'" + '\\xff' * 500),
+            (QuotedString('"'), '"' + '\\xff' * 500),
+            (QuotedString("'"), "'" + '\\xff' * 500),
+            ]:
+            expr.parseString(test_string+test_string[0])
+            try:
+                expr.parseString(test_string)
+            except Exception:
+                continue
+
+class CaselessOneOfTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import oneOf,ZeroOrMore
+
+        caseless1 = oneOf("d a b c aA B A C", caseless=True)
+        caseless1str = str( caseless1 )
+        print_(caseless1str)
+        caseless2 = oneOf("d a b c Aa B A C", caseless=True)
+        caseless2str = str( caseless2 )
+        print_(caseless2str)
+        self.assertEqual(caseless1str.upper(), caseless2str.upper(), "oneOf not handling caseless option properly")
+        self.assertNotEqual(caseless1str, caseless2str, "Caseless option properly sorted")
+
+        res = ZeroOrMore(caseless1).parseString("AAaaAaaA")
+        print_(res)
+        self.assertEqual(len(res), 4, "caseless1 oneOf failed")
+        self.assertEqual("".join(res), "aA"*4,"caseless1 CaselessLiteral return failed")
+
+        res = ZeroOrMore(caseless2).parseString("AAaaAaaA")
+        print_(res)
+        self.assertEqual(len(res), 4, "caseless2 oneOf failed")
+        self.assertEqual("".join(res), "Aa"*4,"caseless1 CaselessLiteral return failed")
+
+
+class AsXMLTest(ParseTestCase):
+    def runTest(self):
+
+        # test asXML()
+
+        aaa = pp.Word("a")("A")
+        bbb = pp.Group(pp.Word("b"))("B")
+        ccc = pp.Combine(":" + pp.Word("c"))("C")
+        g1 = "XXX>&<" + pp.ZeroOrMore( aaa | bbb | ccc )
+        teststring = "XXX>&< b b a b b a b :c b a"
+        #~ print teststring
+        print_("test including all items")
+        xml = g1.parseString(teststring).asXML("TEST",namedItemsOnly=False)
+        assert xml=="\n".join(["",
+                                "<TEST>",
+                                "  <ITEM>XXX&gt;&amp;&lt;</ITEM>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <C>:c</C>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "</TEST>",
+                                ] ), \
+            "failed to generate XML correctly showing all items: \n[" + xml + "]"
+        print_("test filtering unnamed items")
+        xml = g1.parseString(teststring).asXML("TEST",namedItemsOnly=True)
+        assert xml=="\n".join(["",
+                                "<TEST>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <C>:c</C>",
+                                "  <B>",
+                                "    <ITEM>b</ITEM>",
+                                "  </B>",
+                                "  <A>a</A>",
+                                "</TEST>",
+                                ] ), \
+            "failed to generate XML correctly, filtering unnamed items: " + xml
+
+class AsXMLTest2(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Suppress,Optional,CharsNotIn,Combine,ZeroOrMore,Word,\
+            Group,Literal,alphas,alphanums,delimitedList,OneOrMore
+
+        EndOfLine = Word("\n").setParseAction(lambda s,l,t: [' '])
+        whiteSpace=Word('\t ')
+        Mexpr = Suppress(Optional(whiteSpace)) + CharsNotIn('\\"\t \n') + Optional(" ") + \
+                Suppress(Optional(whiteSpace))
+        reducedString = Combine(Mexpr + ZeroOrMore(EndOfLine + Mexpr))
+        _bslash = "\\"
+        _escapables = "tnrfbacdeghijklmopqsuvwxyz" + _bslash + "'" + '"'
+        _octDigits = "01234567"
+        _escapedChar = ( Word( _bslash, _escapables, exact=2 ) |
+                         Word( _bslash, _octDigits, min=2, max=4 ) )
+        _sglQuote = Literal("'")
+        _dblQuote = Literal('"')
+        QuotedReducedString = Combine( Suppress(_dblQuote) + ZeroOrMore( reducedString |
+                                                                         _escapedChar ) + \
+                                       Suppress(_dblQuote )).streamline()
+
+        Manifest_string = QuotedReducedString('manifest_string')
+
+        Identifier  = Word( alphas, alphanums+ '_$' )("identifier")
+        Index_string = CharsNotIn('\\";\n')
+        Index_string.setName('index_string')
+        Index_term_list = (
+                Group(delimitedList(Manifest_string, delim=',')) | \
+                Index_string
+                )('value')
+
+        IndexKey = Identifier('key')
+        IndexKey.setName('key')
+        Index_clause = Group(IndexKey + Suppress(':') + Optional(Index_term_list))
+        Index_clause.setName('index_clause')
+        Index_list = Index_clause('index')
+        Index_list.setName('index_list')
+        Index_block = Group('indexing' + Group(OneOrMore(Index_list + Suppress(';'))))('indexes')
+
+
+class CommentParserTest(ParseTestCase):
+    def runTest(self):
+
+        print_("verify processing of C and HTML comments")
+        testdata = """
+        /* */
+        /** **/
+        /**/
+        /***/
+        /****/
+        /* /*/
+        /** /*/
+        /*** /*/
+        /*
+         ablsjdflj
+         */
+        """
+        foundLines = [ pp.lineno(s,testdata)
+            for t,s,e in pp.cStyleComment.scanString(testdata) ]
+        self.assertEqual(foundLines, list(range(11))[2:],"only found C comments on lines "+str(foundLines))
+        testdata = """
+        <!-- -->
+        <!--- --->
+        <!---->
+        <!----->
+        <!------>
+        <!-- /-->
+        <!--- /-->
+        <!---- /-->
+        <!---- /- ->
+        <!---- / -- >
+        <!--
+         ablsjdflj
+         -->
+        """
+        foundLines = [ pp.lineno(s,testdata)
+            for t,s,e in pp.htmlComment.scanString(testdata) ]
+        self.assertEqual(foundLines, list(range(11))[2:],"only found HTML comments on lines "+str(foundLines))
+
+        # test C++ single line comments that have line terminated with '\' (should continue comment to following line)
+        testSource = r"""
+            // comment1
+            // comment2 \
+            still comment 2
+            // comment 3
+            """
+        self.assertEqual(len(pp.cppStyleComment.searchString(testSource)[1][0]), 41,
+                         r"failed to match single-line comment with '\' at EOL")
+
+class ParseExpressionResultsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word,alphas,OneOrMore,Optional,Group
+
+        a = Word("a",alphas).setName("A")
+        b = Word("b",alphas).setName("B")
+        c = Word("c",alphas).setName("C")
+        ab = (a + b).setName("AB")
+        abc = (ab + c).setName("ABC")
+        word = Word(alphas).setName("word")
+
+        #~ words = OneOrMore(word).setName("words")
+        words = Group(OneOrMore(~a + word)).setName("words")
+
+        #~ phrase = words.setResultsName("Head") + \
+                    #~ ( abc ^ ab ^ a ).setResultsName("ABC") + \
+                    #~ words.setResultsName("Tail")
+        #~ phrase = words.setResultsName("Head") + \
+                    #~ ( abc | ab | a ).setResultsName("ABC") + \
+                    #~ words.setResultsName("Tail")
+        phrase = words("Head") + \
+                    Group( a + Optional(b + Optional(c)) )("ABC") + \
+                    words("Tail")
+
+        results = phrase.parseString("xavier yeti alpha beta charlie will beaver")
+        print_(results,results.Head, results.ABC,results.Tail)
+        for key,ln in [("Head",2), ("ABC",3), ("Tail",2)]:
+            self.assertEqual(len(results[key]), ln,
+                             "expected %d elements in %s, found %s" % (ln, key, str(results[key])))
+
+
+class ParseKeywordTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Literal,Keyword
+
+        kw = Keyword("if")
+        lit = Literal("if")
+
+        def test(s,litShouldPass,kwShouldPass):
+            print_("Test",s)
+            print_("Match Literal", end=' ')
+            try:
+                print_(lit.parseString(s))
+            except Exception:
+                print_("failed")
+                if litShouldPass:
+                    self.assertTrue(False, "Literal failed to match %s, should have" % s)
+            else:
+                if not litShouldPass:
+                    self.assertTrue(False, "Literal matched %s, should not have" % s)
+
+            print_("Match Keyword", end=' ')
+            try:
+                print_(kw.parseString(s))
+            except Exception:
+                print_("failed")
+                if kwShouldPass:
+                    self.assertTrue(False, "Keyword failed to match %s, should have" % s)
+            else:
+                if not kwShouldPass:
+                    self.assertTrue(False, "Keyword matched %s, should not have" % s)
+
+        test("ifOnlyIfOnly", True, False)
+        test("if(OnlyIfOnly)", True, True)
+        test("if (OnlyIf Only)", True, True)
+
+        kw = Keyword("if",caseless=True)
+
+        test("IFOnlyIfOnly", False, False)
+        test("If(OnlyIfOnly)", False, True)
+        test("iF (OnlyIf Only)", False, True)
+
+
+
+class ParseExpressionResultsAccumulateTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word,delimitedList,Combine,alphas,nums
+
+        num=Word(nums).setName("num")("base10*")
+        hexnum=Combine("0x"+ Word(nums)).setName("hexnum")("hex*")
+        name = Word(alphas).setName("word")("word*")
+        list_of_num=delimitedList( hexnum | num | name, "," )
+
+        tokens = list_of_num.parseString('1, 0x2, 3, 0x4, aaa')
+        for k,llen,lst in ( ("base10",2,['1','3']),
+                             ("hex",2,['0x2','0x4']),
+                             ("word",1,['aaa']) ):
+            print_(k,tokens[k])
+            self.assertEqual(len(tokens[k]), llen, "Wrong length for key %s, %s" % (k,str(tokens[k].asList())))
+            self.assertEqual(lst, tokens[k].asList(),
+                             "Incorrect list returned for key %s, %s" % (k,str(tokens[k].asList())))
+        self.assertEqual(tokens.base10.asList(), ['1','3'],
+                         "Incorrect list for attribute base10, %s" % str(tokens.base10.asList()))
+        self.assertEqual(tokens.hex.asList(), ['0x2','0x4'],
+                         "Incorrect list for attribute hex, %s" % str(tokens.hex.asList()))
+        self.assertEqual(tokens.word.asList(), ['aaa'],
+                         "Incorrect list for attribute word, %s" % str(tokens.word.asList()))
+
+        from pyparsing import Literal, Word, nums, Group, Dict, alphas, \
+            quotedString, oneOf, delimitedList, removeQuotes, alphanums
+
+        lbrack = Literal("(").suppress()
+        rbrack = Literal(")").suppress()
+        integer = Word( nums ).setName("int")
+        variable = Word( alphas, max=1 ).setName("variable")
+        relation_body_item = variable | integer | quotedString.copy().setParseAction(removeQuotes)
+        relation_name = Word( alphas+"_", alphanums+"_" )
+        relation_body = lbrack + Group(delimitedList(relation_body_item)) + rbrack
+        Goal = Dict(Group( relation_name + relation_body ))
+        Comparison_Predicate = Group(variable + oneOf("< >") + integer)("pred*")
+        Query = Goal("head") + ":-" + delimitedList(Goal | Comparison_Predicate)
+
+        test="""Q(x,y,z):-Bloo(x,"Mitsis",y),Foo(y,z,1243),y>28,x<12,x>3"""
+
+        queryRes = Query.parseString(test)
+        print_("pred",queryRes.pred)
+        self.assertEqual(queryRes.pred.asList(), [['y', '>', '28'], ['x', '<', '12'], ['x', '>', '3']],
+                         "Incorrect list for attribute pred, %s" % str(queryRes.pred.asList()))
+        print_(queryRes.dump())
+
+class ReStringRangeTest(ParseTestCase):
+    def runTest(self):
+        testCases = (
+            (r"[A-Z]"),
+            (r"[A-A]"),
+            (r"[A-Za-z]"),
+            (r"[A-z]"),
+            (r"[\ -\~]"),
+            (r"[\0x20-0]"),
+            (r"[\0x21-\0x7E]"),
+            (r"[\0xa1-\0xfe]"),
+            (r"[\040-0]"),
+            (r"[A-Za-z0-9]"),
+            (r"[A-Za-z0-9_]"),
+            (r"[A-Za-z0-9_$]"),
+            (r"[A-Za-z0-9_$\-]"),
+            (r"[^0-9\\]"),
+            (r"[a-zA-Z]"),
+            (r"[/\^~]"),
+            (r"[=\+\-!]"),
+            (r"[A-]"),
+            (r"[-A]"),
+            (r"[\x21]"),
+            #(r"[а-яА-ЯёЁA-Z$_\041α-ω]".decode('utf-8')),
+            (u'[\u0430-\u044f\u0410-\u042f\u0451\u0401ABCDEFGHIJKLMNOPQRSTUVWXYZ$_\041\u03b1-\u03c9]'),
+            )
+        expectedResults = (
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+            "A",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz",
+            " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",
+            " !\"#$%&'()*+,-./0",
+            "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",
+            #~ "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ",
+            u'\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe',
+            " !\"#$%&'()*+,-./0",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$",
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$-",
+            "0123456789\\",
+            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+            "/^~",
+            "=+-!",
+            "A-",
+            "-A",
+            "!",
+            u"абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯёЁABCDEFGHIJKLMNOPQRSTUVWXYZ$_!αβγδεζηθικλμνξοπρςστυφχψω",
+            )
+        for test in zip( testCases, expectedResults ):
+            t,exp = test
+            res = pp.srange(t)
+            #print_(t,"->",res)
+            self.assertEqual(res, exp, "srange error, srange(%r)->'%r', expected '%r'" % (t, res, exp))
+
+class SkipToParserTests(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import Literal, SkipTo, cStyleComment, ParseBaseException
+
+        thingToFind = Literal('working')
+        testExpr = SkipTo(Literal(';'), include=True, ignore=cStyleComment) + thingToFind
+
+        def tryToParse (someText, fail_expected=False):
+            try:
+                print_(testExpr.parseString(someText))
+                self.assertFalse(fail_expected, "expected failure but no exception raised")
+            except Exception as e:
+                print_("Exception %s while parsing string %s" % (e,repr(someText)))
+                self.assertTrue(fail_expected and isinstance(e,ParseBaseException),
+                                "Exception %s while parsing string %s" % (e,repr(someText)))
+
+        # This first test works, as the SkipTo expression is immediately following the ignore expression (cStyleComment)
+        tryToParse('some text /* comment with ; in */; working')
+        # This second test previously failed, as there is text following the ignore expression, and before the SkipTo expression.
+        tryToParse('some text /* comment with ; in */some other stuff; working')
+
+        # tests for optional failOn argument
+        testExpr = SkipTo(Literal(';'), include=True, ignore=cStyleComment, failOn='other') + thingToFind
+        tryToParse('some text /* comment with ; in */; working')
+        tryToParse('some text /* comment with ; in */some other stuff; working', fail_expected=True)
+
+        # test that we correctly create named results
+        text = "prefixDATAsuffix"
+        data = Literal("DATA")
+        suffix = Literal("suffix")
+        expr = SkipTo(data + suffix)('prefix') + data + suffix
+        result = expr.parseString(text)
+        self.assertTrue(isinstance(result.prefix, str), "SkipTo created with wrong saveAsList attribute")
+
+class CustomQuotesTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import QuotedString
+
+        testString = r"""
+            sdlfjs :sdf\:jls::djf: sl:kfsjf
+            sdlfjs -sdf\:jls::--djf: sl-kfsjf
+            sdlfjs -sdf\:::jls::--djf: sl:::-kfsjf
+            sdlfjs ^sdf\:jls^^--djf^ sl-kfsjf
+            sdlfjs ^^^==sdf\:j=lz::--djf: sl=^^=kfsjf
+            sdlfjs ==sdf\:j=ls::--djf: sl==kfsjf^^^
+        """
+        colonQuotes = QuotedString(':','\\','::')
+        dashQuotes  = QuotedString('-','\\', '--')
+        hatQuotes   = QuotedString('^','\\')
+        hatQuotes1  = QuotedString('^','\\','^^')
+        dblEqQuotes = QuotedString('==','\\')
+
+        def test(quoteExpr, expected):
+            print_(quoteExpr.pattern)
+            print_(quoteExpr.searchString(testString))
+            print_(quoteExpr.searchString(testString)[0][0])
+            print_(expected)
+            self.assertEqual(quoteExpr.searchString(testString)[0][0],
+                             expected,
+                             "failed to match %s, expected '%s', got '%s'" % (quoteExpr, expected,
+                                                                              quoteExpr.searchString(testString)[0]))
+            print_()
+
+        test(colonQuotes, r"sdf:jls:djf")
+        test(dashQuotes,  r"sdf:jls::-djf: sl")
+        test(hatQuotes,   r"sdf:jls")
+        test(hatQuotes1,  r"sdf:jls^--djf")
+        test(dblEqQuotes, r"sdf:j=ls::--djf: sl")
+        test(QuotedString(':::'), 'jls::--djf: sl')
+        test(QuotedString('==',endQuoteChar='--'), r'sdf\:j=lz::')
+        test(QuotedString('^^^',multiline=True), r"""==sdf\:j=lz::--djf: sl=^^=kfsjf
+            sdlfjs ==sdf\:j=ls::--djf: sl==kfsjf""")
+        try:
+            bad1 = QuotedString('','\\')
+        except SyntaxError as se:
+            pass
+        else:
+            self.assertTrue(False,"failed to raise SyntaxError with empty quote string")
+
+class RepeaterTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import matchPreviousLiteral,matchPreviousExpr, Word, nums, ParserElement
+
+        if ParserElement._packratEnabled:
+            print_("skipping this test, not compatible with packratting")
+            return
+
+        first = Word("abcdef").setName("word1")
+        bridge = Word(nums).setName("number")
+        second = matchPreviousLiteral(first).setName("repeat(word1Literal)")
+
+        seq = first + bridge + second
+
+        tests = [
+            ( "abc12abc", True ),
+            ( "abc12aabc", False ),
+            ( "abc12cba", True ),
+            ( "abc12bca", True ),
+        ]
+
+        for tst,result in tests:
+            found = False
+            for tokens,start,end in seq.scanString(tst):
+                f,b,s = tokens
+                print_(f,b,s)
+                found = True
+            if not found:
+                print_("No literal match in", tst)
+            self.assertEqual(found, result, "Failed repeater for test: %s, matching %s" % (tst, str(seq)))
+        print_()
+
+        # retest using matchPreviousExpr instead of matchPreviousLiteral
+        second = matchPreviousExpr(first).setName("repeat(word1expr)")
+        seq = first + bridge + second
+
+        tests = [
+            ( "abc12abc", True ),
+            ( "abc12cba", False ),
+            ( "abc12abcdef", False ),
+            ]
+
+        for tst,result in tests:
+            found = False
+            for tokens,start,end in seq.scanString(tst):
+                print_(tokens.asList())
+                found = True
+            if not found:
+                print_("No expression match in", tst)
+            self.assertEqual(found, result, "Failed repeater for test: %s, matching %s" % (tst, str(seq)))
+
+        print_()
+
+        first = Word("abcdef").setName("word1")
+        bridge = Word(nums).setName("number")
+        second = matchPreviousExpr(first).setName("repeat(word1)")
+        seq = first + bridge + second
+        csFirst = seq.setName("word-num-word")
+        csSecond = matchPreviousExpr(csFirst)
+        compoundSeq = csFirst + ":" + csSecond
+        compoundSeq.streamline()
+        print_(compoundSeq)
+
+        tests = [
+            ( "abc12abc:abc12abc", True ),
+            ( "abc12cba:abc12abc", False ),
+            ( "abc12abc:abc12abcdef", False ),
+            ]
+
+        #~ for tst,result in tests:
+            #~ print tst,
+            #~ try:
+                #~ compoundSeq.parseString(tst)
+                #~ print "MATCH"
+                #~ assert result, "matched when shouldn't have matched"
+            #~ except ParseException:
+                #~ print "NO MATCH"
+                #~ assert not result, "didnt match but should have"
+
+        #~ for tst,result in tests:
+            #~ print tst,
+            #~ if compoundSeq == tst:
+                #~ print "MATCH"
+                #~ assert result, "matched when shouldn't have matched"
+            #~ else:
+                #~ print "NO MATCH"
+                #~ assert not result, "didnt match but should have"
+
+        for tst,result in tests:
+            found = False
+            for tokens,start,end in compoundSeq.scanString(tst):
+                print_("match:", tokens.asList())
+                found = True
+                break
+            if not found:
+                print_("No expression match in", tst)
+            self.assertEqual(found, result, "Failed repeater for test: %s, matching %s" % (tst, str(seq)))
+
+        print_()
+        eFirst = Word(nums)
+        eSecond = matchPreviousExpr(eFirst)
+        eSeq = eFirst + ":" + eSecond
+
+        tests = [
+            ( "1:1A", True ),
+            ( "1:10", False ),
+            ]
+
+        for tst,result in tests:
+            found = False
+            for tokens,start,end in eSeq.scanString(tst):
+                #~ f,b,s = tokens
+                #~ print f,b,s
+                print_(tokens.asList())
+                found = True
+            if not found:
+                print_("No match in", tst)
+            self.assertEqual(found, result, "Failed repeater for test: %s, matching %s" % (tst, str(seq)))
+
+class RecursiveCombineTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Forward,Word,alphas,nums,Optional,Combine
+
+        testInput = "myc(114)r(11)dd"
+        Stream=Forward()
+        Stream << Optional(Word(alphas))+Optional("("+Word(nums)+")"+Stream)
+        expected = Stream.parseString(testInput).asList()
+        print_(["".join(expected)])
+
+        Stream=Forward()
+        Stream << Combine(Optional(Word(alphas))+Optional("("+Word(nums)+")"+Stream))
+        testVal = Stream.parseString(testInput).asList()
+        print_(testVal)
+
+        self.assertEqual("".join(testVal), "".join(expected), "Failed to process Combine with recursive content")
+
+class InfixNotationGrammarTest1(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word,nums,alphas,Literal,oneOf,infixNotation,opAssoc
+        import ast
+
+        integer = Word(nums).setParseAction(lambda t:int(t[0]))
+        variable = Word(alphas,exact=1)
+        operand = integer | variable
+
+        expop = Literal('^')
+        signop = oneOf('+ -')
+        multop = oneOf('* /')
+        plusop = oneOf('+ -')
+        factop = Literal('!')
+
+        expr = infixNotation( operand,
+            [("!", 1, opAssoc.LEFT),
+             ("^", 2, opAssoc.RIGHT),
+             (signop, 1, opAssoc.RIGHT),
+             (multop, 2, opAssoc.LEFT),
+             (plusop, 2, opAssoc.LEFT),]
+            )
+
+        test = ["9 + 2 + 3",
+                "9 + 2 * 3",
+                "(9 + 2) * 3",
+                "(9 + -2) * 3",
+                "(9 + --2) * 3",
+                "(9 + -2) * 3^2^2",
+                "(9! + -2) * 3^2^2",
+                "M*X + B",
+                "M*(X + B)",
+                "1+2*-3^4*5+-+-6",
+                "3!!"]
+        expected = """[[9, '+', 2, '+', 3]]
+                    [[9, '+', [2, '*', 3]]]
+                    [[[9, '+', 2], '*', 3]]
+                    [[[9, '+', ['-', 2]], '*', 3]]
+                    [[[9, '+', ['-', ['-', 2]]], '*', 3]]
+                    [[[9, '+', ['-', 2]], '*', [3, '^', [2, '^', 2]]]]
+                    [[[[9, '!'], '+', ['-', 2]], '*', [3, '^', [2, '^', 2]]]]
+                    [[['M', '*', 'X'], '+', 'B']]
+                    [['M', '*', ['X', '+', 'B']]]
+                    [[1, '+', [2, '*', ['-', [3, '^', 4]], '*', 5], '+', ['-', ['+', ['-', 6]]]]]
+                    [[3, '!', '!']]""".split('\n')
+        expected = [ast.literal_eval(x.strip()) for x in expected]
+        for t,e in zip(test,expected):
+            print_(t,"->",e, "got", expr.parseString(t).asList())
+            self.assertEqual(expr.parseString(t).asList(), e,
+                             "mismatched results for infixNotation: got %s, expected %s" % (expr.parseString(t).asList(),e))
+
+class InfixNotationGrammarTest2(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import infixNotation, Word, alphas, oneOf, opAssoc
+
+        boolVars = { "True":True, "False":False }
+        class BoolOperand(object):
+            reprsymbol = ''
+            def __init__(self,t):
+                self.args = t[0][0::2]
+            def __str__(self):
+                sep = " %s " % self.reprsymbol
+                return "(" + sep.join(map(str,self.args)) + ")"
+
+        class BoolAnd(BoolOperand):
+            reprsymbol = '&'
+            def __bool__(self):
+                for a in self.args:
+                    if isinstance(a,str):
+                        v = boolVars[a]
+                    else:
+                        v = bool(a)
+                    if not v:
+                        return False
+                return True
+
+        class BoolOr(BoolOperand):
+            reprsymbol = '|'
+            def __bool__(self):
+                for a in self.args:
+                    if isinstance(a,str):
+                        v = boolVars[a]
+                    else:
+                        v = bool(a)
+                    if v:
+                        return True
+                return False
+
+        class BoolNot(BoolOperand):
+            def __init__(self,t):
+                self.arg = t[0][1]
+            def __str__(self):
+                return "~" + str(self.arg)
+            def __bool__(self):
+                if isinstance(self.arg,str):
+                    v = boolVars[self.arg]
+                else:
+                    v = bool(self.arg)
+                return not v
+
+        boolOperand = Word(alphas,max=1) | oneOf("True False")
+        boolExpr = infixNotation( boolOperand,
+            [
+            ("not", 1, opAssoc.RIGHT, BoolNot),
+            ("and", 2, opAssoc.LEFT,  BoolAnd),
+            ("or",  2, opAssoc.LEFT,  BoolOr),
+            ])
+        test = ["p and not q",
+                "not not p",
+                "not(p and q)",
+                "q or not p and r",
+                "q or not p or not r",
+                "q or not (p and r)",
+                "p or q or r",
+                "p or q or r and False",
+                "(p or q or r) and False",
+                ]
+
+        boolVars["p"] = True
+        boolVars["q"] = False
+        boolVars["r"] = True
+        print_("p =", boolVars["p"])
+        print_("q =", boolVars["q"])
+        print_("r =", boolVars["r"])
+        print_()
+        for t in test:
+            res = boolExpr.parseString(t)[0]
+            print_(t,'\n', res, '=', bool(res),'\n')
+
+
+class InfixNotationGrammarTest3(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import infixNotation, Word, alphas, oneOf, opAssoc, nums, Literal
+
+        global count
+        count = 0
+
+        def evaluate_int(t):
+            global count
+            value = int(t[0])
+            print_("evaluate_int", value)
+            count += 1
+            return value
+
+        integer = Word(nums).setParseAction(evaluate_int)
+        variable = Word(alphas,exact=1)
+        operand = integer | variable
+
+        expop = Literal('^')
+        signop = oneOf('+ -')
+        multop = oneOf('* /')
+        plusop = oneOf('+ -')
+        factop = Literal('!')
+
+        expr = infixNotation( operand,
+            [
+            ("!", 1, opAssoc.LEFT),
+            ("^", 2, opAssoc.LEFT),
+            (signop, 1, opAssoc.RIGHT),
+            (multop, 2, opAssoc.LEFT),
+            (plusop, 2, opAssoc.LEFT),
+            ])
+
+        test = ["9"]
+        for t in test:
+            count = 0
+            print_("%r => %s (count=%d)" % (t, expr.parseString(t), count))
+            self.assertEqual(count, 1, "count evaluated too many times!")
+
+class InfixNotationGrammarTest4(ParseTestCase):
+    def runTest(self):
+
+        word = pp.Word(pp.alphas)
+
+        def supLiteral(s):
+            """Returns the suppressed literal s"""
+            return pp.Literal(s).suppress()
+
+        def booleanExpr(atom):
+            ops = [
+                (supLiteral("!"), 1, pp.opAssoc.RIGHT, lambda s, l, t: ["!", t[0][0]]),
+                (pp.oneOf("= !="), 2, pp.opAssoc.LEFT, ),
+                (supLiteral("&"), 2, pp.opAssoc.LEFT,  lambda s, l, t: ["&", t[0]]),
+                (supLiteral("|"), 2, pp.opAssoc.LEFT,  lambda s, l, t: ["|", t[0]])]
+            return pp.infixNotation(atom, ops)
+
+        f = booleanExpr(word) + pp.StringEnd()
+
+        tests = [
+            ("bar = foo", "[['bar', '=', 'foo']]"),
+            ("bar = foo & baz = fee", "['&', [['bar', '=', 'foo'], ['baz', '=', 'fee']]]"),
+            ]
+        for test,expected in tests:
+            print_(test)
+            results = f.parseString(test)
+            print_(results)
+            self.assertEqual(str(results), expected, "failed to match expected results, got '%s'" % str(results))
+            print_()
+
+class InfixNotationGrammarTest5(ParseTestCase):
+
+    def runTest(self):
+        from pyparsing import infixNotation, opAssoc, pyparsing_common, Literal, oneOf
+
+        expop = Literal('**')
+        signop = oneOf('+ -')
+        multop = oneOf('* /')
+        plusop = oneOf('+ -')
+
+        class ExprNode(object):
+            def __init__(self, tokens):
+                self.tokens = tokens[0]
+
+            def eval(self):
+                return None
+
+        class NumberNode(ExprNode):
+            def eval(self):
+                return self.tokens
+
+        class SignOp(ExprNode):
+            def eval(self):
+                mult = {'+': 1, '-': -1}[self.tokens[0]]
+                return mult * self.tokens[1].eval()
+
+        class BinOp(ExprNode):
+            def eval(self):
+                ret = self.tokens[0].eval()
+                for op, operand in zip(self.tokens[1::2], self.tokens[2::2]):
+                    ret = self.opn_map[op](ret, operand.eval())
+                return ret
+
+        class ExpOp(BinOp):
+            opn_map = {'**': lambda a, b: b ** a}
+
+        class MultOp(BinOp):
+            import operator
+            opn_map = {'*': operator.mul, '/': operator.truediv}
+
+        class AddOp(BinOp):
+            import operator
+            opn_map = {'+': operator.add, '-': operator.sub}
+
+        from pyparsing import pyparsing_common, infixNotation
+
+        operand = pyparsing_common.number().setParseAction(NumberNode)
+        expr = infixNotation(operand,
+                             [
+                                 (expop, 2, opAssoc.LEFT, (lambda pr: [pr[0][::-1]], ExpOp)),
+                                 (signop, 1, opAssoc.RIGHT, SignOp),
+                                 (multop, 2, opAssoc.LEFT, MultOp),
+                                 (plusop, 2, opAssoc.LEFT, AddOp),
+                             ])
+
+        tests = """\
+            2+7
+            2**3
+            2**3**2
+            3**9
+            3**3**2
+            """
+
+        for t in tests.splitlines():
+            t = t.strip()
+            if not t:
+                continue
+
+            parsed = expr.parseString(t)
+            eval_value = parsed[0].eval()
+            self.assertEqual(eval_value, eval(t),
+                             "Error evaluating %r, expected %r, got %r" % (t, eval(t), eval_value))
+
+
+class PickleTest_Greeting():
+    def __init__(self, toks):
+        self.salutation = toks[0]
+        self.greetee = toks[1]
+
+    def __repr__(self):
+        return "%s: {%s}" % (self.__class__.__name__,
+            ', '.join('%r: %r' % (k, getattr(self,k)) for k in sorted(self.__dict__)))
+
+class ParseResultsPickleTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import makeHTMLTags, ParseResults
+        import pickle
+
+        # test 1
+        body = makeHTMLTags("BODY")[0]
+        result = body.parseString("<BODY BGCOLOR='#00FFBB' FGCOLOR=black>")
+        if VERBOSE:
+            print_(result.dump())
+            print_()
+
+        for protocol in range(pickle.HIGHEST_PROTOCOL+1):
+            print_("Test pickle dump protocol", protocol)
+            try:
+                pickleString = pickle.dumps(result, protocol)
+            except Exception as e:
+                print_("dumps exception:", e)
+                newresult = ParseResults()
+            else:
+                newresult = pickle.loads(pickleString)
+                if VERBOSE:
+                    print_(newresult.dump())
+                    print_()
+
+            self.assertEqual(result.dump(), newresult.dump(),
+                             "Error pickling ParseResults object (protocol=%d)" % protocol)
+
+        # test 2
+        import pyparsing as pp
+
+        word = pp.Word(pp.alphas+"'.")
+        salutation = pp.OneOrMore(word)
+        comma = pp.Literal(",")
+        greetee = pp.OneOrMore(word)
+        endpunc = pp.oneOf("! ?")
+        greeting = salutation + pp.Suppress(comma) + greetee + pp.Suppress(endpunc)
+        greeting.setParseAction(PickleTest_Greeting)
+
+        string = 'Good morning, Miss Crabtree!'
+
+        result = greeting.parseString(string)
+
+        for protocol in range(pickle.HIGHEST_PROTOCOL+1):
+            print_("Test pickle dump protocol", protocol)
+            try:
+                pickleString = pickle.dumps(result, protocol)
+            except Exception as e:
+                print_("dumps exception:", e)
+                newresult = ParseResults()
+            else:
+                newresult = pickle.loads(pickleString)
+            print_(newresult.dump())
+            self.assertEqual(newresult.dump(), result.dump(),
+                             "failed to pickle/unpickle ParseResults: expected %r, got %r" % (result, newresult))
+
+class ParseResultsWithNamedTupleTest(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import Literal,replaceWith
+
+        expr = Literal("A")("Achar")
+        expr.setParseAction(replaceWith(tuple(["A","Z"])))
+
+        res = expr.parseString("A")
+        print_(repr(res))
+        print_(res.Achar)
+        self.assertEqual(res.Achar, ("A","Z"),
+                         "Failed accessing named results containing a tuple, got {0!r}".format(res.Achar))
+
+
+class ParseHTMLTagsTest(ParseTestCase):
+    def runTest(self):
+        test = """
+            <BODY>
+            <BODY BGCOLOR="#00FFCC">
+            <BODY BGCOLOR="#00FFAA"/>
+            <BODY BGCOLOR='#00FFBB' FGCOLOR=black>
+            <BODY/>
+            </BODY>
+        """
+        results = [
+            ("startBody", False, "", ""),
+            ("startBody", False, "#00FFCC", ""),
+            ("startBody", True,  "#00FFAA", ""),
+            ("startBody", False, "#00FFBB", "black"),
+            ("startBody", True, "", ""),
+            ("endBody", False, "", ""),
+            ]
+
+        bodyStart, bodyEnd = pp.makeHTMLTags("BODY")
+        resIter = iter(results)
+        for t,s,e in (bodyStart | bodyEnd).scanString( test ):
+            print_(test[s:e], "->", t.asList())
+            (expectedType, expectedEmpty, expectedBG, expectedFG) = next(resIter)
+
+            tType = t.getName()
+            #~ print tType,"==",expectedType,"?"
+            self.assertTrue(tType in "startBody endBody".split(), "parsed token of unknown type '%s'" % tType)
+            self.assertEqual(tType, expectedType, "expected token of type %s, got %s" % (expectedType, tType))
+            if tType == "startBody":
+                self.assertEqual(bool(t.empty), expectedEmpty,
+                                 "expected %s token, got %s" % (expectedEmpty and "empty" or "not empty",
+                                                                t.empty and "empty" or "not empty"))
+                self.assertEqual(t.bgcolor, expectedBG,
+                                 "failed to match BGCOLOR, expected %s, got %s" % (expectedBG, t.bgcolor))
+                self.assertEqual(t.fgcolor, expectedFG,
+                                 "failed to match FGCOLOR, expected %s, got %s" % (expectedFG, t.bgcolor))
+            elif tType == "endBody":
+                #~ print "end tag"
+                pass
+            else:
+                print_("BAD!!!")
+
+class UpcaseDowncaseUnicode(ParseTestCase):
+    def runTest(self):
+
+        import pyparsing as pp
+        import sys
+        if PY_3:
+            unichr = chr
+        else:
+            from __builtin__ import unichr
+
+        a = u'\u00bfC\u00f3mo esta usted?'
+        if not JYTHON_ENV:
+            ualphas = pp.pyparsing_unicode.alphas
+        else:
+            ualphas = "".join( unichr(i) for i in list(range(0xd800)) + list(range(0xe000,sys.maxunicode))
+                                if unichr(i).isalpha() )
+        uword = pp.Word(ualphas).setParseAction(pp.upcaseTokens)
+
+        print_ = lambda *args: None
+        print_(uword.searchString(a))
+
+        uword = pp.Word(ualphas).setParseAction(pp.downcaseTokens)
+
+        print_(uword.searchString(a))
+
+        kw = pp.Keyword('mykey', caseless=True).setParseAction(pp.upcaseTokens)('rname')
+        ret = kw.parseString('mykey')
+        print_(ret.rname)
+        self.assertEqual(ret.rname, 'MYKEY', "failed to upcase with named result")
+
+        kw = pp.Keyword('mykey', caseless=True).setParseAction(pp.pyparsing_common.upcaseTokens)('rname')
+        ret = kw.parseString('mykey')
+        print_(ret.rname)
+        self.assertEqual(ret.rname, 'MYKEY', "failed to upcase with named result (pyparsing_common)")
+
+        kw = pp.Keyword('MYKEY', caseless=True).setParseAction(pp.pyparsing_common.downcaseTokens)('rname')
+        ret = kw.parseString('mykey')
+        print_(ret.rname)
+        self.assertEqual(ret.rname, 'mykey', "failed to upcase with named result")
+
+        if not IRON_PYTHON_ENV:
+            #test html data
+            html = u"<TR class=maintxt bgColor=#ffffff> \
+                <TD vAlign=top>Производитель, модель</TD> \
+                <TD vAlign=top><STRONG>BenQ-Siemens CF61</STRONG></TD> \
+            "#.decode('utf-8')
+
+            # u'Manufacturer, model
+            text_manuf = u'Производитель, модель'
+            manufacturer = pp.Literal(text_manuf)
+
+            td_start, td_end = pp.makeHTMLTags("td")
+            manuf_body =  td_start.suppress() + manufacturer + pp.SkipTo(td_end)("cells*") + td_end.suppress()
+
+            #~ manuf_body.setDebug()
+
+            #~ for tokens in manuf_body.scanString(html):
+                #~ print_(tokens)
+
+class ParseUsingRegex(ParseTestCase):
+    def runTest(self):
+
+        import re
+
+        signedInt = pp.Regex(r'[-+][0-9]+')
+        unsignedInt = pp.Regex(r'[0-9]+')
+        simpleString = pp.Regex(r'("[^\"]*")|(\'[^\']*\')')
+        namedGrouping = pp.Regex(r'("(?P<content>[^\"]*)")')
+        compiledRE = pp.Regex(re.compile(r'[A-Z]+'))
+
+        def testMatch (expression, instring, shouldPass, expectedString=None):
+            if shouldPass:
+                try:
+                    result = expression.parseString(instring)
+                    print_('%s correctly matched %s' % (repr(expression), repr(instring)))
+                    if expectedString != result[0]:
+                        print_('\tbut failed to match the pattern as expected:')
+                        print_('\tproduced %s instead of %s' % \
+                            (repr(result[0]), repr(expectedString)))
+                    return True
+                except pp.ParseException:
+                    print_('%s incorrectly failed to match %s' % \
+                        (repr(expression), repr(instring)))
+            else:
+                try:
+                    result = expression.parseString(instring)
+                    print_('%s incorrectly matched %s' % (repr(expression), repr(instring)))
+                    print_('\tproduced %s as a result' % repr(result[0]))
+                except pp.ParseException:
+                    print_('%s correctly failed to match %s' % \
+                        (repr(expression), repr(instring)))
+                    return True
+            return False
+
+        # These should fail
+        self.assertTrue(testMatch(signedInt, '1234 foo', False), "Re: (1) passed, expected fail")
+        self.assertTrue(testMatch(signedInt, '    +foo', False), "Re: (2) passed, expected fail")
+        self.assertTrue(testMatch(unsignedInt, 'abc', False), "Re: (3) passed, expected fail")
+        self.assertTrue(testMatch(unsignedInt, '+123 foo', False), "Re: (4) passed, expected fail")
+        self.assertTrue(testMatch(simpleString, 'foo', False), "Re: (5) passed, expected fail")
+        self.assertTrue(testMatch(simpleString, '"foo bar\'', False), "Re: (6) passed, expected fail")
+        self.assertTrue(testMatch(simpleString, '\'foo bar"', False), "Re: (7) passed, expected fail")
+
+        # These should pass
+        self.assertTrue(testMatch(signedInt, '   +123', True, '+123'), "Re: (8) failed, expected pass")
+        self.assertTrue(testMatch(signedInt, '+123', True, '+123'), "Re: (9) failed, expected pass")
+        self.assertTrue(testMatch(signedInt, '+123 foo', True, '+123'), "Re: (10) failed, expected pass")
+        self.assertTrue(testMatch(signedInt, '-0 foo', True, '-0'), "Re: (11) failed, expected pass")
+        self.assertTrue(testMatch(unsignedInt, '123 foo', True, '123'), "Re: (12) failed, expected pass")
+        self.assertTrue(testMatch(unsignedInt, '0 foo', True, '0'), "Re: (13) failed, expected pass")
+        self.assertTrue(testMatch(simpleString, '"foo"', True, '"foo"'), "Re: (14) failed, expected pass")
+        self.assertTrue(testMatch(simpleString, "'foo bar' baz", True, "'foo bar'"), "Re: (15) failed, expected pass")
+
+        self.assertTrue(testMatch(compiledRE, 'blah', False), "Re: (16) passed, expected fail")
+        self.assertTrue(testMatch(compiledRE, 'BLAH', True, 'BLAH'), "Re: (17) failed, expected pass")
+
+        self.assertTrue(testMatch(namedGrouping, '"foo bar" baz', True, '"foo bar"'), "Re: (16) failed, expected pass")
+        ret = namedGrouping.parseString('"zork" blah')
+        print_(ret.asList())
+        print_(list(ret.items()))
+        print_(ret.content)
+        self.assertEqual(ret.content, 'zork', "named group lookup failed")
+        self.assertEqual(ret[0], simpleString.parseString('"zork" blah')[0],
+                         "Regex not properly returning ParseResults for named vs. unnamed groups")
+
+        try:
+            #~ print "lets try an invalid RE"
+            invRe = pp.Regex('("[^\"]*")|(\'[^\']*\'')
+        except Exception as e:
+            print_("successfully rejected an invalid RE:", end=' ')
+            print_(e)
+        else:
+            self.assertTrue(False, "failed to reject invalid RE")
+
+        invRe = pp.Regex('')
+
+class RegexAsTypeTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        test_str = "sldkjfj 123 456 lsdfkj"
+
+        print_("return as list of match groups")
+        expr = pp.Regex(r"\w+ (\d+) (\d+) (\w+)", asGroupList=True)
+        expected_group_list = [tuple(test_str.split()[1:])]
+        result = expr.parseString(test_str)
+        print_(result.dump())
+        print_(expected_group_list)
+        self.assertEqual(result.asList(), expected_group_list, "incorrect group list returned by Regex)")
+
+        print_("return as re.match instance")
+        expr = pp.Regex(r"\w+ (?P<num1>\d+) (?P<num2>\d+) (?P<last_word>\w+)", asMatch=True)
+        result = expr.parseString(test_str)
+        print_(result.dump())
+        print_(result[0].groups())
+        print_(expected_group_list)
+        self.assertEqual(result[0].groupdict(), {'num1': '123',  'num2': '456',  'last_word': 'lsdfkj'},
+                         'invalid group dict from Regex(asMatch=True)')
+        self.assertEqual(result[0].groups(), expected_group_list[0],
+                         "incorrect group list returned by Regex(asMatch)")
+
+class RegexSubTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        print_("test sub with string")
+        expr = pp.Regex(r"<title>").sub("'Richard III'")
+        result = expr.transformString("This is the title: <title>")
+        print_(result)
+        self.assertEqual(result, "This is the title: 'Richard III'", "incorrect Regex.sub result with simple string")
+
+        print_("test sub with re string")
+        expr = pp.Regex(r"([Hh]\d):\s*(.*)").sub(r"<\1>\2</\1>")
+        result = expr.transformString("h1: This is the main heading\nh2: This is the sub-heading")
+        print_(result)
+        self.assertEqual(result, '<h1>This is the main heading</h1>\n<h2>This is the sub-heading</h2>',
+                         "incorrect Regex.sub result with re string")
+
+        print_("test sub with re string (Regex returns re.match)")
+        expr = pp.Regex(r"([Hh]\d):\s*(.*)", asMatch=True).sub(r"<\1>\2</\1>")
+        result = expr.transformString("h1: This is the main heading\nh2: This is the sub-heading")
+        print_(result)
+        self.assertEqual(result, '<h1>This is the main heading</h1>\n<h2>This is the sub-heading</h2>',
+                         "incorrect Regex.sub result with re string")
+
+        print_("test sub with callable that return str")
+        expr = pp.Regex(r"<(.*?)>").sub(lambda m: m.group(1).upper())
+        result = expr.transformString("I want this in upcase: <what? what?>")
+        print_(result)
+        self.assertEqual(result, 'I want this in upcase: WHAT? WHAT?', "incorrect Regex.sub result with callable")
+
+        try:
+            expr = pp.Regex(r"<(.*?)>", asMatch=True).sub(lambda m: m.group(1).upper())
+        except SyntaxError:
+            pass
+        else:
+            self.assertTrue(False, "failed to warn using a Regex.sub(callable) with asMatch=True")
+
+        try:
+            expr = pp.Regex(r"<(.*?)>", asGroupList=True).sub(lambda m: m.group(1).upper())
+        except SyntaxError:
+            pass
+        else:
+            self.assertTrue(False, "failed to warn using a Regex.sub() with asGroupList=True")
+
+        try:
+            expr = pp.Regex(r"<(.*?)>", asGroupList=True).sub("")
+        except SyntaxError:
+            pass
+        else:
+            self.assertTrue(False, "failed to warn using a Regex.sub() with asGroupList=True")
+
+class PrecededByTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        num = pp.Word(pp.nums).setParseAction(lambda t: int(t[0]))
+        interesting_num = pp.PrecededBy(pp.Char("abc")("prefix*")) + num
+        semi_interesting_num = pp.PrecededBy('_') + num
+        crazy_num = pp.PrecededBy(pp.Word("^", "$%^")("prefix*"), 10) + num
+        boring_num = ~pp.PrecededBy(pp.Char("abc_$%^" + pp.nums)) + num
+        very_boring_num = pp.PrecededBy(pp.WordStart()) + num
+        finicky_num = pp.PrecededBy(pp.Word("^", "$%^"), retreat=3) + num
+
+        s = "c384 b8324 _9293874 _293 404 $%^$^%$2939"
+        print_(s)
+        for expr, expected_list, expected_dict in [
+            (interesting_num, [384, 8324], {'prefix': ['c', 'b']}),
+            (semi_interesting_num, [9293874, 293], {}),
+            (boring_num, [404], {}),
+            (crazy_num, [2939], {'prefix': ['^%$']}),
+            (finicky_num, [2939], {}),
+            (very_boring_num, [404], {}),
+            ]:
+            print_(expr.searchString(s))
+            result = sum(expr.searchString(s))
+            print_(result)
+
+            self.assertEqual(result.asList(), expected_list,
+                             "Erroneous tokens for {0}: expected {1}, got {2}".format(expr,
+                                                                                   expected_list,
+                                                                                   result.asList()))
+            self.assertEqual(result.asDict(), expected_dict,
+                             "Erroneous named results for {0}: expected {1}, got {2}".format(expr,
+                                                                                          expected_dict,
+                                                                                          result.asDict()))
+
+class CountedArrayTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word,nums,OneOrMore,countedArray
+
+        testString = "2 5 7 6 0 1 2 3 4 5 0 3 5 4 3"
+
+        integer = Word(nums).setParseAction(lambda t: int(t[0]))
+        countedField = countedArray(integer)
+
+        r = OneOrMore(countedField).parseString( testString )
+        print_(testString)
+        print_(r.asList())
+
+        self.assertEqual(r.asList(), [[5,7],[0,1,2,3,4,5],[],[5,4,3]],
+                "Failed matching countedArray, got " + str(r.asList()))
+
+class CountedArrayTest2(ParseTestCase):
+    # addresses bug raised by Ralf Vosseler
+    def runTest(self):
+        from pyparsing import Word,nums,OneOrMore,countedArray
+
+        testString = "2 5 7 6 0 1 2 3 4 5 0 3 5 4 3"
+
+        integer = Word(nums).setParseAction(lambda t: int(t[0]))
+        countedField = countedArray(integer)
+
+        dummy = Word("A")
+        r = OneOrMore(dummy ^ countedField).parseString( testString )
+        print_(testString)
+        print_(r.asList())
+
+        self.assertEqual(r.asList(), [[5,7],[0,1,2,3,4,5],[],[5,4,3]],
+                "Failed matching countedArray, got " + str(r.asList()))
+
+class CountedArrayTest3(ParseTestCase):
+    # test case where counter is not a decimal integer
+    def runTest(self):
+        from pyparsing import Word,nums,OneOrMore,countedArray,alphas
+        int_chars = "_"+alphas
+        array_counter = Word(int_chars).setParseAction(lambda t: int_chars.index(t[0]))
+
+        #             123456789012345678901234567890
+        testString = "B 5 7 F 0 1 2 3 4 5 _ C 5 4 3"
+
+        integer = Word(nums).setParseAction(lambda t: int(t[0]))
+        countedField = countedArray(integer, intExpr=array_counter)
+
+        r = OneOrMore(countedField).parseString( testString )
+        print_(testString)
+        print_(r.asList())
+
+        self.assertEqual(r.asList(), [[5,7],[0,1,2,3,4,5],[],[5,4,3]],
+                "Failed matching countedArray, got " + str(r.asList()))
+
+class LineStartTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        pass_tests = [
+            """\
+            AAA
+            BBB
+            """,
+            """\
+            AAA...
+            BBB
+            """,
+            ]
+        fail_tests = [
+            """\
+            AAA...
+            ...BBB
+            """,
+            """\
+            AAA  BBB
+            """,
+        ]
+
+        # cleanup test strings
+        pass_tests = ['\n'.join(s.lstrip() for s in t.splitlines()).replace('.', ' ') for t in pass_tests]
+        fail_tests = ['\n'.join(s.lstrip() for s in t.splitlines()).replace('.', ' ') for t in fail_tests]
+
+        test_patt = pp.Word('A') - pp.LineStart() + pp.Word('B')
+        print_(test_patt.streamline())
+        success = test_patt.runTests(pass_tests)[0]
+        self.assertTrue(success, "failed LineStart passing tests (1)")
+
+        success = test_patt.runTests(fail_tests, failureTests=True)[0]
+        self.assertTrue(success, "failed LineStart failure mode tests (1)")
+
+        with AutoReset(pp.ParserElement, "DEFAULT_WHITE_CHARS"):
+            print_(r'no \n in default whitespace chars')
+            pp.ParserElement.setDefaultWhitespaceChars(' ')
+
+            test_patt = pp.Word('A') - pp.LineStart() + pp.Word('B')
+            print_(test_patt.streamline())
+            # should fail the pass tests too, since \n is no longer valid whitespace and we aren't parsing for it
+            success = test_patt.runTests(pass_tests, failureTests=True)[0]
+            self.assertTrue(success, "failed LineStart passing tests (2)")
+
+            success = test_patt.runTests(fail_tests, failureTests=True)[0]
+            self.assertTrue(success, "failed LineStart failure mode tests (2)")
+
+            test_patt = pp.Word('A') - pp.LineEnd().suppress() + pp.LineStart() + pp.Word('B') + pp.LineEnd().suppress()
+            print_(test_patt.streamline())
+            success = test_patt.runTests(pass_tests)[0]
+            self.assertTrue(success, "failed LineStart passing tests (3)")
+
+            success = test_patt.runTests(fail_tests, failureTests=True)[0]
+            self.assertTrue(success, "failed LineStart failure mode tests (3)")
+
+        test = """\
+        AAA 1
+        AAA 2
+
+          AAA
+
+        B AAA
+
+        """
+
+        from textwrap import dedent
+        test = dedent(test)
+        print_(test)
+
+        for t, s, e in (pp.LineStart() + 'AAA').scanString(test):
+            print_(s, e, pp.lineno(s, test), pp.line(s, test), ord(test[s]))
+            print_()
+            self.assertEqual(test[s], 'A', 'failed LineStart with insignificant newlines')
+
+        with AutoReset(pp.ParserElement, "DEFAULT_WHITE_CHARS"):
+            pp.ParserElement.setDefaultWhitespaceChars(' ')
+            for t, s, e in (pp.LineStart() + 'AAA').scanString(test):
+                print_(s, e, pp.lineno(s, test), pp.line(s, test), ord(test[s]))
+                print_()
+                self.assertEqual(test[s], 'A', 'failed LineStart with insignificant newlines')
+
+
+class LineAndStringEndTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import OneOrMore,lineEnd,alphanums,Word,stringEnd,delimitedList,SkipTo
+
+        NLs = OneOrMore(lineEnd)
+        bnf1 = delimitedList(Word(alphanums).leaveWhitespace(), NLs)
+        bnf2 = Word(alphanums) + stringEnd
+        bnf3 = Word(alphanums) + SkipTo(stringEnd)
+        tests = [
+            ("testA\ntestB\ntestC\n", ['testA', 'testB', 'testC']),
+            ("testD\ntestE\ntestF", ['testD', 'testE', 'testF']),
+            ("a", ['a']),
+             ]
+
+        for test,expected in tests:
+            res1 = bnf1.parseString(test)
+            print_(res1,'=?',expected)
+            self.assertEqual(res1.asList(), expected,
+                             "Failed lineEnd/stringEnd test (1): "+repr(test)+ " -> "+str(res1.asList()))
+
+            res2 = bnf2.searchString(test)[0]
+            print_(res2.asList(),'=?',expected[-1:])
+            self.assertEqual(res2.asList(), expected[-1:],
+                             "Failed lineEnd/stringEnd test (2): "+repr(test)+ " -> "+str(res2.asList()))
+
+            res3 = bnf3.parseString(test)
+            first = res3[0]
+            rest = res3[1]
+            #~ print res3.dump()
+            print_(repr(rest),'=?',repr(test[len(first)+1:]))
+            self.assertEqual(rest, test[len(first)+1:],
+                             "Failed lineEnd/stringEnd test (3): " +repr(test)+ " -> "+str(res3.asList()))
+            print_()
+
+        from pyparsing import Regex
+        import re
+
+        k = Regex(r'a+',flags=re.S+re.M)
+        k = k.parseWithTabs()
+        k = k.leaveWhitespace()
+
+        tests = [
+            (r'aaa',['aaa']),
+            (r'\naaa',None),
+            (r'a\naa',None),
+            (r'aaa\n',None),
+            ]
+        for i,(src,expected) in enumerate(tests):
+            print_(i, repr(src).replace('\\\\','\\'), end=' ')
+            try:
+                res = k.parseString(src, parseAll=True).asList()
+            except ParseException as pe:
+                res = None
+            print_(res)
+            self.assertEqual(res, expected, "Failed on parseAll=True test %d" % i)
+
+class VariableParseActionArgsTest(ParseTestCase):
+    def runTest(self):
+
+        pa3 = lambda s,l,t: t
+        pa2 = lambda l,t: t
+        pa1 = lambda t: t
+        pa0 = lambda : None
+        class Callable3(object):
+            def __call__(self,s,l,t):
+                return t
+        class Callable2(object):
+            def __call__(self,l,t):
+                return t
+        class Callable1(object):
+            def __call__(self,t):
+                return t
+        class Callable0(object):
+            def __call__(self):
+                return
+        class CallableS3(object):
+            #~ @staticmethod
+            def __call__(s,l,t):
+                return t
+            __call__=staticmethod(__call__)
+        class CallableS2(object):
+            #~ @staticmethod
+            def __call__(l,t):
+                return t
+            __call__=staticmethod(__call__)
+        class CallableS1(object):
+            #~ @staticmethod
+            def __call__(t):
+                return t
+            __call__=staticmethod(__call__)
+        class CallableS0(object):
+            #~ @staticmethod
+            def __call__():
+                return
+            __call__=staticmethod(__call__)
+        class CallableC3(object):
+            #~ @classmethod
+            def __call__(cls,s,l,t):
+                return t
+            __call__=classmethod(__call__)
+        class CallableC2(object):
+            #~ @classmethod
+            def __call__(cls,l,t):
+                return t
+            __call__=classmethod(__call__)
+        class CallableC1(object):
+            #~ @classmethod
+            def __call__(cls,t):
+                return t
+            __call__=classmethod(__call__)
+        class CallableC0(object):
+            #~ @classmethod
+            def __call__(cls):
+                return
+            __call__=classmethod(__call__)
+
+        class parseActionHolder(object):
+            #~ @staticmethod
+            def pa3(s,l,t):
+                return t
+            pa3=staticmethod(pa3)
+            #~ @staticmethod
+            def pa2(l,t):
+                return t
+            pa2=staticmethod(pa2)
+            #~ @staticmethod
+            def pa1(t):
+                return t
+            pa1=staticmethod(pa1)
+            #~ @staticmethod
+            def pa0():
+                return
+            pa0=staticmethod(pa0)
+
+        def paArgs(*args):
+            print_(args)
+            return args[2]
+
+        class ClassAsPA0(object):
+            def __init__(self):
+                pass
+            def __str__(self):
+                return "A"
+
+        class ClassAsPA1(object):
+            def __init__(self,t):
+                print_("making a ClassAsPA1")
+                self.t = t
+            def __str__(self):
+                return self.t[0]
+
+        class ClassAsPA2(object):
+            def __init__(self,l,t):
+                self.t = t
+            def __str__(self):
+                return self.t[0]
+
+        class ClassAsPA3(object):
+            def __init__(self,s,l,t):
+                self.t = t
+            def __str__(self):
+                return self.t[0]
+
+        class ClassAsPAStarNew(tuple):
+            def __new__(cls, *args):
+                print_("make a ClassAsPAStarNew", args)
+                return tuple.__new__(cls, *args[2].asList())
+            def __str__(self):
+                return ''.join(self)
+
+        #~ def ClassAsPANew(object):
+            #~ def __new__(cls, t):
+                #~ return object.__new__(cls, t)
+            #~ def __init__(self,t):
+                #~ self.t = t
+            #~ def __str__(self):
+                #~ return self.t
+
+        from pyparsing import Literal,OneOrMore
+
+        A = Literal("A").setParseAction(pa0)
+        B = Literal("B").setParseAction(pa1)
+        C = Literal("C").setParseAction(pa2)
+        D = Literal("D").setParseAction(pa3)
+        E = Literal("E").setParseAction(Callable0())
+        F = Literal("F").setParseAction(Callable1())
+        G = Literal("G").setParseAction(Callable2())
+        H = Literal("H").setParseAction(Callable3())
+        I = Literal("I").setParseAction(CallableS0())
+        J = Literal("J").setParseAction(CallableS1())
+        K = Literal("K").setParseAction(CallableS2())
+        L = Literal("L").setParseAction(CallableS3())
+        M = Literal("M").setParseAction(CallableC0())
+        N = Literal("N").setParseAction(CallableC1())
+        O = Literal("O").setParseAction(CallableC2())
+        P = Literal("P").setParseAction(CallableC3())
+        Q = Literal("Q").setParseAction(paArgs)
+        R = Literal("R").setParseAction(parseActionHolder.pa3)
+        S = Literal("S").setParseAction(parseActionHolder.pa2)
+        T = Literal("T").setParseAction(parseActionHolder.pa1)
+        U = Literal("U").setParseAction(parseActionHolder.pa0)
+        V = Literal("V")
+
+        gg = OneOrMore( A | C | D | E | F | G | H |
+                        I | J | K | L | M | N | O | P | Q | R | S | U | V | B | T)
+        testString = "VUTSRQPONMLKJIHGFEDCBA"
+        res = gg.parseString(testString)
+        print_(res.asList())
+        self.assertEqual(res.asList(), list(testString), "Failed to parse using variable length parse actions")
+
+        A = Literal("A").setParseAction(ClassAsPA0)
+        B = Literal("B").setParseAction(ClassAsPA1)
+        C = Literal("C").setParseAction(ClassAsPA2)
+        D = Literal("D").setParseAction(ClassAsPA3)
+        E = Literal("E").setParseAction(ClassAsPAStarNew)
+
+        gg = OneOrMore( A | B | C | D | E | F | G | H |
+                        I | J | K | L | M | N | O | P | Q | R | S | T | U | V)
+        testString = "VUTSRQPONMLKJIHGFEDCBA"
+        res = gg.parseString(testString)
+        print_(list(map(str,res)))
+        self.assertEqual(list(map(str,res)), list(testString),
+                         "Failed to parse using variable length parse actions "
+                         "using class constructors as parse actions")
+
+class EnablePackratParsing(ParseTestCase):
+    def runTest(self):
+        from pyparsing import ParserElement
+        ParserElement.enablePackrat()
+
+class SingleArgExceptionTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import ParseBaseException,ParseFatalException
+
+        msg = ""
+        raisedMsg = ""
+        testMessage = "just one arg"
+        try:
+            raise ParseFatalException(testMessage)
+        except ParseBaseException as pbe:
+            print_("Received expected exception:", pbe)
+            raisedMsg = pbe.msg
+            self.assertEqual(raisedMsg, testMessage, "Failed to get correct exception message")
+
+
+class OriginalTextForTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import makeHTMLTags, originalTextFor
+
+        def rfn(t):
+            return "%s:%d" % (t.src, len("".join(t)))
+
+        makeHTMLStartTag = lambda tag: originalTextFor(makeHTMLTags(tag)[0], asString=False)
+
+        # use the lambda, Luke
+        #~ start, imge = makeHTMLTags('IMG')
+        start = makeHTMLStartTag('IMG')
+
+        # don't replace our fancy parse action with rfn,
+        # append rfn to the list of parse actions
+        #~ start.setParseAction(rfn)
+        start.addParseAction(rfn)
+
+        #start.setParseAction(lambda s,l,t:t.src)
+        text = '''_<img src="images/cal.png"
+            alt="cal image" width="16" height="15">_'''
+        s = start.transformString(text)
+        if VERBOSE:
+            print_(s)
+        self.assertTrue(s.startswith("_images/cal.png:"), "failed to preserve input s properly")
+        self.assertTrue(s.endswith("77_"),"failed to return full original text properly")
+
+        tag_fields = makeHTMLStartTag("IMG").searchString(text)[0]
+        if VERBOSE:
+            print_(sorted(tag_fields.keys()))
+            self.assertEqual(sorted(tag_fields.keys()),
+                             ['alt', 'empty', 'height', 'src', 'startImg', 'tag', 'width'],
+                             'failed to preserve results names in originalTextFor')
+
+class PackratParsingCacheCopyTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word,nums,delimitedList,Literal,Optional,alphas,alphanums,ZeroOrMore,empty
+
+        integer = Word(nums).setName("integer")
+        id = Word(alphas+'_',alphanums+'_')
+        simpleType = Literal('int');
+        arrayType= simpleType+ZeroOrMore('['+delimitedList(integer)+']')
+        varType = arrayType | simpleType
+        varDec  = varType + delimitedList(id + Optional('='+integer))+';'
+
+        codeBlock = Literal('{}')
+
+        funcDef = Optional(varType | 'void')+id+'('+(delimitedList(varType+id)|'void'|empty)+')'+codeBlock
+
+        program = varDec | funcDef
+        input = 'int f(){}'
+        results = program.parseString(input)
+        print_("Parsed '%s' as %s" % (input, results.asList()))
+        self.assertEqual(results.asList(), ['int', 'f', '(', ')', '{}'], "Error in packrat parsing")
+
+class PackratParsingCacheCopyTest2(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Keyword,Word,Suppress,Forward,Optional,delimitedList,Group
+
+        DO,AA = list(map(Keyword, "DO AA".split()))
+        LPAR,RPAR = list(map(Suppress,"()"))
+        identifier = ~AA + Word("Z")
+
+        function_name = identifier.copy()
+        #~ function_name = ~AA + Word("Z")  #identifier.copy()
+        expr = Forward().setName("expr")
+        expr << (Group(function_name + LPAR + Optional(delimitedList(expr)) + RPAR).setName("functionCall") |
+                    identifier.setName("ident")#.setDebug()#.setBreak()
+                   )
+
+        stmt = DO + Group(delimitedList(identifier + ".*" | expr))
+        result = stmt.parseString("DO Z")
+        print_(result.asList())
+        self.assertEqual(len(result[1]), 1, "packrat parsing is duplicating And term exprs")
+
+class ParseResultsDelTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import OneOrMore, Word, alphas, nums
+
+        grammar = OneOrMore(Word(nums))("ints") + OneOrMore(Word(alphas))("words")
+        res = grammar.parseString("123 456 ABC DEF")
+        print_(res.dump())
+        origInts = res.ints.asList()
+        origWords = res.words.asList()
+        del res[1]
+        del res["words"]
+        print_(res.dump())
+        self.assertEqual(res[1], 'ABC',"failed to delete 0'th element correctly")
+        self.assertEqual(res.ints.asList(), origInts, "updated named attributes, should have updated list only")
+        self.assertEqual(res.words, "", "failed to update named attribute correctly")
+        self.assertEqual(res[-1], 'DEF', "updated list, should have updated named attributes only")
+
+class WithAttributeParseActionTest(ParseTestCase):
+    def runTest(self):
+        """
+        This unit test checks withAttribute in these ways:
+
+        * Argument forms as keywords and tuples
+        * Selecting matching tags by attribute
+        * Case-insensitive attribute matching
+        * Correctly matching tags having the attribute, and rejecting tags not having the attribute
+
+        (Unit test written by voigts as part of the Google Highly Open Participation Contest)
+        """
+
+        from pyparsing import makeHTMLTags, Word, withAttribute, withClass, nums
+
+        data = """
+        <a>1</a>
+        <a b="x">2</a>
+        <a B="x">3</a>
+        <a b="X">4</a>
+        <a b="y">5</a>
+        <a class="boo">8</a>
+        """
+        tagStart, tagEnd = makeHTMLTags("a")
+
+        expr = tagStart + Word(nums)("value") + tagEnd
+
+        expected = ([['a', ['b', 'x'], False, '2', '</a>'],
+                     ['a', ['b', 'x'], False, '3', '</a>']],
+                    [['a', ['b', 'x'], False, '2', '</a>'],
+                     ['a', ['b', 'x'], False, '3', '</a>']],
+                    [['a', ['class', 'boo'], False, '8', '</a>']],
+                    )
+
+        for attrib, exp in zip([
+            withAttribute(b="x"),
+            #withAttribute(B="x"),
+            withAttribute(("b","x")),
+            #withAttribute(("B","x")),
+            withClass("boo"),
+            ], expected):
+
+            tagStart.setParseAction(attrib)
+            result = expr.searchString(data)
+
+            print_(result.dump())
+            self.assertEqual(result.asList(), exp, "Failed test, expected %s, got %s" % (expected, result.asList()))
+
+class NestedExpressionsTest(ParseTestCase):
+    def runTest(self):
+        """
+        This unit test checks nestedExpr in these ways:
+        - use of default arguments
+        - use of non-default arguments (such as a pyparsing-defined comment
+          expression in place of quotedString)
+        - use of a custom content expression
+        - use of a pyparsing expression for opener and closer is *OPTIONAL*
+        - use of input data containing nesting delimiters
+        - correct grouping of parsed tokens according to nesting of opening
+          and closing delimiters in the input string
+
+        (Unit test written by christoph... as part of the Google Highly Open Participation Contest)
+        """
+        from pyparsing import nestedExpr, Literal, Regex, restOfLine, quotedString
+
+        #All defaults. Straight out of the example script. Also, qualifies for
+        #the bonus: note the fact that (Z | (E^F) & D) is not parsed :-).
+        # Tests for bug fixed in 1.4.10
+        print_("Test defaults:")
+        teststring = "(( ax + by)*C) (Z | (E^F) & D)"
+
+        expr = nestedExpr()
+
+        expected = [[['ax', '+', 'by'], '*C']]
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected, "Defaults didn't work. That's a bad sign. Expected: %s, got: %s" % (expected, result))
+
+        #Going through non-defaults, one by one; trying to think of anything
+        #odd that might not be properly handled.
+
+        #Change opener
+        print_("\nNon-default opener")
+        opener = "["
+        teststring = test_string = "[[ ax + by)*C)"
+        expected = [[['ax', '+', 'by'], '*C']]
+        expr = nestedExpr("[")
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected, "Non-default opener didn't work. Expected: %s, got: %s" % (expected, result))
+
+        #Change closer
+        print_("\nNon-default closer")
+
+        teststring = test_string = "(( ax + by]*C]"
+        expected = [[['ax', '+', 'by'], '*C']]
+        expr = nestedExpr(closer="]")
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected, "Non-default closer didn't work. Expected: %s, got: %s" % (expected, result))
+
+        # #Multicharacter opener, closer
+        # opener = "bar"
+        # closer = "baz"
+        print_("\nLiteral expressions for opener and closer")
+
+        opener,closer = list(map(Literal, "bar baz".split()))
+        expr = nestedExpr(opener, closer,
+                    content=Regex(r"([^b ]|b(?!a)|ba(?![rz]))+"))
+
+        teststring = "barbar ax + bybaz*Cbaz"
+        expected = [[['ax', '+', 'by'], '*C']]
+        # expr = nestedExpr(opener, closer)
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected, "Multicharacter opener and closer didn't work. Expected: %s, got: %s" % (expected, result))
+
+        #Lisp-ish comments
+        print_("\nUse ignore expression (1)")
+        comment = Regex(r";;.*")
+        teststring = \
+        """
+        (let ((greeting "Hello, world!")) ;;(foo bar
+           (display greeting))
+        """
+
+        expected = [['let', [['greeting', '"Hello,', 'world!"']], ';;(foo bar',\
+                         ['display', 'greeting']]]
+        expr = nestedExpr(ignoreExpr=comment)
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected , "Lisp-ish comments (\";; <...> $\") didn't work. Expected: %s, got: %s" % (expected, result))
+
+
+        #Lisp-ish comments, using a standard bit of pyparsing, and an Or.
+        print_("\nUse ignore expression (2)")
+        comment = ';;' + restOfLine
+
+        teststring = \
+        """
+        (let ((greeting "Hello, )world!")) ;;(foo bar
+           (display greeting))
+        """
+
+        expected = [['let', [['greeting', '"Hello, )world!"']], ';;', '(foo bar',
+                     ['display', 'greeting']]]
+        expr = nestedExpr(ignoreExpr=(comment ^ quotedString))
+        result = expr.parseString(teststring)
+        print_(result.dump())
+        self.assertEqual(result.asList(), expected ,
+                         "Lisp-ish comments (\";; <...> $\") and quoted strings didn't work. Expected: %s, got: %s" % (expected, result))
+
+class WordExcludeTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, printables
+        allButPunc = Word(printables, excludeChars=".,:;-_!?")
+
+        test = "Hello, Mr. Ed, it's Wilbur!"
+        result = allButPunc.searchString(test).asList()
+        print_(result)
+        self.assertEqual(result, [['Hello'], ['Mr'], ['Ed'], ["it's"], ['Wilbur']], "failed WordExcludeTest")
+
+class ParseAllTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, cppStyleComment
+
+        testExpr = Word("A")
+
+        tests = [
+            ("AAAAA", False, True),
+            ("AAAAA", True, True),
+            ("AAABB", False, True),
+            ("AAABB", True, False),
+            ]
+        for s,parseAllFlag,shouldSucceed in tests:
+            try:
+                print_("'%s' parseAll=%s (shouldSuceed=%s)" % (s, parseAllFlag, shouldSucceed))
+                testExpr.parseString(s,parseAllFlag)
+                self.assertTrue(shouldSucceed, "successfully parsed when should have failed")
+            except ParseException as pe:
+                self.assertFalse(shouldSucceed, "failed to parse when should have succeeded")
+
+        # add test for trailing comments
+        testExpr.ignore(cppStyleComment)
+
+        tests = [
+            ("AAAAA //blah", False, True),
+            ("AAAAA //blah", True, True),
+            ("AAABB //blah", False, True),
+            ("AAABB //blah", True, False),
+            ]
+        for s,parseAllFlag,shouldSucceed in tests:
+            try:
+                print_("'%s' parseAll=%s (shouldSucceed=%s)" % (s, parseAllFlag, shouldSucceed))
+                testExpr.parseString(s,parseAllFlag)
+                self.assertTrue(shouldSucceed, "successfully parsed when should have failed")
+            except ParseException as pe:
+                self.assertFalse(shouldSucceed, "failed to parse when should have succeeded")
+
+class GreedyQuotedStringsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import QuotedString, sglQuotedString, dblQuotedString, quotedString, delimitedList
+
+        src = """\
+           "string1", "strin""g2"
+           'string1', 'string2'
+           ^string1^, ^string2^
+           <string1>, <string2>"""
+
+        testExprs = (sglQuotedString, dblQuotedString, quotedString,
+                    QuotedString('"', escQuote='""'), QuotedString("'", escQuote="''"),
+                    QuotedString("^"), QuotedString("<",endQuoteChar=">"))
+        for expr in testExprs:
+            strs = delimitedList(expr).searchString(src)
+            print_(strs)
+            self.assertTrue(bool(strs), "no matches found for test expression '%s'"  % expr)
+            for lst in strs:
+                self.assertEqual(len(lst), 2, "invalid match found for test expression '%s'"  % expr)
+
+        from pyparsing import alphas, nums, Word
+        src = """'ms1',1,0,'2009-12-22','2009-12-22 10:41:22') ON DUPLICATE KEY UPDATE sent_count = sent_count + 1, mtime = '2009-12-22 10:41:22';"""
+        tok_sql_quoted_value = (
+            QuotedString("'", "\\", "''", True, False) ^
+            QuotedString('"', "\\", '""', True, False))
+        tok_sql_computed_value = Word(nums)
+        tok_sql_identifier = Word(alphas)
+
+        val = tok_sql_quoted_value | tok_sql_computed_value | tok_sql_identifier
+        vals = delimitedList(val)
+        print_(vals.parseString(src))
+        self.assertEqual(len(vals.parseString(src)), 5, "error in greedy quote escaping")
+
+
+class WordBoundaryExpressionsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import WordEnd, WordStart, oneOf
+
+        ws = WordStart()
+        we = WordEnd()
+        vowel = oneOf(list("AEIOUY"))
+        consonant = oneOf(list("BCDFGHJKLMNPQRSTVWXZ"))
+
+        leadingVowel = ws + vowel
+        trailingVowel = vowel + we
+        leadingConsonant = ws + consonant
+        trailingConsonant = consonant + we
+        internalVowel = ~ws + vowel + ~we
+
+        bnf = leadingVowel | trailingVowel
+
+        tests = """\
+        ABC DEF GHI
+          JKL MNO PQR
+        STU VWX YZ  """.splitlines()
+        tests.append( "\n".join(tests) )
+
+        expectedResult = [
+            [['D', 'G'], ['A'], ['C', 'F'], ['I'], ['E'], ['A', 'I']],
+            [['J', 'M', 'P'], [], ['L', 'R'], ['O'], [], ['O']],
+            [['S', 'V'], ['Y'], ['X', 'Z'], ['U'], [], ['U', 'Y']],
+            [['D', 'G', 'J', 'M', 'P', 'S', 'V'],
+             ['A', 'Y'],
+             ['C', 'F', 'L', 'R', 'X', 'Z'],
+             ['I', 'O', 'U'],
+             ['E'],
+             ['A', 'I', 'O', 'U', 'Y']],
+            ]
+
+        for t,expected in zip(tests, expectedResult):
+            print_(t)
+            results = [flatten(e.searchString(t).asList()) for e in [
+                leadingConsonant,
+                leadingVowel,
+                trailingConsonant,
+                trailingVowel,
+                internalVowel,
+                bnf,
+                ]]
+            print_(results)
+            print_()
+            self.assertEqual(results, expected,"Failed WordBoundaryTest, expected %s, got %s" % (expected,results))
+
+class RequiredEachTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Keyword
+
+        parser = Keyword('bam') & Keyword('boo')
+        try:
+            res1 = parser.parseString('bam boo')
+            print_(res1.asList())
+            res2 = parser.parseString('boo bam')
+            print_(res2.asList())
+        except ParseException:
+            failed = True
+        else:
+            failed = False
+            self.assertFalse(failed, "invalid logic in Each")
+
+            self.assertEqual(set(res1), set(res2), "Failed RequiredEachTest, expected "
+                             + str(res1.asList()) + " and " + str(res2.asList())
+                             + "to contain same words in any order" )
+
+class OptionalEachTest(ParseTestCase):
+    def runTest1(self):
+        from pyparsing import Optional, Keyword
+
+        the_input = "Major Tal Weiss"
+        parser1 = (Optional('Tal') + Optional('Weiss')) & Keyword('Major')
+        parser2 = Optional(Optional('Tal') + Optional('Weiss')) & Keyword('Major')
+        p1res = parser1.parseString( the_input)
+        p2res = parser2.parseString( the_input)
+        self.assertEqual(p1res.asList(), p2res.asList(),
+                         "Each failed to match with nested Optionals, "
+                         + str(p1res.asList()) + " should match " + str(p2res.asList()))
+
+    def runTest2(self):
+        from pyparsing import Word, alphanums, OneOrMore, Group, Regex, Optional
+
+        word = Word(alphanums + '_').setName("word")
+        with_stmt = 'with' + OneOrMore(Group(word('key') + '=' + word('value')))('overrides')
+        using_stmt = 'using' + Regex('id-[0-9a-f]{8}')('id')
+        modifiers = Optional(with_stmt('with_stmt')) & Optional(using_stmt('using_stmt'))
+
+        self.assertEqual(modifiers, "with foo=bar bing=baz using id-deadbeef")
+        self.assertNotEqual(modifiers, "with foo=bar bing=baz using id-deadbeef using id-feedfeed")
+
+    def runTest3(self):
+        from pyparsing import Literal,Suppress,ZeroOrMore,OneOrMore
+
+        foo = Literal('foo')
+        bar = Literal('bar')
+
+        openBrace = Suppress(Literal("{"))
+        closeBrace = Suppress(Literal("}"))
+
+        exp = openBrace + (OneOrMore(foo)("foo") & ZeroOrMore(bar)("bar")) + closeBrace
+
+        tests = """\
+            {foo}
+            {bar foo bar foo bar foo}
+            """.splitlines()
+        for test in tests:
+            test = test.strip()
+            if not test:
+                continue
+            result = exp.parseString(test)
+            print_(test, '->', result.asList())
+            self.assertEqual(result.asList(), test.strip("{}").split(), "failed to parse Each expression %r" % test)
+            print_(result.dump())
+
+        try:
+            result = exp.parseString("{bar}")
+            self.assertTrue(False, "failed to raise exception when required element is missing")
+        except ParseException as pe:
+            pass
+
+    def runTest4(self):
+        from pyparsing import pyparsing_common, ZeroOrMore, Group
+
+        expr = ((~pyparsing_common.iso8601_date + pyparsing_common.integer("id"))
+                & ZeroOrMore(Group(pyparsing_common.iso8601_date)("date*")))
+
+        expr.runTests("""
+            1999-12-31 100 2001-01-01
+            42
+            """)
+
+
+    def runTest(self):
+        self.runTest1()
+        self.runTest2()
+        self.runTest3()
+        self.runTest4()
+
+class SumParseResultsTest(ParseTestCase):
+    def runTest(self):
+
+        samplestr1 = "garbage;DOB 10-10-2010;more garbage\nID PARI12345678;more garbage"
+        samplestr2 = "garbage;ID PARI12345678;more garbage\nDOB 10-10-2010;more garbage"
+        samplestr3 = "garbage;DOB 10-10-2010"
+        samplestr4 = "garbage;ID PARI12345678;more garbage- I am cool"
+
+        res1 = "ID:PARI12345678 DOB:10-10-2010 INFO:"
+        res2 = "ID:PARI12345678 DOB:10-10-2010 INFO:"
+        res3 = "ID: DOB:10-10-2010 INFO:"
+        res4 = "ID:PARI12345678 DOB: INFO: I am cool"
+
+        from pyparsing import Regex, Word, alphanums, restOfLine
+        dob_ref = "DOB" + Regex(r"\d{2}-\d{2}-\d{4}")("dob")
+        id_ref = "ID" + Word(alphanums,exact=12)("id")
+        info_ref = "-" + restOfLine("info")
+
+        person_data = dob_ref | id_ref | info_ref
+
+        tests = (samplestr1,samplestr2,samplestr3,samplestr4,)
+        results = (res1, res2, res3, res4,)
+        for test,expected in zip(tests, results):
+            person = sum(person_data.searchString(test))
+            result = "ID:%s DOB:%s INFO:%s" % (person.id, person.dob, person.info)
+            print_(test)
+            print_(expected)
+            print_(result)
+            for pd in person_data.searchString(test):
+                print_(pd.dump())
+            print_()
+            self.assertEqual(expected, result,
+                             "Failed to parse '%s' correctly, \nexpected '%s', got '%s'" % (test,expected,result))
+
+class MarkInputLineTest(ParseTestCase):
+    def runTest(self):
+
+        samplestr1 = "DOB 100-10-2010;more garbage\nID PARI12345678;more garbage"
+
+        from pyparsing import Regex
+        dob_ref = "DOB" + Regex(r"\d{2}-\d{2}-\d{4}")("dob")
+
+        try:
+            res = dob_ref.parseString(samplestr1)
+        except ParseException as pe:
+            outstr = pe.markInputline()
+            print_(outstr)
+            self.assertEqual(outstr, "DOB >!<100-10-2010;more garbage", "did not properly create marked input line")
+        else:
+            self.assertEqual(False, "test construction failed - should have raised an exception")
+
+class LocatedExprTest(ParseTestCase):
+    def runTest(self):
+
+        #             012345678901234567890123456789012345678901234567890
+        samplestr1 = "DOB 10-10-2010;more garbage;ID PARI12345678  ;more garbage"
+
+        from pyparsing import Word, alphanums, locatedExpr
+        id_ref = locatedExpr("ID" + Word(alphanums,exact=12)("id"))
+
+        res = id_ref.searchString(samplestr1)[0][0]
+        print_(res.dump())
+        self.assertEqual(samplestr1[res.locn_start:res.locn_end], 'ID PARI12345678', "incorrect location calculation")
+
+
+class PopTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, alphas, nums
+
+        source = "AAA 123 456 789 234"
+        patt = Word(alphas)("name") + Word(nums)*(1,)
+
+        result = patt.parseString(source)
+        tests = [
+            (0, 'AAA', ['123', '456', '789', '234']),
+            (None, '234', ['123', '456', '789']),
+            ('name', 'AAA', ['123', '456', '789']),
+            (-1, '789', ['123', '456']),
+            ]
+        for test in tests:
+            idx, val, remaining = test
+            if idx is not None:
+                ret = result.pop(idx)
+            else:
+                ret = result.pop()
+            print_("EXP:", val, remaining)
+            print_("GOT:", ret, result.asList())
+            print_(ret, result.asList())
+            self.assertEqual(ret, val, "wrong value returned, got %r, expected %r" % (ret, val))
+            self.assertEqual(remaining, result.asList(),
+                             "list is in wrong state after pop, got %r, expected %r" % (result.asList(), remaining))
+            print_()
+
+        prevlist = result.asList()
+        ret = result.pop('name', default="noname")
+        print_(ret)
+        print_(result.asList())
+        self.assertEqual(ret, "noname",
+                         "default value not successfully returned, got %r, expected %r" % (ret, "noname"))
+        self.assertEqual(result.asList(), prevlist,
+                         "list is in wrong state after pop, got %r, expected %r" % (result.asList(), remaining))
+
+
+class AddConditionTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, nums, Suppress, ParseFatalException
+
+        numParser = Word(nums)
+        numParser.addParseAction(lambda s,l,t: int(t[0]))
+        numParser.addCondition(lambda s,l,t: t[0] % 2)
+        numParser.addCondition(lambda s,l,t: t[0] >= 7)
+
+        result = numParser.searchString("1 2 3 4 5 6 7 8 9 10")
+        print_(result.asList())
+        self.assertEqual(result.asList(), [[7],[9]], "failed to properly process conditions")
+
+        numParser = Word(nums)
+        numParser.addParseAction(lambda s,l,t: int(t[0]))
+        rangeParser = (numParser("from_") + Suppress('-') + numParser("to"))
+
+        result = rangeParser.searchString("1-4 2-4 4-3 5 6 7 8 9 10")
+        print_(result.asList())
+        self.assertEqual(result.asList(), [[1, 4], [2, 4], [4, 3]], "failed to properly process conditions")
+
+        rangeParser.addCondition(lambda t: t.to > t.from_, message="from must be <= to", fatal=False)
+        result = rangeParser.searchString("1-4 2-4 4-3 5 6 7 8 9 10")
+        print_(result.asList())
+        self.assertEqual(result.asList(), [[1, 4], [2, 4]], "failed to properly process conditions")
+
+        rangeParser = (numParser("from_") + Suppress('-') + numParser("to"))
+        rangeParser.addCondition(lambda t: t.to > t.from_, message="from must be <= to", fatal=True)
+        try:
+            result = rangeParser.searchString("1-4 2-4 4-3 5 6 7 8 9 10")
+            self.assertTrue(False, "failed to interrupt parsing on fatal condition failure")
+        except ParseFatalException:
+            print_("detected fatal condition")
+
+class PatientOrTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        # Two expressions and a input string which could - syntactically - be matched against
+        # both expressions. The "Literal" expression is considered invalid though, so this PE
+        # should always detect the "Word" expression.
+        def validate(token):
+            if token[0] == "def":
+                raise pp.ParseException("signalling invalid token")
+            return token
+
+        a = pp.Word("de").setName("Word")#.setDebug()
+        b = pp.Literal("def").setName("Literal").setParseAction(validate)#.setDebug()
+        c = pp.Literal("d").setName("d")#.setDebug()
+
+        # The "Literal" expressions's ParseAction is not executed directly after syntactically
+        # detecting the "Literal" Expression but only after the Or-decision has been made
+        # (which is too late)...
+        try:
+            result = (a ^ b ^ c).parseString("def")
+            self.assertEqual(result.asList(), ['de'], "failed to select longest match, chose %s" % result)
+        except ParseException:
+            failed = True
+        else:
+            failed = False
+            self.assertFalse(failed, "invalid logic in Or, fails on longest match with exception in parse action")
+
+class EachWithOptionalWithResultsNameTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Optional
+
+        result = (Optional('foo')('one') & Optional('bar')('two')).parseString('bar foo')
+        print_(result.dump())
+        self.assertEqual(sorted(result.keys()), ['one','two'])
+
+class UnicodeExpressionTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Literal, ParseException
+
+        z = 'a' | Literal(u'\u1111')
+        z.streamline()
+        try:
+            z.parseString('b')
+        except ParseException as pe:
+            if not PY_3:
+                self.assertEqual(pe.msg, r'''Expected {"a" | "\u1111"}''',
+                                 "Invalid error message raised, got %r" % pe.msg)
+            else:
+                self.assertEqual(pe.msg, r'''Expected {"a" | "ᄑ"}''',
+                                 "Invalid error message raised, got %r" % pe.msg)
+
+class SetNameTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import (oneOf,infixNotation,Word,nums,opAssoc,delimitedList,countedArray,
+            nestedExpr,makeHTMLTags,anyOpenTag,anyCloseTag,commonHTMLEntity,replaceHTMLEntity)
+
+        a = oneOf("a b c")
+        b = oneOf("d e f")
+        arith_expr = infixNotation(Word(nums),
+                        [
+                        (oneOf('* /'),2,opAssoc.LEFT),
+                        (oneOf('+ -'),2,opAssoc.LEFT),
+                        ])
+        arith_expr2 = infixNotation(Word(nums),
+                        [
+                        (('?',':'),3,opAssoc.LEFT),
+                        ])
+
+        tests = [
+            a,
+            b,
+            (a | b),
+            arith_expr,
+            arith_expr.expr,
+            arith_expr2,
+            arith_expr2.expr,
+            delimitedList(Word(nums).setName("int")),
+            countedArray(Word(nums).setName("int")),
+            nestedExpr(),
+            makeHTMLTags('Z'),
+            (anyOpenTag,anyCloseTag),
+            commonHTMLEntity,
+            commonHTMLEntity.setParseAction(replaceHTMLEntity).transformString("lsdjkf &lt;lsdjkf&gt;&amp;&apos;&quot;&xyzzy;"),
+            ]
+
+        expected = map(str.strip, """\
+            a | b | c
+            d | e | f
+            {a | b | c | d | e | f}
+            Forward: ...
+            + | - term
+            Forward: ...
+            ?: term
+            int [, int]...
+            (len) int...
+            nested () expression
+            (<Z>, </Z>)
+            (<any tag>, </any tag>)
+            common HTML entity
+            lsdjkf <lsdjkf>&'"&xyzzy;""".splitlines())
+
+        for t,e in zip(tests, expected):
+            tname = str(t)
+            self.assertEqual(tname, e, "expression name mismatch, expected {0} got {1}".format(e, tname))
+
+class TrimArityExceptionMaskingTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word
+
+        invalid_message = [
+            "<lambda>() takes exactly 1 argument (0 given)",
+            "<lambda>() missing 1 required positional argument: 't'"
+            ][PY_3]
+        try:
+            Word('a').setParseAction(lambda t: t[0]+1).parseString('aaa')
+        except Exception as e:
+            exc_msg = str(e)
+            self.assertNotEqual(exc_msg, invalid_message, "failed to catch TypeError thrown in _trim_arity")
+
+class TrimArityExceptionMaskingTest2(ParseTestCase):
+    def runTest(self):
+        # construct deep call tree
+        def A():
+            import traceback
+
+            traceback.print_stack(limit=2)
+
+            from pyparsing import Word
+
+            invalid_message = [
+                "<lambda>() takes exactly 1 argument (0 given)",
+                "<lambda>() missing 1 required positional argument: 't'"
+                ][PY_3]
+            try:
+                Word('a').setParseAction(lambda t: t[0]+1).parseString('aaa')
+            except Exception as e:
+                exc_msg = str(e)
+                self.assertNotEqual(exc_msg, invalid_message, "failed to catch TypeError thrown in _trim_arity")
+
+
+        def B():
+            A()
+
+        def C():
+            B()
+
+        def D():
+            C()
+
+        def E():
+            D()
+
+        def F():
+            E()
+
+        def G():
+            F()
+
+        def H():
+            G()
+
+        def J():
+            H()
+
+        def K():
+            J()
+
+        K()
+
+class OneOrMoreStopTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import (Word, OneOrMore, alphas, Keyword, CaselessKeyword,
+            nums, alphanums)
+
+        test = "BEGIN aaa bbb ccc END"
+        BEGIN,END = map(Keyword, "BEGIN,END".split(','))
+        body_word = Word(alphas).setName("word")
+        for ender in (END, "END", CaselessKeyword("END")):
+            expr = BEGIN + OneOrMore(body_word, stopOn=ender) + END
+            self.assertEqual(test, expr, "Did not successfully stop on ending expression %r" % ender)
+
+        number = Word(nums+',.()').setName("number with optional commas")
+        parser= (OneOrMore(Word(alphanums+'-/.'), stopOn=number)('id').setParseAction(' '.join)
+                    + number('data'))
+        result = parser.parseString('        XXX Y/123          1,234.567890')
+        self.assertEqual(result.asList(), ['XXX Y/123', '1,234.567890'],
+                         "Did not successfully stop on ending expression %r" % number)
+
+class ZeroOrMoreStopTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import (Word, ZeroOrMore, alphas, Keyword, CaselessKeyword)
+
+        test = "BEGIN END"
+        BEGIN,END = map(Keyword, "BEGIN,END".split(','))
+        body_word = Word(alphas).setName("word")
+        for ender in (END, "END", CaselessKeyword("END")):
+            expr = BEGIN + ZeroOrMore(body_word, stopOn=ender) + END
+            self.assertEqual(test, expr, "Did not successfully stop on ending expression %r" % ender)
+
+class NestedAsDictTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Literal, Forward, alphanums, Group, delimitedList, Dict, Word, Optional
+
+        equals = Literal("=").suppress()
+        lbracket = Literal("[").suppress()
+        rbracket = Literal("]").suppress()
+        lbrace = Literal("{").suppress()
+        rbrace = Literal("}").suppress()
+
+        value_dict          = Forward()
+        value_list          = Forward()
+        value_string        = Word(alphanums + "@. ")
+
+        value               = value_list ^ value_dict ^ value_string
+        values              = Group(delimitedList(value, ","))
+        #~ values              = delimitedList(value, ",").setParseAction(lambda toks: [toks.asList()])
+
+        value_list          << lbracket + values + rbracket
+
+        identifier          = Word(alphanums + "_.")
+
+        assignment          = Group(identifier + equals + Optional(value))
+        assignments         = Dict(delimitedList(assignment, ';'))
+        value_dict          << lbrace + assignments + rbrace
+
+        response = assignments
+
+        rsp = 'username=goat; errors={username=[already taken, too short]}; empty_field='
+        result_dict = response.parseString(rsp).asDict()
+        print_(result_dict)
+        self.assertEqual(result_dict['username'], 'goat', "failed to process string in ParseResults correctly")
+        self.assertEqual(result_dict['errors']['username'], ['already taken', 'too short'],
+                         "failed to process nested ParseResults correctly")
+
+class TraceParseActionDecoratorTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import traceParseAction, Word, nums
+
+        @traceParseAction
+        def convert_to_int(t):
+            return int(t[0])
+
+        class Z(object):
+            def __call__(self, other):
+                return other[0] * 1000
+
+        integer = Word(nums).addParseAction(convert_to_int)
+        integer.addParseAction(traceParseAction(lambda t: t[0]*10))
+        integer.addParseAction(traceParseAction(Z()))
+        integer.parseString("132")
+
+class RunTestsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import Word, nums, delimitedList
+
+        integer = Word(nums).setParseAction(lambda t : int(t[0]))
+        intrange = integer("start") + '-' + integer("end")
+        intrange.addCondition(lambda t: t.end > t.start, message="invalid range, start must be <= end", fatal=True)
+        intrange.addParseAction(lambda t: list(range(t.start, t.end+1)))
+
+        indices = delimitedList(intrange | integer)
+        indices.addParseAction(lambda t: sorted(set(t)))
+
+        tests = """\
+            # normal data
+            1-3,2-4,6,8-10,16
+
+            # lone integer
+            11"""
+        results = indices.runTests(tests, printResults=False)[1]
+
+        expectedResults = [
+            [1, 2, 3, 4, 6, 8, 9, 10, 16],
+            [11],
+            ]
+        for res, expected in zip(results, expectedResults):
+            print_(res[1].asList())
+            print_(expected)
+            self.assertEqual(res[1].asList(), expected, "failed test: " + str(expected))
+
+        tests = """\
+            # invalid range
+            1-2, 3-1, 4-6, 7, 12
+            """
+        success = indices.runTests(tests, printResults=False, failureTests=True)[0]
+        self.assertTrue(success, "failed to raise exception on improper range test")
+
+class RunTestsPostParseTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        integer = pp.pyparsing_common.integer
+        fraction = integer('numerator') + '/' + integer('denominator')
+
+        accum = []
+        def eval_fraction(test, result):
+            accum.append((test, result.asList()))
+            return "eval: {0}".format(result.numerator / result.denominator)
+
+        success = fraction.runTests("""\
+            1/2
+            1/0
+        """, postParse=eval_fraction)[0]
+        print_(success)
+
+        self.assertTrue(success, "failed to parse fractions in RunTestsPostParse")
+
+        expected_accum = [('1/2', [1, '/', 2]), ('1/0', [1, '/', 0])]
+        self.assertEqual(accum, expected_accum, "failed to call postParse method during runTests")
+
+class CommonExpressionsTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import pyparsing_common
+        import ast
+
+        success = pyparsing_common.mac_address.runTests("""
+            AA:BB:CC:DD:EE:FF
+            AA.BB.CC.DD.EE.FF
+            AA-BB-CC-DD-EE-FF
+            """)[0]
+        self.assertTrue(success, "error in parsing valid MAC address")
+
+        success = pyparsing_common.mac_address.runTests("""
+            # mixed delimiters
+            AA.BB:CC:DD:EE:FF
+            """, failureTests=True)[0]
+        self.assertTrue( success, "error in detecting invalid mac address")
+
+        success = pyparsing_common.ipv4_address.runTests("""
+            0.0.0.0
+            1.1.1.1
+            127.0.0.1
+            1.10.100.199
+            255.255.255.255
+            """)[0]
+        self.assertTrue(success, "error in parsing valid IPv4 address")
+
+        success = pyparsing_common.ipv4_address.runTests("""
+            # out of range value
+            256.255.255.255
+            """, failureTests=True)[0]
+        self.assertTrue(success, "error in detecting invalid IPv4 address")
+
+        success = pyparsing_common.ipv6_address.runTests("""
+            2001:0db8:85a3:0000:0000:8a2e:0370:7334
+            2134::1234:4567:2468:1236:2444:2106
+            0:0:0:0:0:0:A00:1
+            1080::8:800:200C:417A
+            ::A00:1
+
+            # loopback address
+            ::1
+
+            # the null address
+            ::
+
+            # ipv4 compatibility form
+            ::ffff:192.168.0.1
+            """)[0]
+        self.assertTrue(success, "error in parsing valid IPv6 address")
+
+        success = pyparsing_common.ipv6_address.runTests("""
+            # too few values
+            1080:0:0:0:8:800:200C
+
+            # too many ::'s, only 1 allowed
+            2134::1234:4567::2444:2106
+            """, failureTests=True)[0]
+        self.assertTrue(success, "error in detecting invalid IPv6 address")
+
+        success = pyparsing_common.number.runTests("""
+            100
+            -100
+            +100
+            3.14159
+            6.02e23
+            1e-12
+            """)[0]
+        self.assertTrue(success, "error in parsing valid numerics")
+
+        success = pyparsing_common.sci_real.runTests("""
+            1e12
+            -1e12
+            3.14159
+            6.02e23
+            """)[0]
+        self.assertTrue(success, "error in parsing valid scientific notation reals")
+
+        # any int or real number, returned as float
+        success = pyparsing_common.fnumber.runTests("""
+            100
+            -100
+            +100
+            3.14159
+            6.02e23
+            1e-12
+            """)[0]
+        self.assertTrue(success, "error in parsing valid numerics")
+
+        success, results = pyparsing_common.iso8601_date.runTests("""
+            1997
+            1997-07
+            1997-07-16
+            """)
+        self.assertTrue(success, "error in parsing valid iso8601_date")
+        expected = [
+            ('1997', None, None),
+            ('1997', '07', None),
+            ('1997', '07', '16'),
+        ]
+        for r,exp in zip(results, expected):
+            self.assertTrue((r[1].year,r[1].month,r[1].day,) == exp, "failed to parse date into fields")
+
+        success, results = pyparsing_common.iso8601_date().addParseAction(pyparsing_common.convertToDate()).runTests("""
+            1997-07-16
+            """)
+        self.assertTrue(success, "error in parsing valid iso8601_date with parse action")
+        self.assertTrue(results[0][1][0] == datetime.date(1997, 7, 16))
+
+        success, results = pyparsing_common.iso8601_datetime.runTests("""
+            1997-07-16T19:20+01:00
+            1997-07-16T19:20:30+01:00
+            1997-07-16T19:20:30.45Z
+            1997-07-16 19:20:30.45
+            """)
+        self.assertTrue(success, "error in parsing valid iso8601_datetime")
+
+        success, results = pyparsing_common.iso8601_datetime().addParseAction(pyparsing_common.convertToDatetime()).runTests("""
+            1997-07-16T19:20:30.45
+            """)
+        self.assertTrue(success, "error in parsing valid iso8601_datetime")
+        self.assertTrue(results[0][1][0] == datetime.datetime(1997, 7, 16, 19, 20, 30, 450000))
+
+        success = pyparsing_common.uuid.runTests("""
+            123e4567-e89b-12d3-a456-426655440000
+            """)[0]
+        self.assertTrue(success, "failed to parse valid uuid")
+
+        success = pyparsing_common.fraction.runTests("""
+            1/2
+            -15/16
+            -3/-4
+            """)[0]
+        self.assertTrue(success, "failed to parse valid fraction")
+
+        success = pyparsing_common.mixed_integer.runTests("""
+            1/2
+            -15/16
+            -3/-4
+            1 1/2
+            2 -15/16
+            0 -3/-4
+            12
+            """)[0]
+        self.assertTrue(success, "failed to parse valid mixed integer")
+
+        success, results = pyparsing_common.number.runTests("""
+            100
+            -3
+            1.732
+            -3.14159
+            6.02e23""")
+        self.assertTrue(success, "failed to parse numerics")
+
+        for test,result in results:
+            expected = ast.literal_eval(test)
+            self.assertEqual(result[0], expected, "numeric parse failed (wrong value) (%s should be %s)" % (result[0], expected))
+            self.assertEqual(type(result[0]), type(expected), "numeric parse failed (wrong type) (%s should be %s)" % (type(result[0]), type(expected)))
+
+
+class TokenMapTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import tokenMap, Word, hexnums, OneOrMore
+
+        parser = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16))
+        success, results = parser.runTests("""
+            00 11 22 aa FF 0a 0d 1a
+            """, printResults=False)
+        self.assertTrue(success, "failed to parse hex integers")
+        print_(results)
+        self.assertEqual(results[0][-1].asList(), [0, 17, 34, 170, 255, 10, 13, 26], "tokenMap parse action failed")
+
+
+class ParseFileTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import pyparsing_common, OneOrMore
+        s = """
+        123 456 789
+        """
+        input_file = StringIO(s)
+        integer = pyparsing_common.integer
+
+        results = OneOrMore(integer).parseFile(input_file)
+        print_(results)
+
+        results = OneOrMore(integer).parseFile('test/parsefiletest_input_file.txt')
+        print_(results)
+
+
+class HTMLStripperTest(ParseTestCase):
+    def runTest(self):
+        from pyparsing import pyparsing_common, originalTextFor, OneOrMore, Word, printables
+
+        sample = """
+        <html>
+        Here is some sample <i>HTML</i> text.
+        </html>
+        """
+        read_everything = originalTextFor(OneOrMore(Word(printables)))
+        read_everything.addParseAction(pyparsing_common.stripHTMLTags)
+
+        result = read_everything.parseString(sample)
+        self.assertEqual(result[0].strip(), 'Here is some sample HTML text.')
+
+class ExprSplitterTest(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import Literal, quotedString, pythonStyleComment, Empty
+
+        expr = Literal(';') + Empty()
+        expr.ignore(quotedString)
+        expr.ignore(pythonStyleComment)
+
+
+        sample = """
+        def main():
+            this_semi_does_nothing();
+            neither_does_this_but_there_are_spaces_afterward();
+            a = "a;b"; return a # this is a comment; it has a semicolon!
+
+        def b():
+            if False:
+                z=1000;b("; in quotes");  c=200;return z
+            return ';'
+
+        class Foo(object):
+            def bar(self):
+                '''a docstring; with a semicolon'''
+                a = 10; b = 11; c = 12
+
+                # this comment; has several; semicolons
+                if self.spam:
+                    x = 12; return x # so; does; this; one
+                    x = 15;;; y += x; return y
+
+            def baz(self):
+                return self.bar
+        """
+        expected = [
+            ['            this_semi_does_nothing()', ''],
+            ['            neither_does_this_but_there_are_spaces_afterward()', ''],
+            ['            a = "a;b"', 'return a # this is a comment; it has a semicolon!'],
+            ['                z=1000', 'b("; in quotes")', 'c=200', 'return z'],
+            ["            return ';'"],
+            ["                '''a docstring; with a semicolon'''"],
+            ['                a = 10', 'b = 11', 'c = 12'],
+            ['                # this comment; has several; semicolons'],
+            ['                    x = 12', 'return x # so; does; this; one'],
+            ['                    x = 15', '', '', 'y += x', 'return y'],
+            ]
+
+        exp_iter = iter(expected)
+        for line in filter(lambda ll: ';' in ll, sample.splitlines()):
+            print_(str(list(expr.split(line)))+',')
+            self.assertEqual(list(expr.split(line)), next(exp_iter), "invalid split on expression")
+
+        print_()
+
+        expected = [
+            ['            this_semi_does_nothing()', ';', ''],
+            ['            neither_does_this_but_there_are_spaces_afterward()', ';', ''],
+            ['            a = "a;b"', ';', 'return a # this is a comment; it has a semicolon!'],
+            ['                z=1000', ';', 'b("; in quotes")', ';', 'c=200', ';', 'return z'],
+            ["            return ';'"],
+            ["                '''a docstring; with a semicolon'''"],
+            ['                a = 10', ';', 'b = 11', ';', 'c = 12'],
+            ['                # this comment; has several; semicolons'],
+            ['                    x = 12', ';', 'return x # so; does; this; one'],
+            ['                    x = 15', ';', '', ';', '', ';', 'y += x', ';', 'return y'],
+            ]
+        exp_iter = iter(expected)
+        for line in filter(lambda ll: ';' in ll, sample.splitlines()):
+            print_(str(list(expr.split(line, includeSeparators=True)))+',')
+            self.assertEqual(list(expr.split(line, includeSeparators=True)), next(exp_iter),
+                             "invalid split on expression")
+
+        print_()
+
+
+        expected = [
+            ['            this_semi_does_nothing()', ''],
+            ['            neither_does_this_but_there_are_spaces_afterward()', ''],
+            ['            a = "a;b"', 'return a # this is a comment; it has a semicolon!'],
+            ['                z=1000', 'b("; in quotes");  c=200;return z'],
+            ['                a = 10', 'b = 11; c = 12'],
+            ['                    x = 12', 'return x # so; does; this; one'],
+            ['                    x = 15', ';; y += x; return y'],
+            ]
+        exp_iter = iter(expected)
+        for line in sample.splitlines():
+            pieces = list(expr.split(line, maxsplit=1))
+            print_(str(pieces)+',')
+            if len(pieces) == 2:
+                exp = next(exp_iter)
+                self.assertEqual(pieces, exp, "invalid split on expression with maxSplits=1")
+            elif len(pieces) == 1:
+                self.assertEqual(len(expr.searchString(line)), 0, "invalid split with maxSplits=1 when expr not present")
+            else:
+                print_("\n>>> " + line)
+                self.assertTrue(False, "invalid split on expression with maxSplits=1, corner case")
+
+class ParseFatalExceptionTest(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import Word, nums, ParseFatalException
+
+        success = False
+        try:
+            expr = "ZZZ" - Word(nums)
+            expr.parseString("ZZZ bad")
+        except ParseFatalException as pfe:
+            print_('ParseFatalException raised correctly')
+            success = True
+        except Exception as e:
+            print_(type(e))
+            print_(e)
+
+        self.assertTrue(success, "bad handling of syntax error")
+
+class InlineLiteralsUsingTest(ParseTestCase):
+    def runTest(self):
+
+        from pyparsing import ParserElement, Suppress, Literal, CaselessLiteral, Word, alphas, oneOf, CaselessKeyword, nums
+
+        with AutoReset(ParserElement, "_literalStringClass"):
+            ParserElement.inlineLiteralsUsing(Suppress)
+            wd = Word(alphas)
+            result = (wd + ',' + wd + oneOf("! . ?")).parseString("Hello, World!")
+            self.assertEqual(len(result), 3, "inlineLiteralsUsing(Suppress) failed!")
+
+            ParserElement.inlineLiteralsUsing(Literal)
+            result = (wd + ',' + wd + oneOf("! . ?")).parseString("Hello, World!")
+            self.assertEqual(len(result), 4, "inlineLiteralsUsing(Literal) failed!")
+
+            ParserElement.inlineLiteralsUsing(CaselessKeyword)
+            result = ("SELECT" + wd + "FROM" + wd).parseString("select color from colors")
+            self.assertEqual(result.asList(), "SELECT color FROM colors".split(),
+                             "inlineLiteralsUsing(CaselessKeyword) failed!")
+
+            ParserElement.inlineLiteralsUsing(CaselessLiteral)
+            result = ("SELECT" + wd + "FROM" + wd).parseString("select color from colors")
+            self.assertEqual(result.asList(), "SELECT color FROM colors".split(),
+                             "inlineLiteralsUsing(CaselessLiteral) failed!")
+
+            integer = Word(nums)
+            ParserElement.inlineLiteralsUsing(Literal)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+            result = date_str.parseString("1999/12/31")
+            self.assertEqual(result.asList(), ['1999', '/', '12', '/', '31'], "inlineLiteralsUsing(example 1) failed!")
+
+            # change to Suppress
+            ParserElement.inlineLiteralsUsing(Suppress)
+            date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
+
+            result = date_str.parseString("1999/12/31")  # -> ['1999', '12', '31']
+            self.assertEqual(result.asList(), ['1999', '12', '31'], "inlineLiteralsUsing(example 2) failed!")
+
+class CloseMatchTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        searchseq = pp.CloseMatch("ATCATCGAATGGA", 2)
+
+        _, results = searchseq.runTests("""
+            ATCATCGAATGGA
+            XTCATCGAATGGX
+            ATCATCGAAXGGA
+            ATCAXXGAATGGA
+            ATCAXXGAATGXA
+            ATCAXXGAATGG
+            """)
+        expected = (
+            [],
+            [0,12],
+            [9],
+            [4,5],
+            None,
+            None
+            )
+
+        for r, exp in zip(results, expected):
+            if exp is not None:
+                self.assertEquals(r[1].mismatches, exp,
+                                  "fail CloseMatch between %r and %r" % (searchseq.match_string, r[0]))
+            print_(r[0], 'exc: %s' % r[1] if exp is None and isinstance(r[1], Exception)
+                                          else ("no match", "match")[r[1].mismatches == exp])
+
+class DefaultKeywordCharsTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        try:
+            pp.Keyword("start").parseString("start1000")
+        except pp.ParseException:
+            pass
+        else:
+            self.assertTrue(False, "failed to fail on default keyword chars")
+
+        try:
+            pp.Keyword("start", identChars=pp.alphas).parseString("start1000")
+        except pp.ParseException:
+            self.assertTrue(False, "failed to match keyword using updated keyword chars")
+        else:
+            pass
+
+        with AutoReset(pp.Keyword, "DEFAULT_KEYWORD_CHARS"):
+            pp.Keyword.setDefaultKeywordChars(pp.alphas)
+            try:
+                pp.Keyword("start").parseString("start1000")
+            except pp.ParseException:
+                self.assertTrue(False, "failed to match keyword using updated keyword chars")
+            else:
+                pass
+
+        try:
+            pp.CaselessKeyword("START").parseString("start1000")
+        except pp.ParseException:
+            pass
+        else:
+            self.assertTrue(False, "failed to fail on default keyword chars")
+
+        try:
+            pp.CaselessKeyword("START", identChars=pp.alphas).parseString("start1000")
+        except pp.ParseException:
+            self.assertTrue(False, "failed to match keyword using updated keyword chars")
+        else:
+            pass
+
+        with AutoReset(pp.Keyword, "DEFAULT_KEYWORD_CHARS"):
+            pp.Keyword.setDefaultKeywordChars(pp.alphas)
+            try:
+                pp.CaselessKeyword("START").parseString("start1000")
+            except pp.ParseException:
+                self.assertTrue(False, "failed to match keyword using updated keyword chars")
+            else:
+                pass
+
+class ColTest(ParseTestCase):
+    def runTest(self):
+
+        test = "*\n* \n*   ALF\n*\n"
+        initials = [c for i, c in enumerate(test) if pp.col(i, test) == 1]
+        print_(initials)
+        self.assertTrue(len(initials) == 4 and all(c=='*' for c in initials), 'fail col test')
+
+class LiteralExceptionTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        for cls in (pp.Literal, pp.CaselessLiteral, pp.Keyword, pp.CaselessKeyword,
+             pp.Word, pp.Regex):
+            expr = cls('xyz')#.setName('{0}_expr'.format(cls.__name__.lower()))
+
+            try:
+                expr.parseString(' ')
+            except Exception as e:
+                print_(cls.__name__, str(e))
+                self.assertTrue(isinstance(e, pp.ParseBaseException),
+                                "class {0} raised wrong exception type {1}".format(cls.__name__, type(e).__name__))
+
+class ParseActionExceptionTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+        import traceback
+
+        number = pp.Word(pp.nums)
+        def number_action():
+            raise IndexError # this is the important line!
+
+        number.setParseAction(number_action)
+        symbol = pp.Word('abcd', max=1)
+        expr = number | symbol
+
+        try:
+            expr.parseString('1 + 2')
+        except Exception as e:
+            self.assertTrue(hasattr(e, '__cause__'), "no __cause__ attribute in the raised exception")
+            self.assertTrue(e.__cause__ is not None, "__cause__ not propagated to outer exception")
+            self.assertTrue(type(e.__cause__) == IndexError, "__cause__ references wrong exception")
+            traceback.print_exc()
+        else:
+            self.assertTrue(False, "Expected ParseException not raised")
+
+class ParseActionNestingTest(ParseTestCase):
+    # tests Issue #22
+    def runTest(self):
+
+        vals = pp.OneOrMore(pp.pyparsing_common.integer)("int_values")
+        def add_total(tokens):
+            tokens['total'] = sum(tokens)
+            return tokens
+        vals.addParseAction(add_total)
+        results = vals.parseString("244 23 13 2343")
+        print_(results.dump())
+        self.assertEqual(results.int_values.asDict(), {}, "noop parse action changed ParseResults structure")
+
+        name = pp.Word(pp.alphas)('name')
+        score = pp.Word(pp.nums + '.')('score')
+        nameScore = pp.Group(name + score)
+        line1 = nameScore('Rider')
+
+        result1 = line1.parseString('Mauney 46.5')
+
+        print_("### before parse action is added ###")
+        print_("result1.dump():\n" + result1.dump() + "\n")
+        before_pa_dict = result1.asDict()
+
+        line1.setParseAction(lambda t: t)
+
+        result1 = line1.parseString('Mauney 46.5')
+        after_pa_dict = result1.asDict()
+
+        print_("### after parse action was added ###")
+        print_("result1.dump():\n" + result1.dump() + "\n")
+        self.assertEqual(before_pa_dict, after_pa_dict, "noop parse action changed ParseResults structure")
+
+class ParseResultsNameBelowUngroupedNameTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        rule_num = pp.Regex("[0-9]+")("LIT_NUM*")
+        list_num = pp.Group(pp.Literal("[")("START_LIST")
+                            + pp.delimitedList(rule_num)("LIST_VALUES")
+                            + pp.Literal("]")("END_LIST"))("LIST")
+
+        test_string = "[ 1,2,3,4,5,6 ]"
+        list_num.runTests(test_string)
+
+        U = list_num.parseString(test_string)
+        self.assertTrue("LIT_NUM" not in U.LIST.LIST_VALUES, "results name retained as sub in ungrouped named result")
+
+class ParseResultsNamesInGroupWithDictTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        key = pp.pyparsing_common.identifier()
+        value = pp.pyparsing_common.integer()
+        lat = pp.pyparsing_common.real()
+        long = pp.pyparsing_common.real()
+        EQ = pp.Suppress('=')
+
+        data = lat("lat") + long("long") + pp.Dict(pp.OneOrMore(pp.Group(key + EQ + value)))
+        site = pp.QuotedString('"')("name") + pp.Group(data)("data")
+
+        test_string = '"Golden Gate Bridge" 37.819722 -122.478611 height=746 span=4200'
+        site.runTests(test_string)
+
+        # U = list_num.parseString(test_string)
+        # self.assertTrue("LIT_NUM" not in U.LIST.LIST_VALUES, "results name retained as sub in ungrouped named result")
+
+class FollowedByTest(ParseTestCase):
+    def runTest(self):
+        expr = pp.Word(pp.alphas)("item") + pp.FollowedBy(pp.pyparsing_common.integer("qty"))
+        result = expr.parseString("balloon 99")
+        print_(result.dump())
+        self.assertTrue('qty' in result, "failed to capture results name in FollowedBy")
+        self.assertEqual(result.asDict(), {'item': 'balloon', 'qty': 99},
+                         "invalid results name structure from FollowedBy")
+
+class SetBreakTest(ParseTestCase):
+    """
+    Test behavior of ParserElement.setBreak(), to invoke the debugger before parsing that element is attempted.
+
+    Temporarily monkeypatches pdb.set_trace.
+    """
+    def runTest(self):
+        was_called = []
+        def mock_set_trace():
+            was_called.append(True)
+
+        import pyparsing as pp
+        wd = pp.Word(pp.alphas)
+        wd.setBreak()
+
+        print_("Before parsing with setBreak:", was_called)
+        import pdb
+        with AutoReset(pdb, "set_trace"):
+            pdb.set_trace = mock_set_trace
+            wd.parseString("ABC")
+
+        print_("After parsing with setBreak:", was_called)
+        self.assertTrue(bool(was_called), "set_trace wasn't called by setBreak")
+
+class UnicodeTests(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+        p_u = pp.pyparsing_unicode
+
+        # verify proper merging of ranges by addition
+        kanji_printables = p_u.Japanese.Kanji.printables
+        katakana_printables = p_u.Japanese.Katakana.printables
+        hiragana_printables = p_u.Japanese.Hiragana.printables
+        japanese_printables = p_u.Japanese.printables
+        self.assertEqual(set(japanese_printables), set(kanji_printables
+                                                       + katakana_printables
+                                                       + hiragana_printables),
+                         "failed to construct ranges by merging Japanese types")
+
+        # verify proper merging of ranges using multiple inheritance
+        cjk_printables = p_u.CJK.printables
+        self.assertEqual(len(cjk_printables), len(set(cjk_printables)),
+                         "CJK contains duplicate characters - all should be unique")
+
+        chinese_printables = p_u.Chinese.printables
+        korean_printables = p_u.Korean.printables
+        print_(len(cjk_printables), len(set(chinese_printables
+                                           + korean_printables
+                                           + japanese_printables)))
+
+        self.assertEqual(len(cjk_printables), len(set(chinese_printables
+                                                      + korean_printables
+                                                      + japanese_printables)),
+                         "failed to construct ranges by merging Chinese, Japanese and Korean")
+
+        alphas = pp.pyparsing_unicode.Greek.alphas
+        greet = pp.Word(alphas) + ',' + pp.Word(alphas) + '!'
+
+        # input string
+        hello = u"Καλημέρα, κόσμε!"
+        result = greet.parseString(hello)
+        print_(result)
+        self.assertTrue(result.asList() == [u'Καλημέρα', ',', u'κόσμε', '!'],
+                        "Failed to parse Greek 'Hello, World!' using pyparsing_unicode.Greek.alphas")
+
+        # define a custom unicode range using multiple inheritance
+        class Turkish_set(pp.pyparsing_unicode.Latin1, pp.pyparsing_unicode.LatinA):
+            pass
+
+        self.assertEqual(set(Turkish_set.printables),
+                         set(pp.pyparsing_unicode.Latin1.printables
+                             + pp.pyparsing_unicode.LatinA.printables),
+                         "failed to construct ranges by merging Latin1 and LatinA (printables)")
+
+        self.assertEqual(set(Turkish_set.alphas),
+                         set(pp.pyparsing_unicode.Latin1.alphas
+                             + pp.pyparsing_unicode.LatinA.alphas),
+                         "failed to construct ranges by merging Latin1 and LatinA (alphas)")
+
+        self.assertEqual(set(Turkish_set.nums),
+                         set(pp.pyparsing_unicode.Latin1.nums
+                             + pp.pyparsing_unicode.LatinA.nums),
+                         "failed to construct ranges by merging Latin1 and LatinA (nums)")
+
+        key = pp.Word(Turkish_set.alphas)
+        value = pp.pyparsing_common.integer | pp.Word(Turkish_set.alphas, Turkish_set.alphanums)
+        EQ = pp.Suppress('=')
+        key_value = key + EQ + value
+
+        sample = u"""\
+            şehir=İzmir
+            ülke=Türkiye
+            nüfus=4279677"""
+        result = pp.Dict(pp.OneOrMore(pp.Group(key_value))).parseString(sample)
+
+        print_(result.asDict())
+        self.assertEqual(result.asDict(), {u'şehir': u'İzmir', u'ülke': u'Türkiye', u'nüfus': 4279677},
+                         "Failed to parse Turkish key-value pairs")
+
+class IndentedBlockTest(ParseTestCase):
+    # parse pseudo-yaml indented text
+    def runTest(self):
+        if pp.ParserElement.packrat_cache:
+            print_("cannot test indentedBlock with packrat enabled")
+            return
+        import textwrap
+
+        EQ = pp.Suppress('=')
+        stack = [1]
+        key = pp.pyparsing_common.identifier
+        value = pp.Forward()
+        key_value = key + EQ + value
+        compound_value = pp.Dict(pp.ungroup(pp.indentedBlock(key_value, stack)))
+        value <<= pp.pyparsing_common.integer | pp.QuotedString("'") | compound_value
+        parser = pp.Dict(pp.OneOrMore(pp.Group(key_value)))
+
+        text = """\
+            a = 100
+            b = 101
+            c =
+                c1 = 200
+                c2 =
+                    c21 = 999
+                c3 = 'A horse, a horse, my kingdom for a horse'
+            d = 505
+        """
+        text = textwrap.dedent(text)
+        print_(text)
+
+        result = parser.parseString(text)
+        print_(result.dump())
+        self.assertEqual(result.a,        100, "invalid indented block result")
+        self.assertEqual(result.c.c1,     200, "invalid indented block result")
+        self.assertEqual(result.c.c2.c21, 999, "invalid indented block result")
+
+class ParseResultsWithNameMatchFirst(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+        expr_a = pp.Literal('not') + pp.Literal('the') + pp.Literal('bird')
+        expr_b = pp.Literal('the') + pp.Literal('bird')
+        expr = (expr_a | expr_b)('rexp')
+        expr.runTests("""\
+            not the bird
+            the bird
+        """)
+        self.assertEqual(list(expr.parseString('not the bird')['rexp']), 'not the bird'.split())
+        self.assertEqual(list(expr.parseString('the bird')['rexp']), 'the bird'.split())
+
+class ParseResultsWithNameOr(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+        expr_a = pp.Literal('not') + pp.Literal('the') + pp.Literal('bird')
+        expr_b = pp.Literal('the') + pp.Literal('bird')
+        expr = (expr_a ^ expr_b)('rexp')
+        expr.runTests("""\
+            not the bird
+            the bird
+        """)
+        self.assertEqual(list(expr.parseString('not the bird')['rexp']), 'not the bird'.split())
+        self.assertEqual(list(expr.parseString('the bird')['rexp']), 'the bird'.split())
+
+class EmptyDictDoesNotRaiseException(ParseTestCase):
+    def runTest(self):
+        if not PY_3:
+            print('explain() not supported in Py2')
+            return
+
+        import pyparsing as pp
+
+        key = pp.Word(pp.alphas)
+        value = pp.Word(pp.nums)
+        EQ = pp.Suppress('=')
+        key_value_dict = pp.dictOf(key, EQ + value)
+
+        print_(key_value_dict.parseString("""\
+            a = 10
+            b = 20
+            """).dump())
+
+        try:
+            print_(key_value_dict.parseString("").dump())
+        except pp.ParseException as pe:
+            print_(pp.ParseException.explain(pe))
+        else:
+            self.assertTrue(False, "failed to raise exception when matching empty string")
+
+class ExplainExceptionTest(ParseTestCase):
+    def runTest(self):
+        if not PY_3:
+            print('explain() not supported in Py2')
+            return
+
+        import pyparsing as pp
+
+        expr = pp.Word(pp.nums).setName("int") + pp.Word(pp.alphas).setName("word")
+        try:
+            expr.parseString("123 355")
+        except pp.ParseException as pe:
+            print_(pp.ParseException.explain(pe, depth=0))
+
+        expr = pp.Word(pp.nums).setName("int") - pp.Word(pp.alphas).setName("word")
+        try:
+            expr.parseString("123 355 (test using ErrorStop)")
+        except pp.ParseSyntaxException as pe:
+            print_(pp.ParseException.explain(pe))
+
+        integer = pp.Word(pp.nums).setName("int").addParseAction(lambda t: int(t[0]))
+        expr = integer + integer
+
+        def divide_args(t):
+            integer.parseString("A")
+            return t[0] / t[1]
+
+        expr.addParseAction(divide_args)
+        pp.ParserElement.enablePackrat()
+        print_()
+        # ~ print(expr.parseString("125 25"))
+
+        try:
+            expr.parseString("123 0")
+        except pp.ParseException as pe:
+            print_(pp.ParseException.explain(pe))
+        except Exception as exc:
+            print_(pp.ParseException.explain(exc))
+            raise
+
+
+class CaselessKeywordVsKeywordCaselessTest(ParseTestCase):
+    def runTest(self):
+        import pyparsing as pp
+
+        frule = pp.Keyword('t', caseless=True) + pp.Keyword('yes', caseless=True)
+        crule = pp.CaselessKeyword('t') + pp.CaselessKeyword('yes')
+
+        flist = frule.searchString('not yes').asList()
+        print_(flist)
+        clist = crule.searchString('not yes').asList()
+        print_(clist)
+        self.assertEqual(flist, clist, "CaselessKeyword not working the same as Keyword(caseless=True)")
+
+
+class MiscellaneousParserTests(ParseTestCase):
+    def runTest(self):
+
+        runtests = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+        if IRON_PYTHON_ENV:
+            runtests = "ABCDEGHIJKLMNOPQRSTUVWXYZ"
+
+        # test making oneOf with duplicate symbols
+        if "A" in runtests:
+            print_("verify oneOf handles duplicate symbols")
+            try:
+                test1 = pp.oneOf("a b c d a")
+            except RuntimeError:
+                self.assertTrue(False,"still have infinite loop in oneOf with duplicate symbols (string input)")
+
+            print_("verify oneOf handles generator input")
+            try:
+                test1 = pp.oneOf(c for c in "a b c d a" if not c.isspace())
+            except RuntimeError:
+                self.assertTrue(False,"still have infinite loop in oneOf with duplicate symbols (generator input)")
+
+            print_("verify oneOf handles list input")
+            try:
+                test1 = pp.oneOf("a b c d a".split())
+            except RuntimeError:
+                self.assertTrue(False,"still have infinite loop in oneOf with duplicate symbols (list input)")
+
+            print_("verify oneOf handles set input")
+            try:
+                test1 = pp.oneOf(set("a b c d a"))
+            except RuntimeError:
+                self.assertTrue(False,"still have infinite loop in oneOf with duplicate symbols (set input)")
+
+        # test MatchFirst bugfix
+        if "B" in runtests:
+            print_("verify MatchFirst iterates properly")
+            results = pp.quotedString.parseString("'this is a single quoted string'")
+            self.assertTrue(len(results) > 0, "MatchFirst error - not iterating over all choices")
+
+        # verify streamline of subexpressions
+        if "C" in runtests:
+            print_("verify proper streamline logic")
+            compound = pp.Literal("A") + "B" + "C" + "D"
+            self.assertEqual(len(compound.exprs), 2,"bad test setup")
+            print_(compound)
+            compound.streamline()
+            print_(compound)
+            self.assertEqual(len(compound.exprs), 4,"streamline not working")
+
+        # test for Optional with results name and no match
+        if "D" in runtests:
+            print_("verify Optional's do not cause match failure if have results name")
+            testGrammar = pp.Literal("A") + pp.Optional("B")("gotB") + pp.Literal("C")
+            try:
+                testGrammar.parseString("ABC")
+                testGrammar.parseString("AC")
+            except pp.ParseException as pe:
+                print_(pe.pstr,"->",pe)
+                self.assertTrue(False, "error in Optional matching of string %s" % pe.pstr)
+
+        # test return of furthest exception
+        if "E" in runtests:
+            testGrammar = ( pp.Literal("A") |
+                            ( pp.Optional("B") + pp.Literal("C") ) |
+                            pp.Literal("D") )
+            try:
+                testGrammar.parseString("BC")
+                testGrammar.parseString("BD")
+            except pp.ParseException as pe:
+                print_(pe.pstr,"->",pe)
+                self.assertEqual(pe.pstr, "BD", "wrong test string failed to parse")
+                self.assertEqual(pe.loc, 1, "error in Optional matching, pe.loc="+str(pe.loc))
+
+        # test validate
+        if "F" in runtests:
+            print_("verify behavior of validate()")
+            def testValidation( grmr, gnam, isValid ):
+                try:
+                    grmr.streamline()
+                    grmr.validate()
+                    self.assertTrue(isValid,"validate() accepted invalid grammar " + gnam)
+                except pp.RecursiveGrammarException as e:
+                    print_(grmr)
+                    self.assertFalse(isValid, "validate() rejected valid grammar " + gnam)
+
+            fwd = pp.Forward()
+            g1 = pp.OneOrMore( ( pp.Literal("A") + "B" + "C" ) | fwd )
+            g2 = pp.ZeroOrMore("C" + g1)
+            fwd << pp.Group(g2)
+            testValidation( fwd, "fwd", isValid=True )
+
+            fwd2 = pp.Forward()
+            fwd2 << pp.Group("A" | fwd2)
+            testValidation( fwd2, "fwd2", isValid=False )
+
+            fwd3 = pp.Forward()
+            fwd3 << pp.Optional("A") + fwd3
+            testValidation( fwd3, "fwd3", isValid=False )
+
+        # test getName
+        if "G" in runtests:
+            print_("verify behavior of getName()")
+            aaa = pp.Group(pp.Word("a")("A"))
+            bbb = pp.Group(pp.Word("b")("B"))
+            ccc = pp.Group(":" + pp.Word("c")("C"))
+            g1 = "XXX" + pp.ZeroOrMore( aaa | bbb | ccc )
+            teststring = "XXX b bb a bbb bbbb aa bbbbb :c bbbbbb aaa"
+            names = []
+            print_(g1.parseString(teststring).dump())
+            for t in g1.parseString(teststring):
+                print_(t, repr(t))
+                try:
+                    names.append( t[0].getName() )
+                except Exception:
+                    try:
+                        names.append( t.getName() )
+                    except Exception:
+                        names.append( None )
+            print_(teststring)
+            print_(names)
+            self.assertEqual(names, [None, 'B', 'B', 'A', 'B', 'B', 'A', 'B', None, 'B', 'A'],
+                             "failure in getting names for tokens")
+
+            from pyparsing import Keyword, Word, alphas, OneOrMore
+            IF,AND,BUT = map(Keyword, "if and but".split())
+            ident = ~(IF | AND | BUT) + Word(alphas)("non-key")
+            scanner = OneOrMore(IF | AND | BUT | ident)
+            def getNameTester(s,l,t):
+                print_(t, t.getName())
+            ident.addParseAction(getNameTester)
+            scanner.parseString("lsjd sldkjf IF Saslkj AND lsdjf")
+
+        # test ParseResults.get() method
+        if "H" in runtests:
+            print_("verify behavior of ParseResults.get()")
+            # use sum() to merge separate groups into single ParseResults
+            res = sum(g1.parseString(teststring)[1:])
+            print_(res.dump())
+            print_(res.get("A","A not found"))
+            print_(res.get("D","!D"))
+            self.assertEqual(res.get("A","A not found"), "aaa", "get on existing key failed")
+            self.assertEqual(res.get("D","!D"), "!D", "get on missing key failed")
+
+        if "I" in runtests:
+            print_("verify handling of Optional's beyond the end of string")
+            testGrammar = "A" + pp.Optional("B") + pp.Optional("C") + pp.Optional("D")
+            testGrammar.parseString("A")
+            testGrammar.parseString("AB")
+
+        # test creating Literal with empty string
+        if "J" in runtests:
+            print_('verify non-fatal usage of Literal("")')
+            e = pp.Literal("")
+            try:
+                e.parseString("SLJFD")
+            except Exception as e:
+                self.assertTrue(False, "Failed to handle empty Literal")
+
+        # test line() behavior when starting at 0 and the opening line is an \n
+        if "K" in runtests:
+            print_('verify correct line() behavior when first line is empty string')
+            self.assertEqual(pp.line(0, "\nabc\ndef\n"), '', "Error in line() with empty first line in text")
+            txt = "\nabc\ndef\n"
+            results = [ pp.line(i,txt) for i in range(len(txt)) ]
+            self.assertEqual(results, ['', 'abc', 'abc', 'abc', 'abc', 'def', 'def', 'def', 'def'],
+                             "Error in line() with empty first line in text")
+            txt = "abc\ndef\n"
+            results = [ pp.line(i,txt) for i in range(len(txt)) ]
+            self.assertEqual(results, ['abc', 'abc', 'abc', 'abc', 'def', 'def', 'def', 'def'],
+                             "Error in line() with non-empty first line in text")
+
+        # test bugfix with repeated tokens when packrat parsing enabled
+        if "L" in runtests:
+            print_('verify behavior with repeated tokens when packrat parsing is enabled')
+            a = pp.Literal("a")
+            b = pp.Literal("b")
+            c = pp.Literal("c")
+
+            abb = a + b + b
+            abc = a + b + c
+            aba = a + b + a
+            grammar = abb | abc | aba
+
+            self.assertEqual(''.join(grammar.parseString( "aba" )), 'aba', "Packrat ABA failure!")
+
+        if "M" in runtests:
+            print_('verify behavior of setResultsName with OneOrMore and ZeroOrMore')
+
+            stmt = pp.Keyword('test')
+            print_(pp.ZeroOrMore(stmt)('tests').parseString('test test').tests)
+            print_(pp.OneOrMore(stmt)('tests').parseString('test test').tests)
+            print_(pp.Optional(pp.OneOrMore(stmt)('tests')).parseString('test test').tests)
+            print_(pp.Optional(pp.OneOrMore(stmt))('tests').parseString('test test').tests)
+            print_(pp.Optional(pp.delimitedList(stmt))('tests').parseString('test,test').tests)
+            self.assertEqual(len(pp.ZeroOrMore(stmt)('tests').parseString('test test').tests), 2, "ZeroOrMore failure with setResultsName")
+            self.assertEqual(len(pp.OneOrMore(stmt)('tests').parseString('test test').tests), 2, "OneOrMore failure with setResultsName")
+            self.assertEqual(len(pp.Optional(pp.OneOrMore(stmt)('tests')).parseString('test test').tests), 2, "OneOrMore failure with setResultsName")
+            self.assertEqual(len(pp.Optional(pp.delimitedList(stmt))('tests').parseString('test,test').tests), 2, "delimitedList failure with setResultsName")
+            self.assertEqual(len((stmt*2)('tests').parseString('test test').tests), 2, "multiplied(1) failure with setResultsName")
+            self.assertEqual(len((stmt*(None,2))('tests').parseString('test test').tests), 2, "multiplied(2) failure with setResultsName")
+            self.assertEqual(len((stmt*(1,))('tests').parseString('test test').tests), 2, "multipled(3) failure with setResultsName")
+            self.assertEqual(len((stmt*(2,))('tests').parseString('test test').tests), 2, "multipled(3) failure with setResultsName")
+
+def makeTestSuite():
+    import inspect
+    suite = TestSuite()
+    suite.addTest( PyparsingTestInit() )
+
+    test_case_classes = ParseTestCase.__subclasses__()
+    # put classes in order as they are listed in the source code
+    test_case_classes.sort(key=lambda cls: inspect.getsourcelines(cls)[1])
+
+    test_case_classes.remove(PyparsingTestInit)
+    # test_case_classes.remove(ParseASMLTest)
+    test_case_classes.remove(EnablePackratParsing)
+    if IRON_PYTHON_ENV:
+        test_case_classes.remove(OriginalTextForTest)
+
+    suite.addTests(T() for T in test_case_classes)
+
+    if TEST_USING_PACKRAT:
+        # retest using packrat parsing (disable those tests that aren't compatible)
+        suite.addTest( EnablePackratParsing() )
+
+        unpackrattables = [ PyparsingTestInit, EnablePackratParsing, RepeaterTest, ]
+
+        # add tests to test suite a second time, to run with packrat parsing
+        # (leaving out those that we know wont work with packrat)
+        packratTests = [t.__class__() for t in suite._tests
+                            if t.__class__ not in unpackrattables]
+        suite.addTests( packratTests )
+
+    return suite
+
+def makeTestSuiteTemp(classes):
+    suite = TestSuite()
+    suite.addTest(PyparsingTestInit())
+    for cls in classes:
+        suite.addTest(cls())
+    return suite
+
+if __name__ == '__main__':
+
+    testRunner = TextTestRunner()
+
+    # run specific tests by including them in this list, otherwise
+    # all tests will be run
+    testclasses = [
+        ]
+
+    if not testclasses:
+        testRunner.run(makeTestSuite())
+    else:
+        BUFFER_OUTPUT = False
+        testRunner.run(makeTestSuiteTemp(testclasses))