diff options
author | Roland Lutz <rlutz@hedmen.org> | 2017-08-27 22:14:38 +0200 |
---|---|---|
committer | Roland Lutz <rlutz@hedmen.org> | 2017-08-27 22:14:38 +0200 |
commit | 7e4689d3f50b0a8322ec74879202377ef1159d57 (patch) | |
tree | daca220c6ff00c0683b39a5fc5c55622bd20b38c | |
parent | 5cea17ea883f90a59cca4bb929424e5bfc3bf915 (diff) | |
download | icestorm-7e4689d3f50b0a8322ec74879202377ef1159d57.tar.gz icestorm-7e4689d3f50b0a8322ec74879202377ef1159d57.tar.bz2 icestorm-7e4689d3f50b0a8322ec74879202377ef1159d57.zip |
icebox: Give useful error messages for .hlc parsing errors
-rwxr-xr-x | icebox/icebox_hlc2asc.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/icebox/icebox_hlc2asc.py b/icebox/icebox_hlc2asc.py index 54d6722..71211e0 100755 --- a/icebox/icebox_hlc2asc.py +++ b/icebox/icebox_hlc2asc.py @@ -971,20 +971,26 @@ class IOBlock: def main1(path): f = open(path, 'r') stack = [Main()] - for line in f: + for i, line in enumerate(f): fields = line.split('#')[0].split() - if not fields: - pass # empty line - elif fields == ['}']: - stack.pop() - if not stack: - raise ParseError - elif fields[-1] == '{': - stack.append(stack[-1].new_block(fields[:-1])) - else: - stack[-1].read(fields) + try: + if not fields: + pass # empty line + elif fields == ['}']: + stack.pop() + if not stack: + raise ParseError + elif fields[-1] == '{': + stack.append(stack[-1].new_block(fields[:-1])) + else: + stack[-1].read(fields) + except ParseError: + sys.stderr.write("Parse error in line %d:\n" % (i + 1)) + sys.stderr.write(line) + sys.exit(1) if len(stack) != 1: - raise ParseError + sys.stderr.write("Parse error: unexpected end of file") + sys.exit(1) f.close() stack[0].writeout() |