Skip to content

Commit ae732c9

Browse files
committed
Write parse errors to stderr
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40500
1 parent e9672ab commit ae732c9

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

parse.py

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ def parse():
4040
f = open(f)
4141
except IOError: pass
4242
except IndexError:
43-
print "No filename provided. Use -h for help"
43+
sys.stderr.write("No filename provided. Use -h for help")
4444
sys.exit(1)
4545

4646
if opts.treebuilder is not None:
4747
try:
4848
treebuilder = __import__("src.treebuilders." + opts.treebuilder,
4949
None,None,"src").TreeBuilder
5050
except ImportError, name:
51-
print "Treebuilder %s not found"%name
51+
sys.stderr.write("Treebuilder %s not found"%name)
5252
raise
5353
except Exception, foo:
5454
import src.treebuilders.simpletree
@@ -78,27 +78,25 @@ def parse():
7878
t0 = time.time()
7979
document = p.parse(f)
8080
t1 = time.time()
81-
if opts.xml:
82-
print document.toxml('utf-8')
83-
else:
84-
print p.tree.testSerializer(document).encode("utf-8")
85-
if opts.error:
86-
print "\nParse errors:\n" + "\n".join(p.errors)
81+
printOutput(p, document, opts)
8782
t2 = time.time()
88-
print "\n\nRun took: %fs (plus %fs to print the output)"%(t1-t0, t2-t1)
83+
sys.stdout.write("\n\nRun took: %fs (plus %fs to print the output)"%(t1-t0, t2-t1))
8984
else:
9085
document = p.parse(f)
91-
if opts.xml:
92-
print document.toxml("utf-8")
93-
elif opts.hilite:
94-
print document.hilite("utf-8")
95-
else:
96-
print p.tree.testSerializer(document).encode("utf-8")
97-
if opts.error:
98-
errList=[]
99-
for pos, message in p.errors:
100-
errList.append("Line %i Col %i"%pos + " " + message)
101-
print "\nParse errors:\n" + "\n".join(errList)
86+
printOutput(p, document, opts)
87+
88+
def printOutput(parser, document, opts):
89+
if opts.xml:
90+
sys.stdout.write(document.toxml("utf-8"))
91+
elif opts.hilite:
92+
sys.stdout.write(document.hilite("utf-8"))
93+
else:
94+
sys.stdout.write(parser.tree.testSerializer(document).encode("utf-8"))
95+
if opts.error:
96+
errList=[]
97+
for pos, message in parser.errors:
98+
errList.append("Line %i Col %i"%pos + " " + message)
99+
sys.stderr.write("\nParse errors:\n" + "\n".join(errList))
102100

103101
def getOptParser():
104102
parser = OptionParser(usage=__doc__)

0 commit comments

Comments
 (0)