summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Hees <dev@joernhees.de>2016-03-17 11:41:43 +0100
committerGunnar Aastrand Grimnes <gromgull@gmail.com>2017-01-18 20:01:01 +0100
commit87414fdd938238f1d73eb8b2ae2344c42cdbe2c0 (patch)
tree33b8a79f2a1fb1a400d595fd1dbded2129817572
parentc28d0de458352dc4766e5f016a1ae9ee8b991fda (diff)
downloadrdflib-87414fdd938238f1d73eb8b2ae2344c42cdbe2c0.tar.gz
prettify parsetree
helper method to actually look at parsetrees containing CompValues, dicts and lists
-rw-r--r--rdflib/plugins/sparql/parserutils.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/rdflib/plugins/sparql/parserutils.py b/rdflib/plugins/sparql/parserutils.py
index b5c25600..7e4a3665 100644
--- a/rdflib/plugins/sparql/parserutils.py
+++ b/rdflib/plugins/sparql/parserutils.py
@@ -241,6 +241,31 @@ class Comp(TokenConverter):
return self
+def prettify_parsetree(t, indent='', depth=0):
+ out = []
+ if isinstance(t, ParseResults):
+ for e in t.asList():
+ out.append(prettify_parsetree(e, indent, depth + 1))
+ for k, v in sorted(t.items()):
+ out.append("%s%s- %s:\n" % (indent, ' ' * depth, k))
+ out.append(prettify_parsetree(v, indent, depth + 1))
+ elif isinstance(t, CompValue):
+ out.append("%s%s> %s:\n" % (indent, ' ' * depth, t.name))
+ for k, v in t.items():
+ out.append("%s%s- %s:\n" % (indent, ' ' * (depth + 1), k))
+ out.append(prettify_parsetree(v, indent, depth + 2))
+ elif isinstance(t, dict):
+ for k, v in t.items():
+ out.append("%s%s- %s:\n" % (indent, ' ' * (depth + 1), k))
+ out.append(prettify_parsetree(v, indent, depth + 2))
+ elif isinstance(t, list):
+ for e in t:
+ out.append(prettify_parsetree(e, indent, depth + 1))
+ else:
+ out.append("%s%s- %r\n" % (indent, ' ' * depth, t))
+ return "".join(out)
+
+
if __name__ == '__main__':
from pyparsing import Word, nums
import sys