changeset 0e78ffeebffd in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=0e78ffeebffd
description:
slicc: better error messages when the python parser fails
diffstat:
1 file changed, 11 insertions(+), 4 deletions(-)
src/mem/slicc/parser/parser.py | 15 +++++++++++----
diffs (39 lines):
diff -r 606cf4e1ade6 -r 0e78ffeebffd src/mem/slicc/parser/parser.py
--- a/src/mem/slicc/parser/parser.py Mon Aug 03 11:06:19 2009 -0700
+++ b/src/mem/slicc/parser/parser.py Tue Aug 04 09:37:27 2009 -0700
@@ -100,8 +100,15 @@
t_ASSIGN = r':='
t_DOT = r'\.'
-class TokenError(Exception): pass
-class ParseError(Exception): pass
+class TokenError(Exception):
+ def __init__(self, msg, t):
+ super(TokenError, self).__init__(msg)
+ self.token = t
+
+class ParseError(Exception):
+ def __init__(self, msg, t):
+ super(ParseError, self).__init__(msg)
+ self.token = t
def t_error(t):
raise TokenError("Illegal character", t)
@@ -157,7 +164,7 @@
p[0] = [ x for x in p[1] if x is not None ]
def p_error(t):
- raise ParseError(t)
+ raise ParseError("Syntax error", t)
def p_empty(p):
"empty :"
@@ -544,7 +551,7 @@
try:
results = yacc.parse(file(filename, 'r').read())
except (TokenError, ParseError), e:
- raise type(e), tuple([filename] + [ i for i in e ])
+ sys.exit("%s: %s:%d" % (e, filename, e.token.lineno))
for result in results:
result.add(hh, cc)
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev