From d7a687909e17c9f58a687ffcef2df5922763fbf1 Mon Sep 17 00:00:00 2001 From: Julian Hammer Date: Fri, 5 Mar 2021 18:07:36 +0100 Subject: [PATCH] passing parsing errors to the outside --- osaca/osaca.py | 5 ++--- osaca/parser/parser_AArch64.py | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/osaca/osaca.py b/osaca/osaca.py index 89a57e0..173b680 100755 --- a/osaca/osaca.py +++ b/osaca/osaca.py @@ -268,7 +268,7 @@ def inspect(args, output_file=sys.stdout): parser = get_asm_parser(arch) try: parsed_code = parser.parse_file(code) - except: + except Exception as e: # probably the wrong parser based on heuristic if args.arch is None: # change ISA and try again @@ -277,8 +277,7 @@ def inspect(args, output_file=sys.stdout): parser = get_asm_parser(arch) parsed_code = parser.parse_file(code) else: - traceback.print_exc(file=sys.stderr) - sys.exit(1) + raise e # Reduce to marked kernel or chosen section and add semantics if args.lines: diff --git a/osaca/parser/parser_AArch64.py b/osaca/parser/parser_AArch64.py index dfe5018..d1a483b 100755 --- a/osaca/parser/parser_AArch64.py +++ b/osaca/parser/parser_AArch64.py @@ -290,12 +290,10 @@ class ParserAArch64(BaseParser): if result is None: try: result = self.parse_instruction(line) - except (pp.ParseException, KeyError): - print( - '\n\n*-*-*-*-*-*-*-*-*-*-\n{}: {}\n*-*-*-*-*-*-*-*-*-*-\n\n'.format( - line_number, line - ) - ) + except (pp.ParseException, KeyError) as e: + raise e + raise ValueError( + 'Unable to parse {!r} on line {}'.format(line, line_number)) from e instruction_form[self.INSTRUCTION_ID] = result[self.INSTRUCTION_ID] instruction_form[self.OPERANDS_ID] = result[self.OPERANDS_ID] instruction_form[self.COMMENT_ID] = result[self.COMMENT_ID]