Exemple #1
0
def p_expresion_primitiva(t):
    '''primitiva : ENTERO
                 | DECIMAL
                 | CADENA
                 | CADENA2
                 | TEMP 
                 | PARAM
                 | RET
                 | PILA 
                 | RA
                 | PUNTERO 
                 | acceso_lista'''
    op = Operacion()
    if (t.slice[1].type == 'CADENA' or t.slice[1].type == 'CADENA2'):
        op.Primitivo(
            Primitivo(str(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> CADENA',
                                       'primitiva.val = str(CADENA);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'DECIMAL'):
        op.Primitivo(
            Primitivo(float(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> FLOAT',
                                       'primitiva.val = float(FLOAT);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'ENTERO'):
        op.Primitivo(
            Primitivo(int(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> ENTERO',
                                       'primitiva.val = int(ENTERO);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'TEMP') or (t.slice[1].type == 'PARAM') or (
            t.slice[1].type == 'RET') or (t.slice[1].type == 'PILA') or (
                t.slice[1].type == 'RA') or (t.slice[1].type == 'PUNTERO'):
        op.Indentficador(t[1], t.slice[1].lineno, find_column(t.slice[1]))
        gramatical = G.ValorAscendente('primitiva -> tipo_var',
                                       'primitiva.val = tipo_var.val;', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'acceso_lista'):
        op.AccesoLista(t[1], t.lexer.lineno, 1)
        lista = func(1, None).copy()
        gramatical = G.ValorAscendente('primitiva ->  acceso_lista',
                                       'primitiva.val = acceso_lista.val;',
                                       lista)
        func(0, gramatical)
    t[0] = op
Exemple #2
0
def p_instruccion_imprimir_cadena(t):
    '''imprimir_instr     : IMPRIMIR PARIZQ CADENA  PARDER PTCOMA
                          | IMPRIMIR PARIZQ CADENA2 PARDER PTCOMA'''
    op = Operacion()
    op.Primitivo(Primitivo(t[3], t.slice[1].lineno, 0))
    t[0] = Imprimir(op, t.slice[1].lineno, find_column(t.slice[1]))
    lista = func(1, None).copy()
    gramatical = G.ValorAscendente(
        'imprimir_instr ->IMPRIMIR PARIZQ CADENA  PARDER PTCOMA',
        'imprimir_instr.instr = Print(CADENA);', lista)
    func(0, gramatical)