diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-11-16 20:45:03 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-11-16 20:45:03 -0600 |
commit | 4b562e5608bde5b2a25be62cd2013683b1216bb1 (patch) | |
tree | ce9ee30f936faed3c3b9091581df5a1953e4fa22 /compilador/lexer.py | |
parent | d810c8779b6417dcf418d9837bb5b04376eaa7f9 (diff) | |
download | javanol-4b562e5608bde5b2a25be62cd2013683b1216bb1.tar.gz javanol-4b562e5608bde5b2a25be62cd2013683b1216bb1.tar.bz2 javanol-4b562e5608bde5b2a25be62cd2013683b1216bb1.zip |
Se mejora la impresión de errores
Diffstat (limited to 'compilador/lexer.py')
-rw-r--r-- | compilador/lexer.py | 9 |
1 files changed, 5 insertions, 4 deletions
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 |