Example #1
0
        /// <summary>
        /// program : program_statement+ ;
        /// </summary>
        override public Shell.Types.IShellReturnable VisitProgram(ShellParser.ProgramContext context)
        {
            var statements = context.program_statement();

            Shell.Types.IShellReturnable lastResult = defaultReturnValue;
            foreach (var statement in statements)
            {
                lastResult = VisitProgram_statement(statement);
                if (lastResult is Shell.Types.String str)
                {
                    logger.Debug($"Result: \"{lastResult}\" of type {lastResult.GetType()}");
                }
                else if (lastResult is Shell.Types.Array arr)
                {
                    logger.Debug($"Result: {lastResult} of type {lastResult.GetType()} and length {arr.Count()}");
                }
                else if (lastResult is Shell.Types.Object obj)
                {
                    logger.Debug($"Result is an object:\n {obj}");
                }
                else if (!(lastResult is Shell.Types.None))
                {
                    logger.Debug($"Result: {lastResult} of type {lastResult.GetType()}");
                }
            }
            return(lastResult);
        }
Example #2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="ShellParser.program"/>.
 /// <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 VisitProgram([NotNull] ShellParser.ProgramContext context)
 {
     return(VisitChildren(context));
 }