Skip to content

Commit 205f12e

Browse files
committed
Show correct lineno on error; get rid of eopen()
1 parent 8eadf1c commit 205f12e

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

Tools/cases_generator/generate_cases.py

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,21 @@
2121
arg_parser.add_argument("-q", "--quiet", action="store_true")
2222

2323

24-
def eopen(filename: str, mode: str = "r") -> TextIO:
25-
if filename == "-":
26-
if "r" in mode:
27-
return sys.stdin
28-
else:
29-
return sys.stdout
30-
return cast(TextIO, open(filename, mode))
31-
32-
3324
def parse_cases(
3425
src: str, filename: str|None = None
3526
) -> tuple[list[InstDef], list[parser.Super], list[parser.Family]]:
3627
psr = parser.Parser(src, filename=filename)
28+
# Skip until BEGIN marker
29+
while tkn := psr.next(raw=True):
30+
if tkn.text == "// BEGIN BYTECODES //":
31+
break
32+
else:
33+
raise psr.make_syntax_error(f"Couldn't find {text!r} in {psr.filename}")
3734
instrs: list[InstDef] = []
3835
supers: list[parser.Super] = []
3936
families: list[parser.Family] = []
40-
while not psr.eof():
37+
# Parse until END marker
38+
while not psr.eof() and psr.peek(raw=True).text != "// END BYTECODES //":
4139
if inst := psr.inst_def():
4240
instrs.append(inst)
4341
elif sup := psr.super_def():
@@ -197,11 +195,8 @@ def write_cases(
197195

198196
def main():
199197
args = arg_parser.parse_args()
200-
with eopen(args.input) as f:
201-
srclines = f.read().splitlines()
202-
begin = srclines.index("// BEGIN BYTECODES //")
203-
end = srclines.index("// END BYTECODES //")
204-
src = "\n".join(srclines[begin+1 : end])
198+
with open(args.input) as f:
199+
src = f.read()
205200
instrs, supers, families = parse_cases(src, filename=args.input)
206201
ninstrs = nsupers = nfamilies = 0
207202
if not args.quiet:
@@ -213,7 +208,7 @@ def main():
213208
f"and {nfamilies} families from {args.input}",
214209
file=sys.stderr,
215210
)
216-
with eopen(args.output, "w") as f:
211+
with open(args.output, "w") as f:
217212
effects_table = write_cases(f, instrs, supers, families)
218213
if not args.quiet:
219214
print(

0 commit comments

Comments
 (0)