Exemplo n.º 1
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="algoParser.statement"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitStatement([NotNull] algoParser.StatementContext context)
 {
 }
Exemplo n.º 2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="algoParser.statement"/>.
 /// <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 VisitStatement([NotNull] algoParser.StatementContext context)
 {
     return(VisitChildren(context));
 }
Exemplo n.º 3
0
        //When evaluating a statement, switch for type.
        public override object VisitStatement([NotNull] algoParser.StatementContext context)
        {
            //What type is it?
            if (context.stat_define() != null)
            {
                //Define statement.
                VisitStat_define(context.stat_define());
            }
            else if (context.stat_setvar() != null)
            {
                //Set a variable after its definition.
                VisitStat_setvar(context.stat_setvar());
            }
            else if (context.stat_setvar_op() != null)
            {
                //Set a variable using a self modifying operator.
                VisitStat_setvar_op(context.stat_setvar_op());
            }
            else if (context.stat_setvar_postfix() != null)
            {
                //Set a variable using a postfix operator.
                VisitStat_setvar_postfix(context.stat_setvar_postfix());
            }
            else if (context.stat_deletevar() != null)
            {
                //Delete a variable from scope.
                VisitStat_deletevar(context.stat_deletevar());
            }
            else if (context.stat_if() != null)
            {
                //An "if" statement.
                return(VisitStat_if(context.stat_if()));
            }
            else if (context.stat_forLoop() != null)
            {
                //A for loop.
                return(VisitStat_forLoop(context.stat_forLoop()));
            }
            else if (context.stat_whileLoop() != null)
            {
                //A while loop.
                return(VisitStat_whileLoop(context.stat_whileLoop()));
            }
            else if (context.stat_enumDef() != null)
            {
                //Definition of an enum.
                VisitStat_enumDef(context.stat_enumDef());
            }
            else if (context.stat_functionCall() != null)
            {
                //A function call.
                //This should NOT return, it's a top level single function call.
                VisitStat_functionCall(context.stat_functionCall());
            }
            else if (context.stat_functionDef() != null)
            {
                //A function definition.
                VisitStat_functionDef(context.stat_functionDef());
            }
            else if (context.stat_return() != null)
            {
                //Returning a value from a function call.
                return(VisitStat_return(context.stat_return()));
            }
            else if (context.stat_print() != null)
            {
                //A print statement.
                VisitStat_print(context.stat_print());
            }
            else if (context.stat_library() != null)
            {
                //Defining a library.
                VisitStat_library(context.stat_library());
            }
            else if (context.stat_import() != null)
            {
                //Importing an Algo script.
                VisitStat_import(context.stat_import());
            }
            else if (context.stat_loadFuncExt() != null)
            {
                //Load an external or internal plugin function.
                VisitStat_loadFuncExt(context.stat_loadFuncExt());
            }
            else if (context.stat_list_add() != null)
            {
                //Add a value to a list.
                VisitStat_list_add(context.stat_list_add());
            }
            else if (context.stat_list_remove() != null)
            {
                //Remove a value from a list.
                VisitStat_list_remove(context.stat_list_remove());
            }
            else if (context.stat_break() != null)
            {
                //Break statement, return a break value.
                return(AlgoValue.Break);
            }
            else if (context.stat_continue() != null)
            {
                //Continue statement, return a continue value.
                return(AlgoValue.Continue);
            }
            else if (context.stat_try_catch() != null)
            {
                //Try/catch block.
                return(VisitStat_try_catch(context.stat_try_catch()));
            }
            else if (context.stat_throw() != null)
            {
                //Throw an error.
                VisitStat_throw(context.stat_throw());
            }
            else
            {
                Error.Fatal(context, "Syntax error, unrecognized statement.");
            }

            return(null);
        }