Exemplo n.º 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);
        }
Exemplo n.º 2
0
        public override ExecutionContext VisitProgramme(Cosmos.ProgrammeContext context)
        {
            var result = new ExecutionContext {
                Success = false
            };

            try
            {
                variableVisitor = new VariableVisitor(parser, executionConsole);

                expressionVisitor = new ExpressionVisitor(variableVisitor, parser, random);
                variableVisitor.ExpressionVisitor = expressionVisitor;

                base.VisitProgramme(context);
                result.Success = true;
            }
            catch (CosmosException e)
            {
                parser.ErrorListener.Error(e);
            }

            return(result);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="Cosmos.programme"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitProgramme([NotNull] Cosmos.ProgrammeContext context)
 {
     return(VisitChildren(context));
 }
Exemplo n.º 4
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="Cosmos.programme"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitProgramme([NotNull] Cosmos.ProgrammeContext context)
 {
 }