Skip to content

Commit

Permalink
comments
Browse files Browse the repository at this point in the history
  • Loading branch information
AmauriPC committed Nov 24, 2022
1 parent 120aa6d commit 82219e1
Show file tree
Hide file tree
Showing 15 changed files with 241 additions and 162 deletions.
6 changes: 2 additions & 4 deletions Class.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
class Class:
#clase para objeto de clase
class Class:
def __init__(self, functionsTable, varsTable, variablesCount):
self.functionsTable = functionsTable
self.varsTable = varsTable
self.variablesCount = variablesCount



7 changes: 4 additions & 3 deletions ClassesTable.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
#tabla de clases
from Error import Error
from Class import Class

class ClassesTable:
def __init__(self):
self.table = {}
self.tempGlobalVars = None

#añadir a la tabla de clases
def add(self,name,functionsTable,varsTable):
variablesCount = [0,0,0,0,0,0,0,0]
for func in functionsTable.table:
variablesCount = [sum(x) for x in zip(variablesCount, functionsTable.table[func].variablesCount)]

currentClass = Class(functionsTable,varsTable,variablesCount)
if name in self.table:
return Error("Class already declared")
else:
self.table[name] = currentClass
return None

def search(self,name):
if name in self.table:
return self.table[name], None
Expand Down
1 change: 1 addition & 0 deletions Function.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#clase de objeto de funcion
from VarsTable import VarsTable

class Function:
Expand Down
5 changes: 3 additions & 2 deletions FunctionsTable.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
#tabla de funciones
from Function import Function
from Error import Error
from VarsTable import VarsTable

class FunctionsTable:
def __init__(self):
self.table = {}

#añadir funcion si es que aun no existe en la tabla con sus cantidad de temporales y variables necesarias para su llamada a memoria
def add(self,name,type,parameters,varsTable,quadrupleStart, tempTable=[]):
if name in self.table:
print(f"Function {name} already declared")
exit()

# I,F,C,B
variablesCount = [0,0,0,0]
for var in varsTable.table:
Expand Down
17 changes: 10 additions & 7 deletions MemoryManager.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#Memory manager es donde guardamos una pila de memorias y donde podemos crear una memoria apartir de VirtualMemory
from VirtualMemory import VirtualMemory

#se inicia una memoria global solo una ya que solo puede existir una al igual que de constantes
#una pila de memorias locales ya que puede ir a "dormir" alguna de ellas en el transcurso del programa
class MemoryManager():
def __init__(self):
self.global_memory = None
Expand All @@ -13,22 +15,23 @@ def __init__(self):




#aqui es donde creamos una memoria global
def initGlobalMemory(self, size, scope):
self.global_memory = VirtualMemory(size, scope)

#aqui es donde creamos una memoria de constantes
def initConstantsMemory(self, size, scope):
self.constants_memory = VirtualMemory(size, scope)

#aqui es donde creamos una memoria local y como podemos tener varias, se hace un push a la pila de memorias locales
def initLocalMemory(self, size, scope):
self.local_memories.append(VirtualMemory(size, scope))




#una vez finalizada su uso se saca de la pila, se destruye esa memoria ya que no podemos tener 2 funciones corriendo a la vez
def destroyLocalMemory(self):
self.local_memories.pop()

#con la direccion de memoria como uno de los parametros y el valor que se añade, dependiendo del rango se agrega en la memoria
#global,local,constantes o pointers
def add(self, address, value):
address = int(address)
if address>= self.global_range[0] and address <= self.global_range[1]:
Expand All @@ -47,7 +50,7 @@ def add(self, address, value):
self.local_memories[-1].add(address, value)



#al hacer get se hace get del valor dependiendo igualmente del rango es a donde va a buscar
def get(self, address):
address = int(address)

Expand Down
3 changes: 2 additions & 1 deletion Parameter.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#objeto parametro
class Parameter:
def __init__(self, type, id):
self.type = type
self.id = id
self.id = id
3 changes: 2 additions & 1 deletion Program.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#clase programa que programa tiene tabla de funciones y las funciones a su vez tienen tablas de variables
class Program:
def __init__(self, classesTable, varsTable, functionsTable):
self.classesTable = classesTable
Expand All @@ -8,7 +9,7 @@ def __init__(self, classesTable, varsTable, functionsTable):
for func in functionsTable.table:
self.variablesCount = [sum(x) for x in zip(self.variablesCount, functionsTable.table[func].variablesCount)]

# for var in varsTable =
# for var in varsTable =

def toString(self):
print("---------- Program ----------")
Expand Down
Loading

0 comments on commit 82219e1

Please sign in to comment.