don't exit on first sytnax error.

This commit is contained in:
Kelvin Sherlock 2019-09-01 16:45:39 -04:00
parent a0dfbd1291
commit b602a82cc6

View File

@ -165,6 +165,7 @@ def read_data(f, name):
data = {}
ln = 0
errors = 0
for line in f:
ln = ln + 1
line = line.strip()
@ -172,9 +173,11 @@ def read_data(f, name):
if line.startswith("#"): continue
if line.startswith("//"): continue
try:
m = re.match(r'^"([^"]*)"\s*:\s*(\d+|0x[A-Fa-f0-9]+)$', line)
if not m:
err = "{}:{}: Bad data: {}".format(name,ln,line)
err = "Syntax error: {}".format(line)
raise Exception(err)
k = orig_k = m[1]
@ -188,21 +191,27 @@ def read_data(f, name):
v = int(tmp, base)
if v > 65535:
err = "{}:{} Value too large: {}".format(name, ln, v)
err = "Value too large: {}".format(v)
raise Exception(err)
if flag_l:
if v > 255 or len_k > 255:
err = "{}:{} Value too large: {}".format(name, ln, v)
err = "Value too large: {}".format(v)
raise Exception(err)
v = (v << 8) + len_k
if k in data:
err = "{}:{}: Duplicate string: {}".format(name,ln,orig_k)
err = "Duplicate string: {}".format(orig_k)
raise Exception(err)
data[k] = v
except Exception as e:
errors = errors + 1
print("{}:{}".format(name, ln), e, file=sys.stderr, flush=True)
if errors: sys.exit(1)
return data
def read_stdin():
@ -309,8 +318,4 @@ def main():
sys.exit(0)
try:
main()
except Exception as ex:
print("string16: ", ex, file=sys.stderr, flush=True)
sys.exit(1)
main()