def p_id_struct_acceso(t): 'id_struct : IDENTIFICADOR accesos' reporte_gramatical.append([ 'id_struct -> IDENTIFICADOR accesos', 't[0] = Declaracion(TIPO_DATO.ARREGLO,t[1],t[2],None,t.lineno(1),find_column(entrada, t.slice[1]))' ]) t[0] = Declaracion(TIPO_DATO.ARREGLO, t[1], t[2], None, t.lineno(1), find_column(entrada, t.slice[1]))
def p_asignacion_dec_accesos_expresion(t): 'asignacion_dec : IDENTIFICADOR accesos ASIG expresion' reporte_gramatical.append([ 'asignacion_dec -> IDENTIFICADOR sig_asig expresion', 't[0] = Declaracion(TIPO_DATO.ARREGLO,t[1],t[2],t[4],t.lineno(1),find_column(entrada, t.slice[1]))' ]) t[0] = Declaracion(TIPO_DATO.ARREGLO, t[1], t[2], t[4], t.lineno(1), find_column(entrada, t.slice[1]))
def p_asignacion_dec_accesos(t): 'asignacion_dec : IDENTIFICADOR accesos' reporte_gramatical.append([ 'asignacion_dec -> IDENTIFICADOR accesos', 't[0] = Declaracion(TIPO_DATO.DECIMAL,t[1],t[2],None,t.lineno(1),find_column(entrada, t.slice[1]))' ]) t[0] = Declaracion(TIPO_DATO.ARREGLO, t[1], t[2], None, t.lineno(1), find_column(entrada, t.slice[1]))
def p_id_struct(t): 'id_struct : IDENTIFICADOR' reporte_gramatical.append([ 'id_struct -> IDENTIFICADOR', 't[0] = Declaracion(TIPO_DATO.DECIMAL,t[1],None,None,t.lineno(1),find_column(entrada, t.slice[1]))' ]) global temporal_tipo temporal_tipo = t[-1] if temporal_tipo == '' else temporal_tipo if temporal_tipo == 'int': t[0] = Declaracion(TIPO_DATO.ENTERO, t[1], None, None, t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'char': t[0] = Declaracion(TIPO_DATO.CARACTER, t[1], None, None, t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'double': t[0] = Declaracion(TIPO_DATO.DECIMAL, t[1], None, None, t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'float': t[0] = Declaracion(TIPO_DATO.DECIMAL, t[1], None, None, t.lineno(1), find_column(entrada, t.slice[1]))
def p_asignacion_dec_expresion(t): 'asignacion_dec : IDENTIFICADOR ASIG expresion' reporte_gramatical.append([ 'asignacion_dec -> IDENTIFICADOR sig_asig expresion', 't[0] = Declaracion(TIPO_DATO.ENTERO,t[1],None,t[3],t.lineno(1),find_column(entrada, t.slice[1]))' ]) global temporal_tipo temporal_tipo = t[-1] if temporal_tipo == '' else temporal_tipo if temporal_tipo == 'int': t[0] = Declaracion(TIPO_DATO.ENTERO, t[1], None, t[3], t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'char': t[0] = Declaracion(TIPO_DATO.CARACTER, t[1], None, t[3], t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'double': t[0] = Declaracion(TIPO_DATO.DECIMAL, t[1], None, t[3], t.lineno(1), find_column(entrada, t.slice[1])) elif temporal_tipo == 'float': t[0] = Declaracion(TIPO_DATO.DECIMAL, t[1], None, t[3], t.lineno(1), find_column(entrada, t.slice[1]))
def p_parametro(t): 'parametro : tipo IDENTIFICADOR' reporte_gramatical.append([ 'parametro -> tipo IDENTIFICADOR', 't[0] = Declaracion(tipo,t[2],None,None,t.lineno(2),find_column(entrada, t.slice[2]))' ]) tipo = '' if t[1] == 'int': tipo = TIPO_DATO.ENTERO elif t[1] == 'double' or t[1] == 'float': tipo = TIPO_DATO.DECIMAL elif t[1] == 'char': tipo = TIPO_DATO.CARACTER t[0] = Declaracion(tipo, t[2], None, None, t.lineno(2), find_column(entrada, t.slice[2]), True)