aboutsummaryrefslogtreecommitdiff
path: root/compilador/errors.py
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-11-25 12:11:08 -0600
committerIván Ávalos <avalos@disroot.org>2022-11-25 12:11:08 -0600
commiteb4a3019bc0251e5b2b8229679e3c65d61d55336 (patch)
treef6b2a89dd35374272bd671933bfe87da4a587215 /compilador/errors.py
parent6b4e9a4e95eb511c194200e38ee323091dc5d7d2 (diff)
downloadjavanol-eb4a3019bc0251e5b2b8229679e3c65d61d55336.tar.gz
javanol-eb4a3019bc0251e5b2b8229679e3c65d61d55336.tar.bz2
javanol-eb4a3019bc0251e5b2b8229679e3c65d61d55336.zip
Buen progreso, pero se cicla
Diffstat (limited to 'compilador/errors.py')
-rw-r--r--compilador/errors.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/compilador/errors.py b/compilador/errors.py
index 87c925e..5a4e7a2 100644
--- a/compilador/errors.py
+++ b/compilador/errors.py
@@ -15,9 +15,17 @@ class Error:
'S_ESPERA_PC': 'Se esperaba `;`',
}
- def __init__(self, error, numlinea):
- print("Error en línea %d: %s" % (numlinea, self.errors[error]), file=sys.stderr)
+ def __init__(self, msg: str = None):
+ self.message = msg
- def __init__(self, got: Token, expects: List[Token], numlinea = int):
+ @classmethod
+ def lex(self, error, numlinea: int):
+ return Error("Error en línea %d: %s" % (numlinea, self.errors[error]))
+
+ @classmethod
+ def syntax(self, got: Token, expects: List[Token], numlinea: int):
+ error = Error()
strexp = ', '.join(['`%s\'' % e.value for e in expects])
- self.message = "Error en la línea %d, se encontró `%s', pero se esperaba %s" % (numlinea, got.value, strexp)
+ error.message = ("Error en la línea %d: se encontró `%s', pero se esperaba %s" %
+ (numlinea, got.value, strexp))
+ return error