summaryrefslogtreecommitdiff
path: root/examples/parseListString.py
diff options
context:
space:
mode:
authorptmcg <ptmcg@austin.rr.com>2020-04-26 10:33:12 -0500
committerptmcg <ptmcg@austin.rr.com>2020-04-26 10:33:12 -0500
commit203fa36d7ae6b79344e4bf13531b77c09f313793 (patch)
tree443459f498f38b97618344c6f707eeaa117cf670 /examples/parseListString.py
parent813ba3bed433a96e02d82cad2e2940a6850d96a5 (diff)
downloadpyparsing-git-203fa36d7ae6b79344e4bf13531b77c09f313793.tar.gz
change some lambdas to explicit methods for clarity (see discussion in #207); deleted duplicated examples (commit *all* changes this time)
Diffstat (limited to 'examples/parseListString.py')
-rw-r--r--examples/parseListString.py112
1 files changed, 0 insertions, 112 deletions
diff --git a/examples/parseListString.py b/examples/parseListString.py
deleted file mode 100644
index f34f614..0000000
--- a/examples/parseListString.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# parseListString.py
-#
-# Copyright, 2006, by Paul McGuire
-#
-
-from pyparsing import *
-
-# first pass
-lbrack = Literal("[")
-rbrack = Literal("]")
-integer = Word(nums).setName("integer")
-real = Combine(
- Optional(oneOf("+ -")) + Word(nums) + "." + Optional(Word(nums))
-).setName("real")
-
-listItem = real | integer | quotedString
-
-listStr = lbrack + delimitedList(listItem) + rbrack
-
-test = "['a', 100, 3.14]"
-
-print(listStr.parseString(test))
-
-
-# second pass, cleanup and add converters
-lbrack = Literal("[").suppress()
-rbrack = Literal("]").suppress()
-cvtInt = lambda s, l, toks: int(toks[0])
-integer = Word(nums).setName("integer").setParseAction(cvtInt)
-cvtReal = lambda s, l, toks: float(toks[0])
-real = Regex(r"[+-]?\d+\.\d*").setName("floating-point number").setParseAction(cvtReal)
-listItem = real | integer | quotedString.setParseAction(removeQuotes)
-
-listStr = lbrack + delimitedList(listItem) + rbrack
-
-test = "['a', 100, 3.14]"
-
-print(listStr.parseString(test))
-
-# third pass, add nested list support, and tuples, too!
-cvtInt = lambda s, l, toks: int(toks[0])
-cvtReal = lambda s, l, toks: float(toks[0])
-
-lbrack = Literal("[").suppress()
-rbrack = Literal("]").suppress()
-integer = Word(nums).setName("integer").setParseAction(cvtInt)
-real = Regex(r"[+-]?\d+\.\d*").setName("floating-point number").setParseAction(cvtReal)
-tupleStr = Forward()
-listStr = Forward()
-listItem = (
- real
- | integer
- | quotedString.setParseAction(removeQuotes)
- | Group(listStr)
- | tupleStr
-)
-tupleStr << (
- Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")")
-)
-tupleStr.setParseAction(lambda t: tuple(t.asList()))
-listStr << lbrack + delimitedList(listItem) + Optional(Suppress(",")) + rbrack
-
-test = "['a', 100, ('A', [101,102]), 3.14, [ +2.718, 'xyzzy', -1.414] ]"
-print(listStr.parseString(test))
-
-# fourth pass, add parsing of dicts
-cvtInt = lambda s, l, toks: int(toks[0])
-cvtReal = lambda s, l, toks: float(toks[0])
-cvtDict = lambda s, l, toks: dict(toks[0])
-
-lbrack = Literal("[").suppress()
-rbrack = Literal("]").suppress()
-lbrace = Literal("{").suppress()
-rbrace = Literal("}").suppress()
-colon = Literal(":").suppress()
-integer = Word(nums).setName("integer").setParseAction(cvtInt)
-real = Regex(r"[+-]?\d+\.\d*").setName("real").setParseAction(cvtReal)
-
-tupleStr = Forward()
-listStr = Forward()
-dictStr = Forward()
-listItem = (
- real
- | integer
- | quotedString.setParseAction(removeQuotes)
- | Group(listStr)
- | tupleStr
- | dictStr
-)
-tupleStr <<= (
- Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")")
-)
-tupleStr.setParseAction(lambda t: tuple(t.asList()))
-listStr <<= (
- lbrack + Optional(delimitedList(listItem)) + Optional(Suppress(",")) + rbrack
-)
-dictKeyStr = real | integer | quotedString.setParseAction(removeQuotes)
-dictStr <<= (
- lbrace
- + Optional(delimitedList(Group(dictKeyStr + colon + listItem)))
- + Optional(Suppress(","))
- + rbrace
-)
-dictStr.setParseAction(
- lambda t: {
- k_v[0]: (k_v[1].asList() if isinstance(k_v[1], ParseResults) else k_v[1])
- for k_v in t
- }
-)
-
-test = "[{0: [2], 1: []}, {0: [], 1: [], 2: [,]}, {0: [1, 2,],}]"
-print(listStr.parseString(test))