From 881ae40f989f649926a876a54c9a096c03cf9009 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Fri, 25 Nov 2022 23:14:48 -0600 Subject: El parser ahora serializa el AST en un archivo --- compilador/main.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'compilador/main.py') diff --git a/compilador/main.py b/compilador/main.py index d3f7444..d419286 100644 --- a/compilador/main.py +++ b/compilador/main.py @@ -27,17 +27,18 @@ class Main: input_file = None output_file = None output_table = False + output_ast = False step = None def print_help (self, arg0): - print("Uso: % s -i entrada.es -o salida.es [-t]" % arg0) + print("Uso: % s -i entrada.es -o salida.es [-t] [-a]" % arg0) print(" % s -i entrada.es -o salida.es [-l|-p|-s]" % arg0) print(" % s -h" % arg0) def main(self, argv): try: - opts, args = getopt.getopt(argv[1:], "hi:o:lpst", [ - "input=", "output=", "lex", "parse", "semantic", "table" + opts, args = getopt.getopt(argv[1:], "hi:o:lpsta", [ + "input=", "output=", "lex", "parse", "semantic", "table", "ast" ]) except getopt.GetoptError as err: print(err) @@ -53,6 +54,8 @@ class Main: self.output_file = a elif o in ("-t", "--table"): self.output_table = True + elif o in ("-a", "--ast"): + self.output_ast = True elif o in ("-l", "--lex"): self.step = Step.LEXICO elif o in ("-p", "--parse"): @@ -64,7 +67,9 @@ class Main: if self.input_file and self.output_file: table_file = self.input_file + '.tab' + ast_file = self.input_file + '.ast' delete_tab = not self.step and not self.output_table and not os.path.exists(table_file) + delete_ast = not self.step and not self.output_ast and not os.path.exists(ast_file) try: if self.step == Step.LEXICO: sys.exit(Lexer(self.input_file).inicio()) @@ -81,9 +86,10 @@ class Main: except Exception as e: traceback.print_exception(type(e), e, e.__traceback__) sys.exit(1) - # Borrar tabla de símbolos if delete_tab: os.remove(table_file) + if delete_ast: + os.remove(ast_file) else: self.print_help(argv[0]) sys.exit(2) -- cgit v1.2.3