示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>true if parsing had no errors</returns>
        public bool Parse()
        {
            if (AlreadyParsed)
            {
                return(ParsingWasSuccessfull);
            }

            //Sets default console if needed
            console ??= new DefaultConsole();

            var antlrInputStream = new AntlrInputStream(code);
            var lexer            = new CosmosLexer(antlrInputStream);
            var tokens           = new CommonTokenStream(lexer);
            var parser           = new Cosmos(tokens);

            ErrorListener = new ErrorListener(console);
            parser.RemoveErrorListeners();
            parser.AddErrorListener(ErrorListener);

            context = parser.programme();

            var result = !ErrorListener.HadError;

            AlreadyParsed         = true;
            ParsingWasSuccessfull = result;

            return(result);
        }