From 4b562e5608bde5b2a25be62cd2013683b1216bb1 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Wed, 16 Nov 2022 20:45:03 -0600 Subject: Se mejora la impresión de errores MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compilador/lexer.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'compilador/lexer.py') diff --git a/compilador/lexer.py b/compilador/lexer.py index ec7d0a4..bc2b14a 100644 --- a/compilador/lexer.py +++ b/compilador/lexer.py @@ -2,6 +2,7 @@ from enum import Enum from tabla import LexToken, TablaLex, tokens from parser import Parser from shared import Control +from errors import Error op_compuestos = ['>=', '<=', '==', '!=', '&&', '||', '++', '--'] op_simples_a = ['=', '+', '-', '&', '|'] # pueden ir al final del op compuesto @@ -52,10 +53,10 @@ class Lexer: for l in self.data.splitlines(): for c in l + "\n": r = self.procesar(c) - if r == 2: return + if r == Control.ERROR: exit(1) while r != Control.SIGUIENTE: r = self.procesar(c) - if r == Control.ERROR: return + if r == Control.ERROR: exit(1) self.numlinea += 1 # Imprimir tabla de símbolos @@ -154,11 +155,11 @@ class Lexer: def procesar_caracter(self, c): if len(self.recol_caracter) > 1: - print ('Error: más de un caracter en una literal de caracter') + Error('L_CAR_LARGO', self.numlinea) return Control.ERROR if c == '\'': if len(self.recol_caracter) == 0: - print ('Error: literal de caracter vacía') + Error('L_CAR_VACIO', self.numlinea) return Control.ERROR self.insertar_tabla('CHAR_LIT', None, self.recol_caracter) self.selector = Selector.NINGUNO -- cgit v1.2.3