mirror of
https://github.com/python/cpython.git
synced 2025-07-19 17:25:54 +00:00
Demos for Fred's parser module
This commit is contained in:
parent
6dbd190f5e
commit
16d27e3b14
9 changed files with 491 additions and 0 deletions
50
Demo/parser/test_parser.py
Executable file
50
Demo/parser/test_parser.py
Executable file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue