Пример #1
0
        public override void ToSource(StringBuilder sb)
        {
            sb.Append("foreach (");

            iterator.ToSource(sb);

            sb.Append(" in ");

            collection.ToSource(sb);

            sb.Append(")");

            NewLine(sb);

            statements.ToSource(sb);
        }
Пример #2
0
        public override void ToSource(StringBuilder sb)
        {
            sb.Append(IdentNewLine(DocComment));

            if (attributes != null)
            {
                attributes.ToSource(sb);
            }

            TraceModifiers(Modifiers, sb);

            if (isExplicit)
            {
                sb.Append("explicit operator ");
                type.ToSource(sb);
            }
            else if (isImplicit)
            {
                sb.Append("implicit operator ");
                type.ToSource(sb);
            }
            else
            {
                type.ToSource(sb);
                sb.Append(" operator ");
                switch (op)
                {
                case TokenID.Plus:
                case TokenID.Minus:
                case TokenID.Not:
                case TokenID.Tilde:
                case TokenID.Star:
                case TokenID.Slash:
                case TokenID.Percent:
                case TokenID.BAnd:
                case TokenID.BOr:
                case TokenID.BXor:
                case TokenID.Greater:
                case TokenID.Less:
                    sb.Append((char)op);
                    break;

                case TokenID.PlusPlus:
                    sb.Append("++");
                    break;

                case TokenID.MinusMinus:
                    sb.Append("--");
                    break;

                case TokenID.True:
                    sb.Append("true");
                    break;

                case TokenID.False:
                    sb.Append("false");
                    break;

                case TokenID.ShiftLeft:
                    sb.Append("<<");
                    break;

                case TokenID.ShiftRight:
                    sb.Append(">>");
                    break;

                case TokenID.EqualEqual:
                    sb.Append("==");
                    break;

                case TokenID.NotEqual:
                    sb.Append("!=");
                    break;

                case TokenID.GreaterEqual:
                    sb.Append(">=");
                    break;

                case TokenID.LessEqual:
                    sb.Append("<=");
                    break;

                default:
                    sb.Append("<ILLEGAL OPERATOR: " + op + ">");
                    break;
                }
            }

            sb.Append("(");
            if (param1 != null)
            {
                param1.ToSource(sb);
            }
            if (param2 != null)
            {
                sb.Append(", ");
                param2.ToSource(sb);
            }
            sb.Append(")");

            if ((Modifiers & Modifier.Extern) != 0)
            {
                sb.Append(';');
                NewLine(sb);
            }
            else
            {
                NewLine(sb);
                statements.ToSource(sb);
            }
        }