Ejemplo n.º 1
0
        public static TypeNamingParser.AssemblyContext ValidateAssemblyName(string input)
        {
            var el           = new MyErrorListener();
            var parser       = SetupParser(input, el);
            var namespaceEol = parser.assemblyEOL();

            Asserts.Not(el.HasError, "Syntax Error: " + input);
            return(namespaceEol.assembly());
        }
Ejemplo n.º 2
0
        public static TypeNamingParser.MethodContext ValidateMethodName(string input)
        {
            var el        = new MyErrorListener();
            var parser    = SetupParser(input, el);
            var methodEol = parser.methodEOL();

            Asserts.Not(el.HasError, "Syntax Error: " + input);
            return(methodEol.method());
        }
Ejemplo n.º 3
0
        public static TypeNamingParser.TypeContext ValidateTypeName(string input)
        {
            var el      = new MyErrorListener();
            var parser  = SetupParser(input, el);
            var typeEOL = parser.typeEOL();

            Asserts.Not(el.HasError, "Syntax Error: " + input);
            return(typeEOL.type());
        }
Ejemplo n.º 4
0
        public static TypeNamingParser.LambdaNameContext ValidateLambdaName(string input)
        {
            var el            = new MyErrorListener();
            var parser        = SetupParser(input, el);
            var lambdaNameEol = parser.lambdaNameEOL();

            Asserts.Not(el.HasError, "Syntax Error: " + input);
            return(lambdaNameEol.lambdaName());
        }
Ejemplo n.º 5
0
        public static TypeNamingParser.FormalParamContext ValidateParameterName(string input)
        {
            var el           = new MyErrorListener();
            var parser       = SetupParser(input, el);
            var parameterEol = parser.parameterNameEOL();

            Asserts.Not(el.HasError, "Syntax Error: " + input);
            return(parameterEol.formalParam());
        }
Ejemplo n.º 6
0
        private static TypeNamingParser SetupParser(string input, MyErrorListener el)
        {
            var inputStream = new AntlrInputStream(input + "\n");
            var lexer       = new TypeNamingLexer(inputStream);

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(el);
            var tokens = new CommonTokenStream(lexer);
            var parser = new TypeNamingParser(tokens);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(el);
            return(parser);
        }
Ejemplo n.º 7
0
        public static IParseTree GenerateAST(string code, ref List <ErrorDescriptor> errors)
        {
            var inputStream = new AntlrInputStream(code);
            var lexer       = new classlist_langLexer(inputStream);

            lexer.RemoveErrorListeners();
            MyErrorListener errorListener = new MyErrorListener(errors);

            lexer.AddErrorListener(errorListener);

            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new classlist_langParser(tokenStream);

            parser.RemoveErrorListeners();
            MyTokenErrorListener errorListener2 = new MyTokenErrorListener(errors);

            parser.AddErrorListener(errorListener2);

            var context = parser.doc();

            return(context);
        }
Ejemplo n.º 8
0
        public void paso1(DataGridView dataGridViewIntermedio)
        {
            string[]        codigo;
            MyErrorListener errorListener;

            this.lineasError = new List <bool>();
            this.errores     = new List <string>();
            this.intermedio  = new List <string>();
            this.tabSim      = new Dictionary <string, long>();
            for (int i = 0; i < this.Archivo.Count; i++)
            {
                lexer         = new SICEstandarLexer(new AntlrInputStream(this.Archivo[i]));
                tokens        = new CommonTokenStream(lexer);
                parser        = new SICEstandarParser(tokens);
                errorListener = new MyErrorListener(i + 1);
                parser.AddErrorListener(errorListener);
                parser.prog();
                codigo = this.Archivo[i].Split('\t');
                this.lineasError.Add(errorListener.ExisteError);
                if (!errorListener.ExisteError)
                {
                    try
                    {
                        if (!codigo[1].Equals("START") && !codigo[1].Equals("END"))
                        {
                            this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "No");
                            if (!string.IsNullOrEmpty(codigo[0]))
                            {
                                this.TabSim.Add(codigo[0], this.cp);
                            }
                            this.incrementaInstruccionDirectiva(codigo);
                        }
                        else if (codigo[1].Equals("START"))
                        {
                            codigo[2] = codigo[2].ToUpper();
                            if (codigo[2].Contains("H"))
                            {
                                this.cp = MetodosAuxiliares.hexadecimalADecimal(codigo[2].Replace("H", ""));
                                this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "No");
                            }
                            else
                            {
                                this.cp = long.Parse(codigo[2]);
                                this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "no");
                            }
                        }
                        else if (codigo[1].Equals("END"))
                        {
                            //this.intermedio.Add(this.cp.ToString() + "\t" + this.archivo[i]);
                            this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "no");
                        }
                    }
                    catch (ArgumentException)
                    {
                        this.errores.Add("Linea" + (i + 1).ToString() + ": Error Simbolo repetido");
                        dataGridViewIntermedio.Rows.Remove(dataGridViewIntermedio.Rows[dataGridViewIntermedio.Rows.Count - 1]);
                        this.intermedio.Remove(this.intermedio.Last());
                        //this.intermedio.Add(this.cp.ToString() + "\t" + this.archivo[i] + "*");
                        this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Simbolo");
                        this.incrementaInstruccionDirectiva(codigo);
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(this.Archivo[i]))
                    {
                        if (this.instrucciones.Keys.Contains(codigo[1]) || this.Directivas.Contains(codigo[1]) || codigo[1].Equals("WORD"))
                        {
                            if (this.instrucciones.Keys.Contains(codigo[0]) || this.Directivas.Contains(codigo[0]) || codigo[0].Equals("WORD"))
                            {
                                this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis la etiqueta no puede ser la palabra reservada \"" + codigo[0] + "\"");
                                this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Syntax");
                            }
                            else
                            {
                                this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis el operando: \"" + codigo[2] + "\" Esta mal escrito");
                                this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Syntax");
                            }
                        }
                        else
                        {
                            this.errores.Add("Linea" + (i + 1).ToString() + ": Error instruccion \"" + codigo[1] + "\" no existe");
                            this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Instruccion");
                        }
                    }
                    else
                    {
                        this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis no debe haber lineas vacias");
                        codigo = new string[] { "\t", "\t", "\t" };
                        this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Vacia");
                    }
                }
            }
            this.paso1Logrado = true;
        }