diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-11-22 09:02:46 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-11-22 09:02:46 -0600 |
commit | 032fe000cfc2b36dc9c1f00c734fada41133403e (patch) | |
tree | cc489901762fe26dbe1253f7a4f2dca55956f89a /compilador/parser.py | |
parent | 86c099629fad439402a51f031e3cb5507bc92278 (diff) | |
download | javanol-032fe000cfc2b36dc9c1f00c734fada41133403e.tar.gz javanol-032fe000cfc2b36dc9c1f00c734fada41133403e.tar.bz2 javanol-032fe000cfc2b36dc9c1f00c734fada41133403e.zip |
Se implementa semáforo (fases de compilación)
Diffstat (limited to 'compilador/parser.py')
-rw-r--r-- | compilador/parser.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compilador/parser.py b/compilador/parser.py index 6c6d223..951b517 100644 --- a/compilador/parser.py +++ b/compilador/parser.py @@ -23,24 +23,26 @@ class Selector(Enum): FUNCION = 7 class Parser: - def __init__(self, tabla): + def __init__(self, input_file: str): self.arbol = Arbol() self.pila_selector = [ [Selector.NINGUNO, []] # selector, recolector ] self.pila_arbol = [self.arbol.raiz] self.expresion = None - self.tabla = tabla + self.tabla = TablaLex() + self.tabla.importar(input_file + '.tab') def inicio (self): for t in self.tabla.tabla: r = self.procesar(t) - if r == Control.ERROR: exit(1) + if r == Control.ERROR: return 1 while r != Control.SIGUIENTE: r = self.procesar(t) - if r == Control.ERROR: exit(1) + if r == Control.ERROR: return 1 print(str(self.arbol)) + return 0 def procesar (self, t: LexToken): if len(self.pila_selector) == 0: |