summaryrefslogtreecommitdiff
path: root/docutils/test/test_readers/test_python
diff options
context:
space:
mode:
authorgoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2002-12-06 02:40:01 +0000
committergoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2002-12-06 02:40:01 +0000
commit84fba8b69a6f4172c858fdc7ea669fcd56f646db (patch)
treed2aee514ffd5dc690ac17e51a69be31a8b233a22 /docutils/test/test_readers/test_python
parent47a890798d92d0bde3f2eb2091fafe6e1396525e (diff)
downloaddocutils-84fba8b69a6f4172c858fdc7ea669fcd56f646db.tar.gz
a tool for exploring abstract syntax trees generated by ``parser.suite()``
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@998 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test/test_readers/test_python')
-rwxr-xr-xdocutils/test/test_readers/test_python/showparse42
1 files changed, 42 insertions, 0 deletions
diff --git a/docutils/test/test_readers/test_python/showparse b/docutils/test/test_readers/test_python/showparse
new file mode 100755
index 000000000..61e08ba92
--- /dev/null
+++ b/docutils/test/test_readers/test_python/showparse
@@ -0,0 +1,42 @@
+#! /usr/bin/env python
+
+"""
+This is a tool for exploring abstract syntax trees generated by
+``parser.suite()`` from test data in
+docutils/test/test_readers/test_python/test_parser.
+
+Usage::
+
+ showparse <key> <index>
+
+Where ``<key>`` is the key to the ``totest`` dictionary, and ``<index>`` is
+the index of the list ``totest[key]``.
+"""
+
+import sys
+import types
+import parser
+import token
+import symbol
+import pprint
+import test_parser
+
+names = token.tok_name.copy()
+names.update(symbol.sym_name)
+
+def name_elements(ast):
+ if ast:
+ name = names[ast[0]]
+ ast[0] = '%s (%s)' % (name, ast[0])
+ for node in ast[1:]:
+ if type(node) == types.ListType:
+ name_elements(node)
+
+key, caseno = sys.argv[1:]
+print 'totest["%s"][%s][0]:\n' % (key, caseno)
+input_text = test_parser.totest[key][int(caseno)][0]
+print input_text
+module = parser.suite(input_text)
+ast = parser.ast2list(module, line_info=1)
+name_elements(ast)
+pprint.pprint(ast)