[Python-modules-commits] [pyparsing] 01/03: Import pyparsing_2.1.10+dfsg1.orig.tar.gz

Barry Warsaw barry at moszumanska.debian.org
Tue Oct 18 14:50:46 UTC 2016


This is an automated email from the git hooks/post-receive script.

barry pushed a commit to branch master
in repository pyparsing.

commit ee3a1b6b46791fcbc691119edd3548ef6c30c35f
Author: Barry Warsaw <barry at python.org>
Date:   Tue Oct 18 10:34:44 2016 -0400

    Import pyparsing_2.1.10+dfsg1.orig.tar.gz
---
 CHANGES                                            |   20 +
 PKG-INFO                                           |    2 +-
 examples/cpp_enum_parser.py                        |    2 +-
 examples/idlParse.py                               |   73 +-
 examples/lucene_grammar.py                         |   41 +-
 examples/oc.py                                     |  107 +-
 examples/select_parser.py                          |    6 +-
 examples/simpleSQL.py                              |   29 +-
 htmldoc/api-objects.txt                            |    4 +-
 htmldoc/class-tree.html                            |    2 +-
 htmldoc/help.html                                  |    2 +-
 htmldoc/identifier-index.html                      |   72 +-
 htmldoc/module-tree.html                           |    2 +-
 htmldoc/pyparsing-module.html                      |   12 +-
 htmldoc/pyparsing-pysrc.html                       | 7030 ++++++++++----------
 htmldoc/pyparsing.And-class.html                   |    2 +-
 htmldoc/pyparsing.CaselessKeyword-class.html       |    2 +-
 htmldoc/pyparsing.CaselessLiteral-class.html       |    2 +-
 htmldoc/pyparsing.CharsNotIn-class.html            |    2 +-
 htmldoc/pyparsing.CloseMatch-class.html            |    2 +-
 htmldoc/pyparsing.Combine-class.html               |    2 +-
 htmldoc/pyparsing.Dict-class.html                  |    2 +-
 htmldoc/pyparsing.Each-class.html                  |    2 +-
 htmldoc/pyparsing.Empty-class.html                 |    2 +-
 htmldoc/pyparsing.FollowedBy-class.html            |    2 +-
 htmldoc/pyparsing.Forward-class.html               |    2 +-
 htmldoc/pyparsing.GoToColumn-class.html            |    2 +-
 htmldoc/pyparsing.Group-class.html                 |    2 +-
 htmldoc/pyparsing.Keyword-class.html               |    2 +-
 htmldoc/pyparsing.LineEnd-class.html               |    2 +-
 htmldoc/pyparsing.LineStart-class.html             |   61 +-
 htmldoc/pyparsing.Literal-class.html               |    2 +-
 htmldoc/pyparsing.MatchFirst-class.html            |    2 +-
 htmldoc/pyparsing.NoMatch-class.html               |    2 +-
 htmldoc/pyparsing.NotAny-class.html                |    2 +-
 htmldoc/pyparsing.OneOrMore-class.html             |   66 +-
 htmldoc/pyparsing.OnlyOnce-class.html              |    2 +-
 htmldoc/pyparsing.Optional-class.html              |    2 +-
 htmldoc/pyparsing.Or-class.html                    |    2 +-
 htmldoc/pyparsing.ParseBaseException-class.html    |    2 +-
 htmldoc/pyparsing.ParseElementEnhance-class.html   |    2 +-
 htmldoc/pyparsing.ParseException-class.html        |    2 +-
 htmldoc/pyparsing.ParseExpression-class.html       |    2 +-
 htmldoc/pyparsing.ParseFatalException-class.html   |    2 +-
 htmldoc/pyparsing.ParseResults-class.html          |    2 +-
 htmldoc/pyparsing.ParseSyntaxException-class.html  |    2 +-
 htmldoc/pyparsing.ParserElement-class.html         |   11 +-
 htmldoc/pyparsing.QuotedString-class.html          |    2 +-
 .../pyparsing.RecursiveGrammarException-class.html |    2 +-
 htmldoc/pyparsing.Regex-class.html                 |    2 +-
 htmldoc/pyparsing.Regex.compiledREtype-class.html  |    2 +-
 htmldoc/pyparsing.SkipTo-class.html                |    2 +-
 htmldoc/pyparsing.StringEnd-class.html             |    2 +-
 htmldoc/pyparsing.StringStart-class.html           |    2 +-
 htmldoc/pyparsing.Suppress-class.html              |    2 +-
 htmldoc/pyparsing.Token-class.html                 |    2 +-
 htmldoc/pyparsing.TokenConverter-class.html        |    2 +-
 htmldoc/pyparsing.White-class.html                 |    2 +-
 htmldoc/pyparsing.Word-class.html                  |    2 +-
 htmldoc/pyparsing.WordEnd-class.html               |    2 +-
 htmldoc/pyparsing.WordStart-class.html             |    2 +-
 htmldoc/pyparsing.ZeroOrMore-class.html            |    2 +-
 htmldoc/pyparsing.pyparsing_common-class.html      |    2 +-
 pyparsing.egg-info/PKG-INFO                        |    2 +-
 pyparsing.py                                       |   85 +-
 65 files changed, 3804 insertions(+), 3915 deletions(-)

diff --git a/CHANGES b/CHANGES
index 5689d53..d6dee6d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,26 @@
 Change Log
 ==========
 
+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 
diff --git a/PKG-INFO b/PKG-INFO
index b0e19f8..a423144 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pyparsing
-Version: 2.1.9
+Version: 2.1.10
 Summary: Python parsing module
 Home-page: http://pyparsing.wikispaces.com/
 Author: Paul McGuire
diff --git a/examples/cpp_enum_parser.py b/examples/cpp_enum_parser.py
index cbd0932..cd8f525 100644
--- a/examples/cpp_enum_parser.py
+++ b/examples/cpp_enum_parser.py
@@ -1,7 +1,7 @@
 #
 # cpp_enum_parser.py
 #
-# Posted by Mark Tolenen on comp.lang.python in August, 2009,
+# Posted by Mark Tolonen on comp.lang.python in August, 2009,
 # Used with permission.
 # 
 # Parser that scans through C or C++ code for enum definitions, and
diff --git a/examples/idlParse.py b/examples/idlParse.py
index dd556e5..b94bac4 100644
--- a/examples/idlParse.py
+++ b/examples/idlParse.py
@@ -19,76 +19,27 @@ def CORBA_IDL_BNF():
     if not bnf:
 
         # punctuation
-        colon  = Literal(":")
-        lbrace = Literal("{")
-        rbrace = Literal("}")
-        lbrack = Literal("[")
-        rbrack = Literal("]")
-        lparen = Literal("(")
-        rparen = Literal(")")
-        equals = Literal("=")
-        comma  = Literal(",")
-        dot    = Literal(".")
-        slash  = Literal("/")
-        bslash = Literal("\\")
-        star   = Literal("*")
-        semi   = Literal(";")
-        langle = Literal("<")
-        rangle = Literal(">")
+        (colon,lbrace,rbrace,lbrack,rbrack,lparen,rparen,
+        equals,comma,dot,slash,bslash,star,semi,langle,rangle) = map(Literal, r":{}[]()=,./\*;<>")
         
         # keywords
-        any_       = Keyword("any")
-        attribute_ = Keyword("attribute")
-        boolean_   = Keyword("boolean")
-        case_      = Keyword("case")
-        char_      = Keyword("char")
-        const_     = Keyword("const")
-        context_   = Keyword("context")
-        default_   = Keyword("default")
-        double_    = Keyword("double")
-        enum_      = Keyword("enum")
-        exception_ = Keyword("exception")
-        false_     = Keyword("FALSE")
-        fixed_     = Keyword("fixed")
-        float_     = Keyword("float")
-        inout_     = Keyword("inout")
-        interface_ = Keyword("interface")
-        in_        = Keyword("in")
-        long_      = Keyword("long")
-        module_    = Keyword("module")
-        object_    = Keyword("Object")
-        octet_     = Keyword("octet")
-        oneway_    = Keyword("oneway")
-        out_       = Keyword("out")
-        raises_    = Keyword("raises")
-        readonly_  = Keyword("readonly")
-        sequence_  = Keyword("sequence")
-        short_     = Keyword("short")
-        string_    = Keyword("string")
-        struct_    = Keyword("struct")
-        switch_    = Keyword("switch")
-        true_      = Keyword("TRUE")
-        typedef_   = Keyword("typedef")
-        unsigned_  = Keyword("unsigned")
-        union_     = Keyword("union")
-        void_      = Keyword("void")
-        wchar_     = Keyword("wchar")
-        wstring_   = Keyword("wstring")
+        (any_, attribute_, boolean_, case_, char_, const_, context_, default_, double_, enum_, exception_, 
+        FALSE_, fixed_, float_, inout_, interface_, in_, long_, module_, Object_, octet_, oneway_, out_, raises_, 
+        readonly_, sequence_, short_, string_, struct_, switch_, TRUE_, typedef_, unsigned_, union_, void_, 
+        wchar_, wstring_) = map(Keyword, """any attribute boolean case char const context 
+            default double enum exception FALSE fixed float inout interface in long module 
+            Object octet oneway out raises readonly sequence short string struct switch
+            TRUE typedef unsigned union void wchar wstring""".split())
         
         identifier = Word( alphas, alphanums + "_" ).setName("identifier")
         
-        #~ real = Combine( Word(nums+"+-", nums) + dot + Optional( Word(nums) ) 
-                        #~ + Optional( CaselessLiteral("E") + Word(nums+"+-",nums) ) )
         real = Regex(r"[+-]?\d+\.\d*([Ee][+-]?\d+)?").setName("real")
-        #~ integer = ( Combine( CaselessLiteral("0x") + Word( nums+"abcdefABCDEF" ) ) |
-                    #~ Word( nums+"+-", nums ) ).setName("int")
         integer = Regex(r"0x[0-9a-fA-F]+|[+-]?\d+").setName("int")
 
         udTypeName = delimitedList( identifier, "::", combine=True ).setName("udType")
-        # have to use longest match for type, in case a user-defined type name starts with a keyword type, like "stringSeq" or "longArray"
-        typeName = ( any_ ^ boolean_ ^ char_ ^ double_ ^ fixed_ ^ 
-                    float_ ^ long_ ^ octet_ ^ short_ ^ string_ ^ 
-                    wchar_ ^ wstring_ ^ udTypeName ).setName("type")
+        typeName = ( any_ | boolean_ | char_ | double_ | fixed_ | 
+                    float_ | long_ | octet_ | short_ | string_ | 
+                    wchar_ | wstring_ | udTypeName ).setName("type")
         sequenceDef = Forward().setName("seq")
         sequenceDef << Group( sequence_ + langle + ( sequenceDef | typeName ) + rangle )
         typeDef = sequenceDef | ( typeName + Optional( lbrack + integer + rbrack ) )
diff --git a/examples/lucene_grammar.py b/examples/lucene_grammar.py
index 179f25e..6e404d8 100644
--- a/examples/lucene_grammar.py
+++ b/examples/lucene_grammar.py
@@ -8,16 +8,14 @@
 #
 
 from pyparsing import (Literal, CaselessKeyword, Forward, Regex, QuotedString, Suppress,
-    Optional, Group, FollowedBy, infixNotation, opAssoc, ParseException, ParserElement)
+    Optional, Group, FollowedBy, infixNotation, opAssoc, ParseException, ParserElement,
+    pyparsing_common)
 ParserElement.enablePackrat()
 
 COLON,LBRACK,RBRACK,LBRACE,RBRACE,TILDE,CARAT = map(Literal,":[]{}~^")
 LPAR,RPAR = map(Suppress,"()")
-and_ = CaselessKeyword("AND")
-or_ = CaselessKeyword("OR")
-not_ = CaselessKeyword("NOT")
-to_ = CaselessKeyword("TO")
-keyword = and_ | or_ | not_
+and_, or_, not_, to_ = map(CaselessKeyword, "AND OR NOT TO".split())
+keyword = and_ | or_ | not_ | to_
 
 expression = Forward()
 
@@ -32,11 +30,11 @@ required_modifier = Literal("+")("required")
 prohibit_modifier = Literal("-")("prohibit")
 integer = Regex(r"\d+").setParseAction(lambda t:int(t[0]))
 proximity_modifier = Group(TILDE + integer("proximity"))
-number = Regex(r'\d+(\.\d+)?').setParseAction(lambda t:float(t[0]))
+number = pyparsing_common.fnumber()
 fuzzy_modifier = TILDE + Optional(number, default=0.5)("fuzzy")
 
 term = Forward()
-field_name = valid_word.copy().setName("fieldname")
+field_name = valid_word().setName("fieldname")
 incl_range_search = Group(LBRACK + term("lower") + to_ + term("upper") + RBRACK)
 excl_range_search = Group(LBRACE + term("lower") + to_ + term("upper") + RBRACE)
 range_search = incl_range_search("incl_range") | excl_range_search("excl_range")
@@ -52,9 +50,9 @@ term.setParseAction(lambda t:[t] if 'field' in t or 'boost' in t else None)
 expression << infixNotation(term,
     [
     (required_modifier | prohibit_modifier, 1, opAssoc.RIGHT),
-    ((not_ | '!').setParseAction(lambda:"NOT"), 1, opAssoc.RIGHT),
-    ((and_ | '&&').setParseAction(lambda:"AND"), 2, opAssoc.LEFT),
-    (Optional(or_ | '||').setParseAction(lambda:"OR"), 2, opAssoc.LEFT),
+    ((not_ | '!').setParseAction(lambda: "NOT"), 1, opAssoc.RIGHT),
+    ((and_ | '&&').setParseAction(lambda: "AND"), 2, opAssoc.LEFT),
+    (Optional(or_ | '||').setParseAction(lambda: "OR"), 2, opAssoc.LEFT),
     ])
 
 # test strings taken from grammar description doc, and TestQueryParser.java
@@ -265,7 +263,7 @@ tests = r"""
     (*:*)
     +*:* -*:*
     the wizard of ozzy
-    """.splitlines()
+    """
 
 failtests = r"""
     field:term:with:colon some more terms
@@ -313,18 +311,9 @@ failtests = r"""
     a\:b\+c\~
     a:b\c~
     [ a\ TO a* ]
-    """.splitlines()
-    
-allpass = True
-for t in [_f for _f in map(str.strip,tests) if _f]:
-    print(t)
-    try:
-        #~ expression.parseString(t,parseAll=True)
-        print(expression.parseString(t,parseAll=True))
-    except ParseException as pe:
-        print(t)
-        print(pe)
-        allpass = False
-    print('')
+    """
+
+success1, _ = expression.runTests(tests)
+success2, _ = expression.runTests(failtests, failureTests=True)
     
-print(("FAIL", "OK")[allpass])
+print(("FAIL", "OK")[success1 and success2])
diff --git a/examples/oc.py b/examples/oc.py
index 77ea195..42b9d48 100644
--- a/examples/oc.py
+++ b/examples/oc.py
@@ -9,85 +9,78 @@ http://www.ioccc.org/1996/august.hint
 
 The following is a description of the OC grammar:
 
-	OC grammar
-	==========
-	Terminals are in quotes, () is used for bracketing.
+    OC grammar
+    ==========
+    Terminals are in quotes, () is used for bracketing.
 
-	program:	decl*
+    program:	decl*
 
-	decl:		vardecl
-			fundecl
+    decl:		vardecl
+            fundecl
 
-	vardecl:	type NAME ;
-			type NAME "[" INT "]" ;
+    vardecl:	type NAME ;
+            type NAME "[" INT "]" ;
 
-	fundecl:	type NAME "(" args ")" "{" body "}"
+    fundecl:	type NAME "(" args ")" "{" body "}"
 
-	args:		/*empty*/
-			( arg "," )* arg
+    args:		/*empty*/
+            ( arg "," )* arg
 
-	arg:		type NAME
+    arg:		type NAME
 
-	body:		vardecl* stmt*
+    body:		vardecl* stmt*
 
-	stmt:		ifstmt
-			whilestmt
-			dowhilestmt
-			"return" expr ";"
-			expr ";"
-			"{" stmt* "}"
-			";"
+    stmt:		ifstmt
+            whilestmt
+            dowhilestmt
+            "return" expr ";"
+            expr ";"
+            "{" stmt* "}"
+            ";"
 
-	ifstmt:		"if" "(" expr ")" stmt
-			"if" "(" expr ")" stmt "else" stmt
+    ifstmt:		"if" "(" expr ")" stmt
+            "if" "(" expr ")" stmt "else" stmt
 
-	whilestmt:	"while" "(" expr ")" stmt
+    whilestmt:	"while" "(" expr ")" stmt
 
-	dowhilestmt:	"do" stmt "while" "(" expr ")" ";"
+    dowhilestmt:	"do" stmt "while" "(" expr ")" ";"
 
-	expr:		expr binop expr
-			unop expr
-			expr "[" expr "]"
-			"(" expr ")"
-			expr "(" exprs ")"
-			NAME
-			INT
-			CHAR
-			STRING
+    expr:		expr binop expr
+            unop expr
+            expr "[" expr "]"
+            "(" expr ")"
+            expr "(" exprs ")"
+            NAME
+            INT
+            CHAR
+            STRING
 
-	exprs:		/*empty*/
-			(expr ",")* expr
+    exprs:		/*empty*/
+            (expr ",")* expr
 
-	binop:		"+" | "-" | "*" | "/" | "%" |
-			"=" |
-			"<" | "==" | "!="
+    binop:		"+" | "-" | "*" | "/" | "%" |
+            "=" |
+            "<" | "==" | "!="
 
-	unop:		"!" | "-" | "*"
+    unop:		"!" | "-" | "*"
 
-	type:		"int" stars
-			"char" stars
+    type:		"int" stars
+            "char" stars
 
-	stars:		"*"*
+    stars:		"*"*
 """
 
 from pyparsing import *
 
 LPAR,RPAR,LBRACK,RBRACK,LBRACE,RBRACE,SEMI,COMMA = map(Suppress, "()[]{};,")
-INT = Keyword("int")
-CHAR = Keyword("char")
-WHILE = Keyword("while")
-DO = Keyword("do")
-IF = Keyword("if")
-ELSE = Keyword("else")
-RETURN = Keyword("return")
+INT, CHAR, WHILE, DO, IF, ELSE, RETURN = map(Keyword, 
+    "int char while do if else return".split())
 
 NAME = Word(alphas+"_", alphanums+"_")
 integer = Regex(r"[+-]?\d+")
 char = Regex(r"'.'")
 string_ = dblQuotedString
 
-INT = Keyword("int")
-CHAR = Keyword("char")
 TYPE = Group((INT | CHAR) + ZeroOrMore("*"))
 
 expr = Forward()
@@ -148,23 +141,23 @@ int
 putstr(char *s)
 {
     while(*s)
-	putchar(*s++);
+        putchar(*s++);
 }
 
 int
 fac(int n)
 {
     if (n == 0)
-	return 1;
+        return 1;
     else
-	return n*fac(n-1);
+        return n*fac(n-1);
 }
 
 int
 putn(int n)
 {
     if (9 < n)
-	putn(n / 10);
+        putn(n / 10);
     putchar((n%10) + '0');
 }
 
@@ -184,10 +177,10 @@ main()
     int i;
     i = 0;
     while(i < 10)
-	facpr(i++);
+        facpr(i++);
     return 0;
 }
 """
 
-ast = program.parseString(test,parseAll=True)
+ast = program.parseString(test, parseAll=True)
 ast.pprint()
diff --git a/examples/select_parser.py b/examples/select_parser.py
index 5b823a4..f969f02 100644
--- a/examples/select_parser.py
+++ b/examples/select_parser.py
@@ -56,7 +56,7 @@ type_name = oneOf("TEXT REAL INTEGER BLOB NULL")
 expr_term = (
     CAST + LPAR + expr + AS + type_name + RPAR |
     EXISTS + LPAR + select_stmt + RPAR |
-    function_name.setName("function_name") + LPAR + Optional(delimitedList(expr)) + RPAR |
+    function_name.setName("function_name") + LPAR + Optional("*" | delimitedList(expr)) + RPAR |
     literal_value |
     bind_parameter |
     Combine(identifier+('.'+identifier)*(0,2)).setName("ident")
@@ -88,8 +88,8 @@ join_constraint = Group(Optional(ON + expr | USING + LPAR + Group(delimitedList(
 join_op = COMMA | Group(Optional(NATURAL) + Optional(INNER | CROSS | LEFT + OUTER | LEFT | OUTER) + JOIN)
 
 join_source = Forward()
-single_source = ( (Group(database_name("database") + "." + table_name("table")) | table_name("table")) + 
-                    Optional(Optional(AS) + table_alias("table_alias")) +
+single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) + 
+                    Optional(Optional(AS) + table_alias("table_alias*")) +
                     Optional(INDEXED + BY + index_name("name") | NOT + INDEXED)("index") | 
                   (LPAR + select_stmt + RPAR + Optional(Optional(AS) + table_alias)) | 
                   (LPAR + join_source + RPAR) )
diff --git a/examples/simpleSQL.py b/examples/simpleSQL.py
index 7bbd4cd..6cde6ce 100644
--- a/examples/simpleSQL.py
+++ b/examples/simpleSQL.py
@@ -7,33 +7,26 @@
 #
 from pyparsing import Literal, CaselessLiteral, Word, delimitedList, Optional, \
     Combine, Group, alphas, nums, alphanums, ParseException, Forward, oneOf, quotedString, \
-    ZeroOrMore, restOfLine, Keyword, upcaseTokens
+    ZeroOrMore, restOfLine, CaselessKeyword, pyparsing_common
 
 # define SQL tokens
 selectStmt = Forward()
-SELECT = Keyword("select", caseless=True)
-FROM = Keyword("from", caseless=True)
-WHERE = Keyword("where", caseless=True)
+SELECT, FROM, WHERE = map(CaselessKeyword, "select from where".split())
 
 ident          = Word( alphas, alphanums + "_$" ).setName("identifier")
-columnName     = ( delimitedList( ident, ".", combine=True ) ).setName("column name").addParseAction(upcaseTokens)
-columnNameList = Group( delimitedList( columnName ) )
-tableName      = ( delimitedList( ident, ".", combine=True ) ).setName("table name").addParseAction(upcaseTokens)
-tableNameList  = Group( delimitedList( tableName ) )
+columnName     = delimitedList(ident, ".", combine=True).setName("column name")
+columnName.addParseAction(pyparsing_common.upcaseTokens)
+columnNameList = Group( delimitedList(columnName))
+tableName      = delimitedList(ident, ".", combine=True).setName("table name")
+tableName.addParseAction(pyparsing_common.upcaseTokens)
+tableNameList  = Group(delimitedList(tableName))
 
 whereExpression = Forward()
-and_ = Keyword("and", caseless=True)
-or_ = Keyword("or", caseless=True)
-in_ = Keyword("in", caseless=True)
+and_, or_, in_ = map(CaselessKeyword, "and or in".split())
 
-E = CaselessLiteral("E")
 binop = oneOf("= != < > >= <= eq ne lt le gt ge", caseless=True)
-arithSign = Word("+-",exact=1)
-realNum = Combine( Optional(arithSign) + ( Word( nums ) + "." + Optional( Word(nums) )  |
-                                                         ( "." + Word(nums) ) ) + 
-            Optional( E + Optional(arithSign) + Word(nums) ) )
-intNum = Combine( Optional(arithSign) + Word( nums ) + 
-            Optional( E + Optional("+") + Word(nums) ) )
+realNum = pyparsing_common.real()
+intNum = pyparsing_common.signed_integer()
 
 columnRval = realNum | intNum | quotedString | columnName # need to add support for alg expressions
 whereCondition = Group(
diff --git a/htmldoc/api-objects.txt b/htmldoc/api-objects.txt
index 2e15096..52e9517 100644
--- a/htmldoc/api-objects.txt
+++ b/htmldoc/api-objects.txt
@@ -1190,7 +1190,7 @@ pyparsing.ParserElement.DEFAULT_WHITE_CHARS	pyparsing.ParserElement-class.html#D
 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.LineStart.preParse	pyparsing.LineStart-class.html#preParse
+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
@@ -1523,7 +1523,7 @@ 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.OneOrMore.setResultsName	pyparsing.OneOrMore-class.html#setResultsName
+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
diff --git a/htmldoc/class-tree.html b/htmldoc/class-tree.html
index 12b4ef4..0b2b4eb 100644
--- a/htmldoc/class-tree.html
+++ b/htmldoc/class-tree.html
@@ -317,7 +317,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sat Sep 10 10:21:41 2016
+    Generated by Epydoc 3.0.1 on Thu Oct 06 20:32:29 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/htmldoc/help.html b/htmldoc/help.html
index 9168067..5fec08c 100644
--- a/htmldoc/help.html
+++ b/htmldoc/help.html
@@ -254,7 +254,7 @@ page was last updated. </p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sat Sep 10 10:21:41 2016
+    Generated by Epydoc 3.0.1 on Thu Oct 06 20:32:29 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/htmldoc/identifier-index.html b/htmldoc/identifier-index.html
index 7c77f60..5eccd39 100644
--- a/htmldoc/identifier-index.html
+++ b/htmldoc/identifier-index.html
@@ -633,23 +633,23 @@
 <span class="index-where">(in <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 <a href="pyparsing.StringStart-class.html">StringStart</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.LineStart-class.html#preParse">preParse()</a><br />
-<span class="index-where">(in <a href="pyparsing.LineStart-class.html">LineStart</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#preParse">preParse()</a><br />
+<span class="index-where">(in <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 <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 <a href="pyparsing.White-class.html">White</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#preParse">preParse()</a><br />
-<span class="index-where">(in <a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing-module.html#printables">printables</a><br />
+<span class="index-where">(in <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 <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 <a href="pyparsing.Word-class.html">Word</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#printables">printables</a><br />
+<td width="33%" class="link-index"><a href="pyparsing-module.html#punc8bit">punc8bit</a><br />
 <span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
 </tr>
 <tr>
@@ -657,7 +657,7 @@
 <span class="index-where">(in <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 <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 />
+<td width="33%" class="link-index"><a href="pyparsing-module.html#PY_3">PY_3</a><br />
 <span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
 </tr>
 <tr>
@@ -665,22 +665,22 @@
 <span class="index-where">(in <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 <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 <a href="pyparsing-module.html">pyparsing</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.Keyword-class.html#parseImpl">parseImpl()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing.ZeroOrMore-class.html">ZeroOrMore</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html">pyparsing</a></td>
+<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a><br />
+<span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="pyparsing.LineEnd-class.html#parseImpl">parseImpl()</a><br />
 <span class="index-where">(in <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 <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 />
+<td width="33%" class="link-index"><a href="pyparsing-module.html#pythonStyleComment">pythonStyleComment</a><br />
 <span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
 </tr>
 <tr>
@@ -688,8 +688,7 @@
 <span class="index-where">(in <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 <a href="pyparsing-module.html">pyparsing</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing-module.html#pythonStyleComment">pythonStyleComment</a><br />
-<span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
+<td width="33%" class="link-index"> </td>
 </tr>
 </table>
 </td></tr>
@@ -747,45 +746,37 @@
 <tr>
 <td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#scanner">scanner()</a><br />
 <span class="index-where">(in <a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.OneOrMore-class.html#setResultsName">setResultsName()</a><br />
-<span class="index-where">(in <a href="pyparsing.OneOrMore-class.html">OneOrMore</a>)</span></td>
-<td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#streamline">streamline()</a><br />
-<span class="index-where">(in <a href="pyparsing.ParseExpression-class.html">ParseExpression</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 <a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
 <td width="33%" class="link-index"><a href="pyparsing.ParseExpression-class.html#setResultsName">setResultsName()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing.ParserElement-class.html">ParserElement</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 <a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#scanString">scanString()</a><br />
+<span class="index-where">(in <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 <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 <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 <a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.pyparsing_common-class.html#sci_real">sci_real</a><br />
+<span class="index-where">(in <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 <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 <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 <a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.Regex.compiledREtype-class.html#search">search()</a><br />
+<span class="index-where">(in <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 <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 <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 />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#searchString">searchString()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing.pyparsing_common-class.html">pyparsing_common</a>)</span></td>
@@ -793,7 +784,7 @@
 <span class="index-where">(in <a href="pyparsing-module.html">pyparsing</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDebug">setDebug()</a><br />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setBreak">setBreak()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing-module.html">pyparsing</a>)</span></td>
@@ -801,7 +792,7 @@
 <span class="index-where">(in <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#setDebugActions">setDebugActions()</a><br />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDebug">setDebug()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing-module.html">pyparsing</a>)</span></td>
@@ -809,23 +800,23 @@
 <span class="index-where">(in <a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</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 <a href="pyparsing.Keyword-class.html">Keyword</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDebugActions">setDebugActions()</a><br />
+<span class="index-where">(in <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 <a href="pyparsing.ParserElement-class.html">ParserElement</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 <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 <a href="pyparsing.ParserElement-class.html">ParserElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="pyparsing.Keyword-class.html#setDefaultKeywordChars">setDefaultKeywordChars()</a><br />
+<span class="index-where">(in <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 <a href="pyparsing.Regex.compiledREtype-class.html">compiledREtype</a>)</span></td>
 <td width="33%" class="link-index"><a href="pyparsing.Suppress-class.html">Suppress</a><br />
 <span class="index-where">(in <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 />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setDefaultWhitespaceChars">setDefaultWhitespaceChars()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing-module.html">pyparsing</a>)</span></td>
@@ -833,7 +824,7 @@
 <span class="index-where">(in <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 />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setFailAction">setFailAction()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing.Forward-class.html">Forward</a>)</span></td>
@@ -841,13 +832,20 @@
 <span class="index-where">(in <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 />
+<td width="33%" class="link-index"><a href="pyparsing.ParserElement-class.html#setName">setName()</a><br />
 <span class="index-where">(in <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 <a href="pyparsing.ParseElementEnhance-class.html">ParseElementEnhance</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 <a href="pyparsing-module.html">pyparsing</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 <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 <a href="pyparsing.ParseExpression-class.html">ParseExpression</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
@@ -1386,7 +1384,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sat Sep 10 10:21:41 2016
+    Generated by Epydoc 3.0.1 on Thu Oct 06 20:32:29 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/htmldoc/module-tree.html b/htmldoc/module-tree.html
index be42db1..c265463 100644
--- a/htmldoc/module-tree.html
+++ b/htmldoc/module-tree.html
@@ -92,7 +92,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sat Sep 10 10:21:41 2016
+    Generated by Epydoc 3.0.1 on Thu Oct 06 20:32:29 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/htmldoc/pyparsing-module.html b/htmldoc/pyparsing-module.html
index 547eb36..bbf01f4 100644
--- a/htmldoc/pyparsing-module.html
+++ b/htmldoc/pyparsing-module.html
@@ -116,7 +116,7 @@
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        2.1.9
+        2.1.10
       </p>
       <p><strong>Author:</strong>
         Paul McGuire <ptmcg at users.sourceforge.net>
@@ -2236,7 +2236,13 @@
   <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.</p>
+  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>
@@ -2657,7 +2663,7 @@ commaSeparatedList
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sat Sep 10 10:21:41 2016
+    Generated by Epydoc 3.0.1 on Thu Oct 06 20:32:29 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/htmldoc/pyparsing-pysrc.html b/htmldoc/pyparsing-pysrc.html
index 20bf288..01a9d7d 100644
--- a/htmldoc/pyparsing-pysrc.html
+++ b/htmldoc/pyparsing-pysrc.html
@@ -120,8 +120,8 @@
 <a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring"> - embedded comments</tt> </tt>
 <a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
 <a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.1.9"</tt> </tt>
-<a name="L64"></a><tt class="py-lineno">  64</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">"10 Sep 2016 15:10 UTC"</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.1.10"</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</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">"07 Oct 2016 01:31 UTC"</tt> </tt>
 <a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">"Paul McGuire <ptmcg at users.sourceforge.net>"</tt> </tt>
 <a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"> </tt>
 <a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">string</tt> </tt>
@@ -956,7 +956,7 @@ pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('
 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  [...]
 <a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">full</tt><tt class="py-op">:</tt> </tt>
 <a name="L870"></a><tt class="py-lineno"> 870</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>
-<a name="L871"></a><tt class="py-lineno"> 871</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-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="pyparsing.ParseResults.items" class="py-name" href="#"  [...]
+<a name="L871"></a><tt class="py-lineno"> 871</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> < [...]
 <a name="L872"></a><tt class="py-lineno"> 872</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>
 <a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">out</tt><tt class="py-op">:</tt> </tt>
 <a name="L874"></a><tt class="py-lineno"> 874</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
@@ -972,7 +972,7 @@ pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink(
 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>
 <a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L882"></a><tt class="py-lineno"> 882</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">_ustr</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+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>
 <a name="L883"></a><tt class="py-lineno"> 883</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 [...]
 <a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">                <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
 <a name="L885"></a><tt class="py-lineno"> 885</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>
@@ -1052,7 +1052,7 @@ pyparsing.ParserElement.copy" class="py-name" href="#" onclick="return doclink('
 <a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring">   positions within the parsed string.</tt> </tt>
 <a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-docstring">   """</tt> </tt>
 <a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">strg</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</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-name">loc</tt><tt class="py-op"><</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-op">==</tt> <t [...]
+<a name="L956"></a><tt class="py-lineno"> 956</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"><</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">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</t [...]
 </div><a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"> </tt>
 <a name="lineno"></a><div id="lineno-def"><a name="L958"></a><tt class="py-lineno"> 958</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>
 </div><div id="lineno-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lineno-expanded"><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns current line number within a string, counting newlines as line separators.</tt> </tt>
@@ -1464,8 +1464,7 @@ pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink(
 <a name="L1352"></a><tt class="py-lineno">1352</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>
 <a name="L1353"></a><tt class="py-lineno">1353</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>
 <a name="L1354"></a><tt class="py-lineno">1354</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>
-<a name="L1355"></a><tt class="py-lineno">1355</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-151" class="py-name" targets="Method pyparsing.GoToColumn.preParse()=pyparsing.GoToColumn-class.html#preParse,Method pyparsing.LineStart.preParse()=pyparsing.LineStart-class.html#preParse,Method pyparsing.ParserElement.preParse()=pyparsing.ParserElement-class.html#preParse"><a ti [...]
-pyparsing.LineStart.preParse
+<a name="L1355"></a><tt class="py-lineno">1355</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-151" 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-151', 'preParse', 'link-151');">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>
 <a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>
@@ -1513,7 +1512,6 @@ pyparsing.ZeroOrMore.parseImpl" class="py-name" href="#" onclick="return doclink
 <a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L1372"></a><tt class="py-lineno">1372</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>
 <a name="L1373"></a><tt class="py-lineno">1373</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-155" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.LineStart.preParse
 pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-155', 'preParse', 'link-151');">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>
 <a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">                <tt class="py-name">preloc</tt> <tt class="py-op">=</tt> <tt class="py-name">loc</tt> </tt>
@@ -1826,7 +1824,6 @@ pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doc
 <a name="L1607"></a><tt class="py-lineno">1607</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>
 <a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parseAll</tt><tt class="py-op">:</tt> </tt>
 <a name="L1609"></a><tt class="py-lineno">1609</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-233" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.LineStart.preParse
 pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-233', 'preParse', 'link-151');">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>
 <a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">                <tt class="py-name">se</tt> <tt class="py-op">=</tt> <tt id="link-234" class="py-name" targets="Class pyparsing.Empty=pyparsing.Empty-class.html"><a title="pyparsing.Empty" class="py-name" href="#" onclick="return doclink('link-234', 'Empty', 'link-234');">Empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-235" class="py-name" targets="Class pyparsing [...]
 <a name="L1611"></a><tt class="py-lineno">1611</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>
@@ -1885,7 +1882,6 @@ pyparsing.ParserElement.streamline" class="py-name" href="#" onclick="return doc
 <a name="L1658"></a><tt class="py-lineno">1658</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>
 <a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">        <tt class="py-name">loc</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
 <a name="L1660"></a><tt class="py-lineno">1660</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-242" class="py-name"><a title="pyparsing.GoToColumn.preParse
-pyparsing.LineStart.preParse
 pyparsing.ParserElement.preParse" class="py-name" href="#" onclick="return doclink('link-242', 'preParse', 'link-151');">preParse</a></tt> </tt>
 <a name="L1661"></a><tt class="py-lineno">1661</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>
 <a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">        <tt id="link-243" class="py-name"><a title="pyparsing.ParserElement" class="py-name" href="#" onclick="return doclink('link-243', 'ParserElement', 'link-132');">ParserElement</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="pyparsing.ParserElement.resetCache" class="py-name" href="#" onclick="return doclink('link-244', 'resetCache', 'link-230');">resetCache</a></tt><tt class="py-op [...]
@@ -2229,8 +2225,7 @@ pyparsing.ParseResults.append" class="py-name" href="#" onclick="return doclink(
 <a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line"><tt class="py-docstring">            userdata = Word(alphas)("name") + Word(nums+"-")("socsecno")             </tt> </tt>
 <a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
 <a name="L1999"></a><tt class="py-lineno">1999</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>
-<a name="L2000"></a><tt class="py-lineno">2000</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-304" class="py-name" targets="Method pyparsing.OneOrMore.setResultsName()=pyparsing.OneOrMore-class.html#setResultsName,Method pyparsing.ParseExpression.setResultsName()=pyparsing.ParseExpression-class.html#setResultsName,Method pyparsing.ParserElement.setResultsName()=pyparsing.ParserElement-class.html#s [...]
-pyparsing.ParseExpression.setResultsName
+<a name="L2000"></a><tt class="py-lineno">2000</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-304" 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-304', 'setResultsName', 'link-304');">setResultsName</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
 <a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L2002"></a><tt class="py-lineno">2002</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-305" class="py-name"><a title="pyparsing.Forward.copy
@@ -2421,7 +2416,7 @@ pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return
 <a name="ParserElement.matches"></a><div id="ParserElement.matches-def"><a name="L2172"></a><tt class="py-lineno">2172</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">testStrin [...]
 </div><div id="ParserElement.matches-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParserElement.matches-expanded"><a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
 <a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line"><tt class="py-docstring">        Method for quick testing of a parser against a test string. Good for simple </tt> </tt>
-<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line"><tt class="py-docstring">        inline microtests of sub expressions while building up larger parser.0</tt> </tt>
+<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line"><tt class="py-docstring">        inline microtests of sub expressions while building up larger parser.</tt> </tt>
 <a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line"><tt class="py-docstring">           </tt> </tt>
 <a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters:</tt> </tt>
 <a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line"><tt class="py-docstring">         - testString - to test against this expression for a match</tt> </tt>
@@ -2516,66 +2511,74 @@ pyparsing.ParserElement.checkRecursion" class="py-name" href="#" onclick="return
 <a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line"><tt class="py-docstring">            FAIL: Expected end of text (at char 4), (line:1, col:5)</tt> </tt>
 <a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line"><tt class="py-docstring">            Success</tt> </tt>
-<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L2271"></a><tt class="py-lineno">2271</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>
-<a name="L2272"></a><tt class="py-lineno">2272</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 cl [...]
-<a name="L2273"></a><tt class="py-lineno">2273</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>
-<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line">            <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt id="link-324" class="py-name" targets="Class pyparsing.Literal=pyparsing.Literal-class.html"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-324', 'Literal', 'link-324');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">comment</tt><tt class="py-op">)</tt> </tt>
-<a name="L2275"></a><tt class="py-lineno">2275</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>
-<a name="L2276"></a><tt class="py-lineno">2276</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>
-<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L2278"></a><tt class="py-lineno">2278</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>
-<a name="L2279"></a><tt class="py-lineno">2279</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-325" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-325', 'matches', 'link-245');" [...]
-<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line">                <tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="pyparsing.ParseExpression.append
+<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2271"></a><tt class="py-lineno">2271</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</tt> </tt>
+<a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line"><tt class="py-docstring">        lines, create a test like this::</tt> </tt>
+<a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line"><tt class="py-docstring">            expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines")</tt> </tt>
+<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line"><tt class="py-docstring">        (Note that this is a raw string literal, you must include the leading 'r'.)</tt> </tt>
+<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2278"></a><tt class="py-lineno">2278</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>
+<a name="L2279"></a><tt class="py-lineno">2279</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 cl [...]
+<a name="L2280"></a><tt class="py-lineno">2280</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>
+<a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line">            <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt id="link-324" class="py-name" targets="Class pyparsing.Literal=pyparsing.Literal-class.html"><a title="pyparsing.Literal" class="py-name" href="#" onclick="return doclink('link-324', 'Literal', 'link-324');">Literal</a></tt><tt class="py-op">(</tt><tt class="py-name">comment</tt><tt class="py-op">)</tt> </tt>
+<a name="L2282"></a><tt class="py-lineno">2282</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>
+<a name="L2283"></a><tt class="py-lineno">2283</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>
+<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L2285"></a><tt class="py-lineno">2285</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>
+<a name="L2286"></a><tt class="py-lineno">2286</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-325" class="py-name"><a title="pyparsing.ParserElement.matches" class="py-name" href="#" onclick="return doclink('link-325', 'matches', 'link-245');" [...]
+<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line">                <tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="pyparsing.ParseExpression.append
... 8583 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/pyparsing.git



More information about the Python-modules-commits mailing list