Example #1
0
        public static CoolParser.ProgramContext Tree(CommonTokenStream tokens)
        {
            var errors = new List <string>();
            var parser = new CoolParser(tokens);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(new ParserErrorListener(errors));

            var tree = parser.program();


            if (errors.Any())
            {
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Red;
                foreach (var item in errors)
                {
                    Console.WriteLine(item);
                }
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine();
                return(null);
            }
            return(tree);
        }
Example #2
0
        public List <string> ParsingFile(string file)
        {
            var input  = new AntlrFileStream(file);
            var lexer  = new CoolLexer(input);
            var errors = new List <string>();

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(new LexerErrorListener(errors));

            tokens = new CommonTokenStream(lexer);
            parser = new CoolParser(tokens);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(new ParserErrorListener(errors));

            tree = parser.program();

            return(errors);
        }
Example #3
0
        private static ASTNode ParseInput(string inputPath)
        {
            //try
            {
                var input = new AntlrFileStream(inputPath);
                var lexer = new CoolLexer(input);

                var errors = new List <string>();
                lexer.RemoveErrorListeners();
                lexer.AddErrorListener(new LexerErrorListener(errors));

                var tokens = new CommonTokenStream(lexer);

                var parser = new CoolParser(tokens);

                parser.RemoveErrorListeners();
                parser.AddErrorListener(new ParserErrorListener(errors));

                IParseTree tree = parser.program();

                if (errors.Any())
                {
                    Console.WriteLine();
                    foreach (var item in errors)
                    {
                        Console.WriteLine(item);
                    }
                    return(null);
                }

                var     astBuilder = new ASTBuilder();
                ASTNode ast        = astBuilder.Visit(tree);
                return(ast);
            }

            /*catch (Exception e)
             * {
             *
             *  Console.WriteLine(e.Message);
             *  return null;
             * }*/
        }