diff options
| author | wiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2005-08-17 13:59:12 +0000 |
|---|---|---|
| committer | wiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2005-08-17 13:59:12 +0000 |
| commit | a4bc0d09f3d1f633a5780976d1f913e083c9564a (patch) | |
| tree | 1777475e88463b08438f0719be97cc087554eadd /test/test_readers/test_python/showparse | |
| parent | 60c69f8cf97125135948a3d35b7698ee80921137 (diff) | |
| parent | 2818db9a234cc37008c5f2bb0e821f9b1fa92de2 (diff) | |
| download | docutils-0.3.9.tar.gz | |
re-added docutils-0.3.9 tag one level deeper (without web/ and sandboxes/)docutils-0.3.9
git-svn-id: http://svn.code.sf.net/p/docutils/code/tags/docutils-0.3.9@3815 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'test/test_readers/test_python/showparse')
| -rwxr-xr-x | test/test_readers/test_python/showparse | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/test_readers/test_python/showparse b/test/test_readers/test_python/showparse new file mode 100755 index 000000000..8144256d6 --- /dev/null +++ b/test/test_readers/test_python/showparse @@ -0,0 +1,48 @@ +#! /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 or stdin. + +Usage:: + + showparse <key> <index> + + showparse < <module.py> + +Where ``<key>`` is the key to the ``totest`` dictionary, and ``<index>`` is +the index of the list ``totest[key]``. If no arguments are given, stdin is +used for input. +""" + +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) + +if len(sys.argv) > 1: + key, caseno = sys.argv[1:] + print 'totest["%s"][%s][0]:\n' % (key, caseno) + input_text = test_parser.totest[key][int(caseno)][0] +else: + input_text = sys.stdin.read() +print input_text +module = parser.suite(input_text) +ast = parser.ast2list(module, line_info=1) +name_elements(ast) +pprint.pprint(ast) |
