コード例 #1
0
 public void AnalizarCodigo(string tbxCode, ListaError lE, ListaPR lPR)
 {
     foreach (var tk in Reglas.ObtenerTokens(tbxCode))
     {
         if (tk.Token == "ERROR")
         {
             lE.insertar(tk.Token, tk.Lexema);
         }
         else
         if (tk.Token == "IDENTIFICADOR")
         {
             if (palabrasReservadas.Contains(tk.Lexema))
             {
                 tk.Token = "RESERVADO";
             }
         }
         lPR.insertar(tk.Token, tk.Lexema);
     }
 }
コード例 #2
0
        public void iniciarRPR(TextBox tbxCode, ListaError lE, ListaPR lPR)
        {
            Reglas.guardar(@">>[^\r\n]*", "desplazamientoIzquiero");
            Reglas.guardar(@"<<[^\r\n]*", "desplazamientoD");
            Reglas.guardar(@"::[^\r\n]*", "alias");
            Reglas.guardar(@":[^\r\n]*", "condicional");
            Reglas.guardar(@"!=[^\r\n]*", "diferente");
            Reglas.guardar(@"¿¿[^\r\n]*", "null");
            Reglas.guardar(@"'[^\r\n]*", "comillas_simples");
            Reglas.guardar(@"&&[^\r\n]*", "and");
            Reglas.guardar(@"->[^\r\n]*", "desReferenciacion");
            Reglas.guardar(@"==[^\r\n]*", "exactamente_igual");
            Reglas.guardar(@"%[^\r\n]*", "resto");
            Reglas.guardar(@">=[^\r\n]*", "mayorQue");
            Reglas.guardar(@"<=[^\r\n]*", "menorQue");


            Reglas.guardar(@"\s+", "Espacio", true);
            Reglas.guardar(@"\b[_a-zA-Z][\w]*\b", "Identificador");

            Reglas.guardar("\".*?\"", "Cadena");
            Reglas.guardar(@"'\\.'|'[^\\]'", "Caracter");
            Reglas.guardar("//[^\r\n]*", "Comentario_simple");
            Reglas.guardar("/[*].*?[*]/", "Comentario_multiple");
            Reglas.guardar(@"\d*\.?\d+", "Nùmero");
            Reglas.guardar(@"[\(\)\{\}\[\];,]", "Delimitador");
            Reglas.guardar(@"[\.=\+\-/*%]", "Matematico");
            Reglas.guardar(@">|<|==|>=|<=|!", "Comparador");
            palabrasReservadas = new List <string>()
            {
                "abstract", "as", "break", "case",
                "do", "else", "enum", "event", "explicit", "extern", "false", "finally",
                "new", "null", "operator", "catch", "private", "protected", "public",
                "ref", "return", "static", "switch", "this", "true", "try", "namespace",
                "void", "while", "float", "int", "long", "object", "get", "set", "new", "select", "where",
                "equals", "using", "bool", "byte", "char", "decimal", "double",
                "short", "string", "var", "class", "struct", "Procedure", "for", "if"
            };
            Reglas.Compilar(RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture);
            cargar = true;
            AnalizarCodigo(tbxCode.Text, lE, lPR);
            tbxCode.Focus();
        }