From 5b8a02bdadf2a3f6096e6c412beeac81ddb99b20 Mon Sep 17 00:00:00 2001 From: goodger Date: Fri, 6 Dec 2002 02:40:01 +0000 Subject: a tool for exploring abstract syntax trees generated by ``parser.suite()`` git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@998 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- test/test_readers/test_python/showparse | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 test/test_readers/test_python/showparse (limited to 'test/test_readers/test_python/showparse') diff --git a/test/test_readers/test_python/showparse b/test/test_readers/test_python/showparse new file mode 100755 index 000000000..61e08ba92 --- /dev/null +++ b/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 + +Where ```` is the key to the ``totest`` dictionary, and ```` 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) -- cgit v1.2.1 From eba59e0b9f6ca9ac58e7423eaa1592cf4c928096 Mon Sep 17 00:00:00 2001 From: goodger Date: Sat, 7 Dec 2002 03:02:18 +0000 Subject: added stdin input capability git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@1001 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- test/test_readers/test_python/showparse | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'test/test_readers/test_python/showparse') diff --git a/test/test_readers/test_python/showparse b/test/test_readers/test_python/showparse index 61e08ba92..8144256d6 100755 --- a/test/test_readers/test_python/showparse +++ b/test/test_readers/test_python/showparse @@ -3,14 +3,17 @@ """ 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. +docutils/test/test_readers/test_python/test_parser or stdin. Usage:: showparse + showparse < + Where ```` is the key to the ``totest`` dictionary, and ```` is -the index of the list ``totest[key]``. +the index of the list ``totest[key]``. If no arguments are given, stdin is +used for input. """ import sys @@ -32,9 +35,12 @@ def name_elements(ast): 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] +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) -- cgit v1.2.1