diff options
author | Joern Hees <dev@joernhees.de> | 2016-03-17 11:41:43 +0100 |
---|---|---|
committer | Gunnar Aastrand Grimnes <gromgull@gmail.com> | 2017-01-18 20:01:01 +0100 |
commit | 87414fdd938238f1d73eb8b2ae2344c42cdbe2c0 (patch) | |
tree | 33b8a79f2a1fb1a400d595fd1dbded2129817572 | |
parent | c28d0de458352dc4766e5f016a1ae9ee8b991fda (diff) | |
download | rdflib-87414fdd938238f1d73eb8b2ae2344c42cdbe2c0.tar.gz |
prettify parsetree
helper method to actually look at parsetrees containing CompValues, dicts and lists
-rw-r--r-- | rdflib/plugins/sparql/parserutils.py | 25 |
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 |