aboutsummaryrefslogtreecommitdiff
path: root/compilador/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'compilador/main.py')
-rw-r--r--compilador/main.py14
1 files changed, 10 insertions, 4 deletions
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)