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]))
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
def p_asingacion_array(t): 'asignacion : tipo_var IGUAL ARRAY PARIZQ PARDER PTCOMA ' op = Operacion() op.Primitivo(Primitivo("array()", 0, 0)) t[0] = Asignacion(t[1], op, t.slice[2].lineno, 1, False)