Esempio n. 1
0
        private void Resolve(ContinueExpr @continue)
        {
            if (!_currentLambda)
            {
                throw new Exception("Cannot continue when not in a loop!");
            }

            // TODO: resolve label
        }
        public Expr OnParseContinue()
        {
            var tokenIt        = this._parser.TokenIt;
            var initiatorToken = tokenIt.NextToken;
            var expr           = new ContinueExpr();

            // <codeContinue>
            tokenIt.Advance();
            // </codeContinue>
            this._parser.SetupContext(expr, initiatorToken);
            return(expr);
        }
Esempio n. 3
0
        /// <summary>
        /// Execute the continue.
        /// </summary>
        public object VisitContinue(ContinueExpr expr)
        {
            var loop = expr.FindParent <ILoop>();

            if (loop == null)
            {
                throw new LangException("syntax error", "unable to break, loop not found", string.Empty, 0);
            }

            loop.DoContinueLoop = true;
            return(LObjects.Null);
        }
Esempio n. 4
0
 private object Evaluate(Expr expression)
 {
     return(expression switch
     {
         BinaryExpr binaryExpr => Evaluate(binaryExpr),
         BlockExpr blockExpr => Evaluate(blockExpr),
         BreakExpr breakExpr => Evaluate(breakExpr),
         CallExpr callExpr => Evaluate(callExpr),
         ContinueExpr continueExpr => Evaluate(continueExpr),
         Identifier identifier => Evaluate(identifier),
         IfExpr ifExpr => Evaluate(ifExpr),
         LambdaExpr lambdaExpr => Evaluate(lambdaExpr),
         Literal literal => Evaluate(literal),
         ReturnExpr returnExpr => Evaluate(returnExpr),
         UnaryExpr unaryExpr => Evaluate(unaryExpr),
         _ => throw new ArgumentOutOfRangeException(nameof(expression))
     });
Esempio n. 5
0
 /// <summary>
 /// Visits the var statement tree.
 /// </summary>
 /// <param name="expr"></param>
 public object VisitContinue(ContinueExpr expr)
 {
     _callBackOnNodeStart(expr);
     return(null);
 }
Esempio n. 6
0
 /// <summary>
 /// Visits the var statement tree.
 /// </summary>
 /// <param name="assignExpr"></param>
 public object VisitContinue(ContinueExpr expr)
 {
     _callBackOnNodeStart(expr);
     return null;
 }
Esempio n. 7
0
 /// <summary>
 /// continue;
 /// </summary>
 /// <returns></returns>
 public override Expr Parse()
 {
     var expr = new ContinueExpr();
     _tokenIt.Expect(Tokens.Continue);
     return expr;
 }