protected virtual void _Generate(AstNodeExprTerop item)
 {
     Output.Write("(");
     Generate(item.Cond);
     Output.Write(" ? ");
     Generate(item.True);
     Output.Write(" : ");
     Generate(item.False);
     Output.Write(")");
 }
Exemple #2
0
        protected virtual void _Generate(AstNodeExprTerop Terop)
        {
            if (Terop.True.Type != Terop.False.Type)
            {
                throw (new InvalidOperationException(String.Format("AstNodeExprTerop '?:' types must match {0} != {1}", Terop.True.Type, Terop.False.Type)));
            }
            var TernaryType         = Terop.True.Type;
            var TernaryTempAstLocal = AstLocal.Create(TernaryType);

            Generate(new AstNodeStmIfElse(
                         Terop.Cond,
                         new AstNodeStmAssign(new AstNodeExprLocal(TernaryTempAstLocal), Terop.True),
                         new AstNodeStmAssign(new AstNodeExprLocal(TernaryTempAstLocal), Terop.False)
                         ));

            Generate(new AstNodeExprLocal(TernaryTempAstLocal));
        }
        protected virtual void _Generate(AstNodeExprTerop terop)
        {
            if (terop.True.Type != terop.False.Type)
            {
                throw new InvalidOperationException(
                          $"AstNodeExprTerop '?:' types must match {terop.True.Type} != {terop.False.Type}");
            }
            var ternaryType         = terop.True.Type;
            var ternaryTempAstLocal = AstLocal.Create(ternaryType);

            Generate(new AstNodeStmIfElse(
                         terop.Cond,
                         new AstNodeStmAssign(new AstNodeExprLocal(ternaryTempAstLocal), terop.True),
                         new AstNodeStmAssign(new AstNodeExprLocal(ternaryTempAstLocal), terop.False)
                         ));

            Generate(new AstNodeExprLocal(ternaryTempAstLocal));
        }