Ejemplo n.º 1
0
#Build lexer
import ply.lex as lex
lexer = lex.lex()

# Importa las clases necesarias para el compilador
from register import Register
from quadruple_register import QuadrupleRegister
from op_codes import OpCodes
from virtual_machine import VirtualMachine
from logger import Logger

# Inicializacion de clases
register = Register(lexer)
quadruple_reg = QuadrupleRegister(lexer)
register.set_address_handler(quadruple_reg.address_handler)
main_goto_quadruple = 0
log = Logger(False)


# Reglas de parsing

# Sintaxis principal de todo el programa
def p_programa(p):
    'programa : dec_programa progvar main_goto progfunc main_block'

    log.write("/////////////Programa terminado con exito///////////////")
    log.write(" ######### Register table  ###########")
    register.print_table()
    log.write(" ####### Debug Quadruples ############")
    quadruple_reg.print_debug_quadruples()