Exemple #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]))
    lista = func(1,None).copy()
    gramatical = G.ValorAscendente('imprimir_instr ->IMPRIMIR PARIZQ tipo_var  PARDER PTCOMA','imprimir_instr.instr = Print(tipo_var.val);',lista)
    func(0,gramatical)
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))
    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]))
    lista = func(1,None).copy()
    gramatical = G.ValorAscendente('imprimir_instr ->IMPRIMIR PARIZQ CADENA  PARDER PTCOMA','imprimir_instr.instr = Print(CADENA);',lista)
    func(0,gramatical)
Exemple #3
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]))
        op.linea = t.slice[1].lineno
        op.columna = 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.linea = t.lexer.lineno
        op.columna = 1
        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