Ejemplo n.º 1
0
        public virtual T Visit(DoWhileExpression expression)
        {
            expression.Block.Accept(this);
            expression.Condition.Accept(this);

            return(default(T));
        }
Ejemplo n.º 2
0
 public object Visit(DoWhileExpression node)
 {
     if (node.Body != null)
     {
         Visit(node.Body);
     }
     return(null);
 }
Ejemplo n.º 3
0
 public virtual Expression Visit(DoWhileExpression expression)
 {
     return(new DoWhileExpression(
                expression.Token,
                (ScopeExpression)expression.Block.Accept(this),
                expression.Condition.Accept(this))
     {
         EndToken = expression.EndToken
     });
 }
Ejemplo n.º 4
0
        public int Visit(DoWhileExpression expression)
        {
            _writer.WriteLine("do");

            expression.Block.Accept(this);

            _writer.Write(" while (");
            expression.Condition.Accept(this);
            _writer.Write(")");

            return(0);
        }
Ejemplo n.º 5
0
        private CodeStatementCollection GenerateImperativeStatement(DoWhileExpression node)
        {
            var body = GenerateImperativeStatements(node.Body);

            body.Add(new CodeConditionStatement(
                         CodeHelper.BinOpExp(
                             GenerateImperativeExpression(node.Condition, isCondition: true),
                             CodeBinaryOperatorType.ValueEquality,
                             CodeHelper.False()),
                         new CodeSnippetStatement("break;")));

            return(new CodeStatementCollection(new[] { CodeHelper.While(CodeHelper.True(), body.OfType <CodeStatement>().ToArray()) }));
        }
Ejemplo n.º 6
0
 public DoWhileExpression Visit(DoWhileExpression doWhile)
 {
     codeWriter.Write("do {", currentIndent);
     codeWriter.NewLine();
     currentIndent++;
     Visit(doWhile.Body);
     currentIndent--;
     codeWriter.Write("} while(", currentIndent);
     insideExpressionCount++;
     Visit(doWhile.Test);
     insideExpressionCount--;
     codeWriter.Write(")");
     codeWriter.NewLine();
     return(null);
 }
Ejemplo n.º 7
0
        public string Visit(DoWhileExpression doWhile)
        {
            var codeWriter = new XzaarCodeWriter();

            codeWriter.Write("do {", currentIndent);
            codeWriter.NewLine();
            currentIndent++;
            codeWriter.Write(Visit(doWhile.Body));
            currentIndent--;
            codeWriter.Write("} while(", currentIndent);
            insideExpressionCount++;
            codeWriter.Write(Visit(doWhile.Test));
            insideExpressionCount--;
            codeWriter.Write(")");
            codeWriter.NewLine();
            return(codeWriter.ToString());
        }
Ejemplo n.º 8
0
        public static DoWhileExpression Create(
            AphidExpressionContext context_aphidExpressionContext,
            AphidExpression condition_aphidExpression,
            List <AphidExpression> body_list,
            int value_i,
            int value_i1
            )
        {
            DoWhileExpression doWhileExpression = new DoWhileExpression
                                                      (context_aphidExpressionContext, condition_aphidExpression, body_list);

            ((AphidExpression)doWhileExpression).Index  = value_i;
            ((AphidExpression)doWhileExpression).Length = value_i1;
            return(doWhileExpression);

            // TODO: Edit factory method of DoWhileExpression
            // This method should be able to configure the object in all possible ways.
            // Add as many parameters as needed,
            // and assign their values to each field by using the API.
        }
Ejemplo n.º 9
0
        public void evalExpression(Expression exp)
        {
            if (exp == null)
            {
                return;
            }

            if (exp is InstructionExpression)
            {
                evalInstruction((InstructionExpression)exp);

                return;
            }
            else if (exp is SequenceExpression)
            {
                SequenceExpression seqExp = (SequenceExpression)exp, seqTmp;
                Expression         expTmp;
                int index = insertIndex;

                seqTmp = new SequenceExpression(new List <Expression>(seqExp.exps));

                seqs.Add(seqExp);
                runningSeqs.Add(seqTmp);
                index = runningSeqs.Count - 1;

                while (seqTmp.exps.Count > 0)
                {
                    expTmp = seqTmp.exps.ElementAt(0);
                    evalExpression(expTmp);

                    seqTmp.exps.RemoveAt(0);

                    if (!shouldEvalSeq)
                    {
                        if (seqTmp.exps.Count == 0)
                        {
                            runningSeqs.RemoveAt(index);
                        }

                        return;
                    }
                }

                runningSeqs.RemoveAt(runningSeqs.Count - 1);

                removeDeclaredVariables(seqs.ElementAt(seqs.Count - 1).declaredVariables());
                seqs.RemoveAt(seqs.Count - 1);

                return;
            }
            else if (exp is IfExpression)
            {
                ifExp = (IfExpression)exp;

                o1 = evalSimpleExpression(ifExp.condition);

                if ((bool)o1.value)
                {
                    evalExpression(ifExp.body);

                    return;
                }
                if (ifExp.elseIfList != null)
                {
                    foreach (ElseIfExpression elseIfExp in ifExp.elseIfList)
                    {
                        o1 = evalSimpleExpression(elseIfExp.condition);

                        if ((bool)o1.value)
                        {
                            evalExpression(elseIfExp.corps);

                            return;
                        }
                    }
                }
                if (ifExp.elseBlock != null)
                {
                    evalExpression(ifExp.elseBlock.body);

                    return;
                }

                return;
            }
            else if (exp is SwitchExpression)
            {
                switchExp = (SwitchExpression)exp;

                o1 = evalSimpleExpression(switchExp.exp);

                foreach (SwitchCaseExpression sce in switchExp.cases)
                {
                    if (sce is CaseExpression)
                    {
                        if (o1.type == ObjectType.stringType &&
                            isCatched((string)o1.value, sce, false))
                        {
                            return;
                        }
                        else if (o1.type == ObjectType.intType &&
                                 isCatched((int)o1.value, sce, false))
                        {
                            return;
                        }
                    }
                    else if (sce is DefaultExpression)
                    {
                        evalExpression(((DefaultExpression)sce).body);
                        return;
                    }
                }

                return;
            }
            else if (exp is WhileExpression)
            {
                whileExp = (WhileExpression)exp;

                while (true)
                {
                    o1 = evalSimpleExpression(whileExp.condition);

                    if (!(bool)o1.value)
                    {
                        return;
                    }

                    evalExpression(whileExp.body);
                }
            }
            else if (exp is DoWhileExpression)
            {
                doWhileExp = (DoWhileExpression)exp;

                do
                {
                    evalExpression(doWhileExp.body);

                    o1 = evalSimpleExpression(doWhileExp.condition);

                    if (!(bool)o1.value)
                    {
                        return;
                    }
                } while (true);
            }
            else if (exp is ForExpression)
            {
                forExp = (ForExpression)exp;

                evalExpression(forExp.init);

                while (true)
                {
                    o1 = evalSimpleExpression(forExp.condition);

                    if (!(bool)o1.value)
                    {
                        return;
                    }

                    evalExpression(forExp.body);
                    evalExpression(forExp.maj);
                }
            }
        }
Ejemplo n.º 10
0
 [DebuggerStepThrough] protected virtual void EmitDoWhileExpression(DoWhileExpression expression, bool isStatement = false)
 {
     throw new NotImplementedException();
 }
 public object Visit(DoWhileExpression node)
 {
     return(null);
 }
 protected virtual Expression VisitDoWhile(DoWhileExpression node)
 {
     Visit(node.Test);
     Visit(node.Body);
     return(node);
 }
 public object Visit(DoWhileExpression doWhile)
 {
     throw new System.NotImplementedException();
 }