示例#1
0
def p_instruccion_imprimir(t):
    'imprimir_instr     : IMPRIMIR PARIZQ tipo_var PARDER PTCOMA'
    op = Operacion()
    op.Indentficador(t[3], t.slice[1].lineno, find_column(t.slice[2]))
    op.linea = t.slice[1].lineno
    op.columna = find_column(t.slice[1])
    t[0] = Imprimir(op, t.slice[1].lineno, find_column(t.slice[1]))
示例#2
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 == 'CADENA2'):
        op.Primitivo(
            Primitivo("\"" + str(t[1]) + "\"", t.slice[1].lineno,
                      find_column(t.slice[1])))
    elif (t.slice[1].type == 'CADENA'):
        op.Primitivo(
            Primitivo("'" + str(t[1]) + "'", t.slice[1].lineno,
                      find_column(t.slice[1])))
    elif (t.slice[1].type == 'DECIMAL'):
        op.Primitivo(
            Primitivo(float(t[1]), t.slice[1].lineno, find_column(t.slice[1])))

    elif (t.slice[1].type == 'ENTERO'):
        op.Primitivo(
            Primitivo(int(t[1]), t.slice[1].lineno, find_column(t.slice[1])))

    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]))
        op.linea = t.slice[1].lineno
        op.columna = find_column(t.slice[1])

    elif (t.slice[1].type == 'acceso_lista'):
        op.linea = t.lexer.lineno
        op.columna = 1
        op.AccesoLista(t[1], t.lexer.lineno, 1)

    t[0] = op
示例#3
0
def p_instruccion_imprimir_cadena(t):
    '''imprimir_instr     : IMPRIMIR PARIZQ CADENA  PARDER PTCOMA
                          | IMPRIMIR PARIZQ CADENA2 PARDER PTCOMA'''
    op = Operacion()
    if (t.slice[3].type == 'CADENA2'):
        op.Primitivo(Primitivo("\"" + t[3] + "\"", t.slice[1].lineno, 0))
    else:
        op.Primitivo(Primitivo("'" + t[3] + "'", t.slice[1].lineno, 0))
    op.linea = t.slice[1].lineno
    op.columna = find_column(t.slice[1])
    t[0] = Imprimir(op, t.slice[1].lineno, find_column(t.slice[1]))