コード例 #1
0
        private void Lablel_ActualizarLinea()
        {
            //Obtenemos índice del primer caracter visible y
            //número de la primera línea visible
            Point pos        = new Point(0, 0);
            int   firstIndex = Panel_Codigo.GetCharIndexFromPosition(pos);
            int   firstLine  = Panel_Codigo.GetLineFromCharIndex(firstIndex);

            //Ahora obtenemos el índice del último carácter visible y
            //el número de la última línea visible.
            pos.X = ClientRectangle.Width;
            pos.Y = ClientRectangle.Height;
            int lastIndex = Panel_Codigo.GetCharIndexFromPosition(pos);
            int lastLine  = Panel_Codigo.GetLineFromCharIndex(lastIndex);

            //esta es la posición del punto del último carácter visible,
            //usaremos su valor Y para calcular el tamaño de la etiqueta
            pos = Panel_Codigo.GetPositionFromCharIndex(lastIndex);

            //finalmente, se renumera etiqueta
            label1.Text = "";
            for (int i = firstLine; i <= lastLine; i++)
            {
                label1.Text += i + 1 + "\n";
            }
        }
コード例 #2
0
        ///////////////////////////////////////////////////////////////////////////////////////////

        #region Metodo_Colocar_Numero_Linea
        private void Panel_Codigo_VScroll(object sender, EventArgs e)
        {
            //move location of numberLabel for amount
            //of pixels caused by scrollbar
            int d = Panel_Codigo.GetPositionFromCharIndex(0).Y %
                    (Panel_Codigo.Font.Height + 1);

            label1.Location = new Point(0, d);

            Lablel_ActualizarLinea();
        }
コード例 #3
0
 public void Archivo_Nuevo()
 {
     try
     {
         //tabControl1.Visible = true;
         Activar();
         Panel_Codigo.Clear();
         dataGridView1.Rows.Clear();
         dataGridView2.Rows.Clear();
         Panel_Codigo.Text = "<!_Nimbus_369_Code_!>\nNimbus_Main()\n[\n]";
     }
     catch (Exception)
     {
         MessageBox.Show("Error al crear archivo");
     }
 }
コード例 #4
0
        ///////////////////////////////////////////////////////////////////////////////////////////

        #region Analisis_Lexico
        public void Lexico()
        {
            Ambito = 0; llave = 0; llaveC = 0;
            LoadData();

            Nimbus_DAL obj_Dal = new Nimbus_DAL();
            Nimbus_DAL obj_temp = new Nimbus_DAL();
            string     Simbol = "hh", Token = "jj";

            char[] delimitador  = { ' ', '\n' }; //   \udddd \xA
            char[] delimitador2 = { '\udddd', '\xA' };

            string Frase = Panel_Codigo.Text;

            string[] Oraciones = Frase.Split(delimitador2);

            foreach (var oracion in Oraciones)
            {
                #region error_Line
                try
                {
                    int linha, palavra;
                    linha        = Panel_Codigo.Find(oracion);
                    palavra      = Panel_Codigo.GetLineFromCharIndex(linha);
                    lineapalabra = palavra + 1;
                }
                catch (Exception)
                {
                    string error = "EL DOCUMENTO NO DEBE TENER SALTOS EN BLANCO";
                    SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
                }
                #endregion

                string ora = oracion;
                //MessageBox.Show(ora);

                string[] Palabras = ora.Split(delimitador);

                foreach (var palabra in Palabras)
                {
                    obj_Dal.SIMBOLO = palabra.Trim();
                    Token           = palabra.Trim();

                    obj_temp = obj_Bll.SEARCH_TOKEN(obj_Dal);
                    Simbol   = obj_temp.SIMBOLO;

                    #region Control de Ambito Apertura
                    if (Token.Equals("["))
                    {
                        llave  = llave + 1;
                        Ambito = llave;
                        //Ambito = Ambito + 1;
                    }
                    #endregion

                    if (Simbol == string.Empty || Simbol == null)
                    {
                        if (Token != string.Empty || Token != null)
                        {
                            bool   vacio  = true;
                            char[] letras = Token.ToCharArray();

                            foreach (var letra in letras)
                            {
                                if (!letra.Equals(" "))
                                {
                                    if (char.IsNumber(letra))
                                    {
                                        if (ValidaEntero(Token))
                                        {
                                            obj_Dal.TIPO_TOKEN = "Digito_Entero";
                                        }
                                        else
                                        {
                                            obj_Dal.TIPO_TOKEN = "Digito_Flotante";
                                        }
                                    }
                                    else if (char.IsPunctuation(letra))
                                    {
                                        obj_Dal.TIPO_TOKEN = "Caracter";
                                    }
                                    else
                                    {
                                        obj_Dal.TIPO_TOKEN = "Definicion_del_Usuario";
                                    }
                                    vacio = false;
                                }
                            }
                            if (vacio == false)
                            {
                                obj_Dal.CODIGO  = Convert.ToString(contador);
                                obj_Dal.SIMBOLO = Token;
                                obj_Dal.AMBITO  = Ambito;
                                obj_Bll.SAVE(obj_Dal.CODIGO, obj_Dal.SIMBOLO, obj_Dal.TIPO_TOKEN, obj_Dal.AMBITO);
                                SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                                contador = contador + 1;
                            }
                        }
                    }
                    else
                    {
                        if (obj_temp.TIPO_TOKEN.Equals("Inicio_de_Programa") || obj_temp.TIPO_TOKEN.Equals("Funcion_Principal") ||
                            obj_temp.TIPO_TOKEN.Equals("Apertura_Ambito") || obj_temp.TIPO_TOKEN.Equals("Cierre_Ambito") ||
                            obj_temp.TIPO_TOKEN.Equals("Signo_de_Puntuacion") || obj_temp.TIPO_TOKEN.Equals("Constante") ||
                            obj_temp.TIPO_TOKEN.Equals("Concatenacion") || obj_temp.TIPO_TOKEN.Equals("Asignacion") ||
                            obj_temp.TIPO_TOKEN.Equals("Encapsulamiento") || obj_temp.TIPO_TOKEN.Equals("Palabra_Reservada") ||
                            obj_temp.TIPO_TOKEN.Equals("Funcion_Imprimir") || obj_temp.TIPO_TOKEN.Equals("Funcion_Capturar") ||
                            obj_temp.TIPO_TOKEN.Equals("Operador_Matematico") || obj_temp.TIPO_TOKEN.Equals("Expresion_Booleana") ||
                            obj_temp.TIPO_TOKEN.Equals("Operador_Logico") || obj_temp.TIPO_TOKEN.Equals("Condicional") ||
                            obj_temp.TIPO_TOKEN.Equals("Ciclo") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Funcion") ||
                            obj_temp.TIPO_TOKEN.Equals("Retorno_Funcion") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Procedimiento") ||
                            obj_temp.TIPO_TOKEN.Equals("Delimitador_de_Sentencia") || obj_temp.TIPO_TOKEN.Equals("Digito_Entero") ||
                            obj_temp.TIPO_TOKEN.Equals("Digito_Flotante") || obj_temp.TIPO_TOKEN.Equals("Caracter"))
                        {
                            obj_temp.AMBITO = Ambito;
                            obj_Bll.MODIFICAR(obj_temp);
                            SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                        }
                        else
                        {
                            if (obj_temp.AMBITO == Ambito)
                            {
                                string error = "Variable ya fue declarada";
                                SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
                            }
                            else
                            {
                                obj_temp.AMBITO = Ambito;
                                obj_Bll.MODIFICAR(obj_temp);
                                SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                            }
                        }
                    }
                    #region Control de Ambito Cierre
                    if (Token.Equals("]"))
                    {
                        llaveC = llaveC + 1;
                        Ambito = Ambito - llaveC;
                        if (Ambito < 0)
                        {
                            Ambito = 1;
                        }
                        //Ambito = Ambito - 1;
                    }
                    #endregion
                }
            }
            if (llaveC != llave)
            {
                string error = "- Fata cierre o apertura de Ambito -";
                SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
            }
            //obj_Bll.DELETE_LIST();
        }