Ejemplo n.º 1
0
        public override void Declarar(EscritorC escritor)
        {
            string declaracion = Definicion.ObtenerNombreDelTipoParaC() + " ";

            declaracion += "*" + Definicion.Nombre + ";";
            escritor.WriteLine(declaracion);
        }
Ejemplo n.º 2
0
 public void LeerDefinicion()
 {
     DefinicionFuncion.VerificarDefinicion( archivoDefinicion );
     Definicion = DefinicionFuncion.Leer( archivoDefinicion );
     Definicion.VerificarUnSoloTipo();
     Definicion.VerificarValorOReferencia(); //Si es matriz, lista o vector, el tipoDeAcceso lo establece a "R"
 }
Ejemplo n.º 3
0
        public override void Instanciar(EscritorC escritor)
        {
            string instanciacion = string.Empty;

            switch (Definicion.Tipo)
            {
            case Tipo.UInt8:
            case Tipo.UInt16:
            case Tipo.UInt32:
            case Tipo.UInt64:
            case Tipo.Int8:
            case Tipo.Int16:
            case Tipo.Int32:
            case Tipo.Int64:
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    instanciacion = "*";
                }
                instanciacion += Definicion.Nombre + " = " + Valor + ";";
                break;

            case Tipo.Float32:
            case Tipo.Float64:
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    instanciacion = "*";
                }
                instanciacion += Definicion.Nombre + " = 0;\n";
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    instanciacion += "*";
                }
                instanciacion += Definicion.Nombre + " += " + Valor + ";";
                break;

            case Tipo.CadenaPascal:
            case Tipo.CadenaC:
                instanciacion = Definicion.ObtenerNombreDelTipoParaC() + " " + Definicion.Nombre + "[] = \"" + Valor +
                                "\";";
                break;

            case Tipo.Booleano:
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    instanciacion = "*";
                }
                instanciacion += Definicion.Nombre + " = " + (UltimoElementoUno()? "true;" : "false;");
                break;

            case Tipo.Char:
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    instanciacion = "*";
                }
                instanciacion += Definicion.Nombre + " = '" + Valor + "';";
                break;
            }
            escritor.WriteLine(instanciacion);
        }
Ejemplo n.º 4
0
        public ActionResult Crear(Definicion definicion)
        {
            if (ModelState.IsValid)
            {
                repositorio.AgregarPalabraDefinicion(definicion);
                return(RedirectToAction("Index"));
            }

            return(View(definicion));
        }
Ejemplo n.º 5
0
        public void Desdifucificacion(double length = 2)
        {
            Definicion metodoDesdifusificacion = MetodosDesdifusificacion.Metodos[MetodoD];
            double     resultado;

            foreach (var item in Variables.Where(x => x.Tipo == TipoVariable.Salida))
            {
                resultado = metodoDesdifusificacion(item, length);
                SalidaDef[item.Nombre] = resultado;
            }
        }
Ejemplo n.º 6
0
        public override void PedirMemoria(EscritorC escritor)
        {
            string pedido;
            string varFila = Definicion.Nombre + "Fila";

            pedido = Definicion.Nombre + " = " + "malloc2( sizeof(" + Definicion.ObtenerNombreDelTipoParaC() + "*)*" +
                     cantFilas + ", true );";
            escritor.WriteLine(pedido);
            escritor.WriteLine("int " + varFila + ";");
            escritor.For(varFila + " = 0", varFila + " < " + cantFilas, varFila + "++");
            escritor.WriteLine(Definicion.Nombre + "[" + varFila + "] = malloc2( sizeof(" +
                               Definicion.ObtenerNombreDelTipoParaC() + ")*" + cantColumnas + ", true);");
            escritor.FinFor();
        }
Ejemplo n.º 7
0
        public override void Declarar(EscritorC escritor)
        {
            string declaracion = string.Empty;

            declaracion = Definicion.ObtenerNombreDelTipoParaC() + " ";
            if (Definicion.Tipo != Tipo.CadenaC && Definicion.Tipo != Tipo.CadenaPascal)
            {
                if (Definicion.TipoDeAcceso == ValorOReferencia.R)
                {
                    declaracion += "*";
                }
                declaracion += Definicion.Nombre + ";";
                escritor.WriteLine(declaracion);
            }
        }
Ejemplo n.º 8
0
        private void ConstruirDefinicionTabla(String[] sColumnsPrimary)
        {
            defTabla = new Definicion();
            FilaDefinicion fd = null;

            for (int i = 0; i < dtTabla.Rows.Count; i++)
            {
                fd             = new FilaDefinicion();
                fd.NombreCampo = dtTabla.Rows[i]["COLUMN_NAME"].ToString();
                fd.TipoBD      = dtTabla.Rows[i]["DATA_TYPE"].ToString().Substring(0, 1).ToUpper() + dtTabla.Rows[i]["DATA_TYPE"].ToString().Substring(1, dtTabla.Rows[i]["DATA_TYPE"].ToString().Length - 1).ToLower();
                if ((fd.TipoBD.ToLower() == "numeric" || fd.TipoBD.ToLower() == "decimal") || ((dtTabla.Rows[i]["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value && Convert.ToDouble(dtTabla.Rows[i]["CHARACTER_MAXIMUM_LENGTH"]) > 0) && (fd.TipoBD.ToLower() != "bit" && fd.TipoBD.ToLower() != "int" && fd.TipoBD.ToLower() != "datetime")))
                {
                    fd.Tamano = Convert.ToInt32(dtTabla.Rows[i]["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value && dtTabla.Rows[i]["CHARACTER_MAXIMUM_LENGTH"].ToString() != "0" ? dtTabla.Rows[i]["CHARACTER_MAXIMUM_LENGTH"] : (dtTabla.Rows[i]["NUMERIC_PRECISION"] != DBNull.Value ? dtTabla.Rows[i]["NUMERIC_PRECISION"] : -1));
                    fd.Escala = Convert.ToInt32(dtTabla.Rows[i]["NUMERIC_SCALE"] != DBNull.Value && dtTabla.Rows[i]["NUMERIC_SCALE"].ToString() != "0" ? dtTabla.Rows[i]["NUMERIC_SCALE"] : -1);
                }
                else
                {
                    fd.Tamano = -1;
                    fd.Escala = -1;
                }
                fd.ClavePrimaria = Convert.ToBoolean(dtTabla.Rows[i]["IS_PRIMARY_KEY"]);
                fd.ClaveForanea  = Convert.ToBoolean(dtTabla.Rows[i]["IS_FOREIGN_KEY"]);
                fd.IsNotNull     = !Convert.ToBoolean(dtTabla.Rows[i]["IS_NULLABLE"]);

                setOpcionesSegunTipoDato(ref fd);

                defTabla.Filas.Add(fd);
            }

            //Si la tabla no tiene primary key definida se establece por defecto la primer columna como primary key
            if (!defTabla.Filas.Exists(pk => pk.ClavePrimaria == true))
            {
                defTabla.Filas.ToArray()[0].ClavePrimaria = true;
            }

            ReferenciaDefinicion rd = null;

            for (int i = 0; i < dtReferencias.Rows.Count; i++)
            {
                rd                     = new ReferenciaDefinicion();
                rd.TablaPadre          = dtReferencias.Rows[i]["parentTable"].ToString();
                rd.ColumnaPadre        = dtReferencias.Rows[i]["parentColumn"].ToString();
                rd.TablaReferenciada   = dtReferencias.Rows[i]["referencedTable"].ToString();
                rd.ColumnaReferenciada = dtReferencias.Rows[i]["referencedColumn"].ToString();

                defTabla.Referencias.Add(rd);
            }
        }
Ejemplo n.º 9
0
 private void EscribirReferenciaExternaDeLaFuncion( EscritorC escritor )
 {
     escritor.WriteLine( "extern " + Definicion.GenerarPrototipo() + ";" );
     escritor.WriteLine("extern long long timer();");
 }
        public ProduccionTipoDatoArchivo() : base(@".\produccionesTipoDeDato.txt")
        {
            Definicion definicionActual = null;
            int        count            = 0;

            foreach (String linea in Lineas)
            {
                count++;
                if (count == Lineas.Length)
                {
                    if (linea.Substring(0, 2) == "->")
                    {
                        if (definicionActual != null)
                        {
                            definicionActual.AddProduccion(new Produccion(linea.Substring(3, (linea.Length - 3))));
                        }
                    }
                    if (definicionActual != null)
                    {
                        Definiciones.Add(definicionActual.GetAsObject());
                        //  MessageBox.Show(definicionActual.ToString());
                        definicionActual = null;
                    }
                }
                else
                {
                    if (linea.Length > 3)
                    {
                        //Se trata de una definicion de una instruccion
                        if (linea.Substring(0, 3) == "-->")
                        {
                            if (definicionActual == null)
                            {
                                definicionActual = new Definicion(linea.Substring(4, (linea.Length - 4)));
                            }
                            else
                            {
                                Definiciones.Add(definicionActual.GetAsObject());
                                //  MessageBox.Show(definicionActual.ToString());
                                definicionActual = null;
                                definicionActual = new Definicion(linea.Substring(4, (linea.Length - 4)));
                            }
                        }
                        //Se trata de una produccion de la definicion
                        else if (linea.Substring(0, 2) == "->")
                        {
                            if (definicionActual != null)
                            {
                                definicionActual.AddProduccion(new Produccion(linea.Substring(3, (linea.Length - 3))));
                            }
                        }
                    }
                }
            }

            Conexion con = Conexion.getInstancia();

            con.EjecutarQuery("DELETE FROM produccionesTipoDeDato;");

            foreach (Definicion d in Definiciones)
            {
                con.EjecutarQuery(d.getQuery("produccionesTipoDeDato"));
            }
        }