summaryrefslogtreecommitdiffstats
path: root/Demo/parser/test_parser.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1996-08-21 16:28:53 (GMT)
committerGuido van Rossum <guido@python.org>1996-08-21 16:28:53 (GMT)
commit16d27e3b141d26853effc6c70214412cebebbe9f (patch)
treec98f065362f2a1dfd552eff86934cb638dfaf055 /Demo/parser/test_parser.py
parent6dbd190f5ec3127ad7c5ef6fc67d2f02c4cc1492 (diff)
downloadcpython-16d27e3b141d26853effc6c70214412cebebbe9f.zip
cpython-16d27e3b141d26853effc6c70214412cebebbe9f.tar.gz
cpython-16d27e3b141d26853effc6c70214412cebebbe9f.tar.bz2
Demos for Fred's parser module
Diffstat (limited to 'Demo/parser/test_parser.py')
-rwxr-xr-xDemo/parser/test_parser.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/Demo/parser/test_parser.py b/Demo/parser/test_parser.py
new file mode 100755
index 0000000..e114d76
--- /dev/null
+++ b/Demo/parser/test_parser.py
@@ -0,0 +1,50 @@
+#! /projects/python/Python-1.4b2/python
+# (Force the script to use the latest build.)
+#
+# test_parser.py
+
+import parser, traceback
+
+_numFailed = 0
+
+def testChunk(t, fileName):
+ global _numFailed
+ print '----', fileName,
+ try:
+ ast = parser.suite(t)
+ tup = parser.ast2tuple(ast)
+ # this discards the first AST; a huge memory savings when running
+ # against a large source file like Tkinter.py.
+ ast = None
+ new = parser.tuple2ast(tup)
+ except parser.ParserError, err:
+ print
+ print 'parser module raised exception on input file', fileName + ':'
+ traceback.print_exc()
+ _numFailed = _numFailed + 1
+ else:
+ if tup != parser.ast2tuple(new):
+ print
+ print 'parser module failed on input file', fileName
+ _numFailed = _numFailed + 1
+ else:
+ print 'o.k.'
+
+def testFile(fileName):
+ t = open(fileName).read()
+ testChunk(t, fileName)
+
+def test():
+ import sys
+ args = sys.argv[1:]
+ if not args:
+ import glob
+ args = glob.glob("*.py")
+ map(testFile, args)
+ sys.exit(_numFailed != 0)
+
+if __name__ == '__main__':
+ test()
+
+#
+# end of file