ToStringBuilder() private method

private ToStringBuilder ( StringBuilder b ) : StringBuilder
b StringBuilder
return StringBuilder
コード例 #1
0
        internal virtual StringBuilder ToStringBuilder(StringBuilder b)
        {
            switch (kind)
            {
            case Kind.REGEXP_UNION:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append("|");
                exp2.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_CONCATENATION:
                exp1.ToStringBuilder(b);
                exp2.ToStringBuilder(b);
                break;

            case Kind.REGEXP_INTERSECTION:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append("&");
                exp2.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_OPTIONAL:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append(")?");
                break;

            case Kind.REGEXP_REPEAT:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append(")*");
                break;

            case Kind.REGEXP_REPEAT_MIN:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append("){").Append(min).Append(",}");
                break;

            case Kind.REGEXP_REPEAT_MINMAX:
                b.Append("(");
                exp1.ToStringBuilder(b);
                b.Append("){").Append(min).Append(",").Append(max).Append("}");
                break;

            case Kind.REGEXP_COMPLEMENT:
                b.Append("~(");
                exp1.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_CHAR:
                b.Append("\\").AppendCodePoint(c);
                break;

            case Kind.REGEXP_CHAR_RANGE:
                b.Append("[\\").AppendCodePoint(from).Append("-\\").AppendCodePoint(to).Append("]");
                break;

            case Kind.REGEXP_ANYCHAR:
                b.Append(".");
                break;

            case Kind.REGEXP_EMPTY:
                b.Append("#");
                break;

            case Kind.REGEXP_STRING:
                b.Append("\"").Append(s).Append("\"");
                break;

            case Kind.REGEXP_ANYSTRING:
                b.Append("@");
                break;

            case Kind.REGEXP_AUTOMATON:
                b.Append("<").Append(s).Append(">");
                break;

            case Kind.REGEXP_INTERVAL:
                string s1 = Convert.ToString(min, CultureInfo.InvariantCulture);
                string s2 = Convert.ToString(max, CultureInfo.InvariantCulture);
                b.Append("<");
                if (digits > 0)
                {
                    for (int i = s1.Length; i < digits; i++)
                    {
                        b.Append('0');
                    }
                }
                b.Append(s1).Append("-");
                if (digits > 0)
                {
                    for (int i = s2.Length; i < digits; i++)
                    {
                        b.Append('0');
                    }
                }
                b.Append(s2).Append(">");
                break;
            }
            return(b);
        }
コード例 #2
0
        internal virtual StringBuilder ToStringBuilder(StringBuilder b)
        {
            switch (kind)
            {
            case Kind.REGEXP_UNION:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append("|");
                Exp2.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_CONCATENATION:
                Exp1.ToStringBuilder(b);
                Exp2.ToStringBuilder(b);
                break;

            case Kind.REGEXP_INTERSECTION:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append("&");
                Exp2.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_OPTIONAL:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append(")?");
                break;

            case Kind.REGEXP_REPEAT:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append(")*");
                break;

            case Kind.REGEXP_REPEAT_MIN:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append("){").Append(Min).Append(",}");
                break;

            case Kind.REGEXP_REPEAT_MINMAX:
                b.Append("(");
                Exp1.ToStringBuilder(b);
                b.Append("){").Append(Min).Append(",").Append(Max).Append("}");
                break;

            case Kind.REGEXP_COMPLEMENT:
                b.Append("~(");
                Exp1.ToStringBuilder(b);
                b.Append(")");
                break;

            case Kind.REGEXP_CHAR:
                b.Append("\\").Append(Character.ToChars(c));
                break;

            case Kind.REGEXP_CHAR_RANGE:
                b.Append("[\\").Append(Character.ToChars(From)).Append("-\\").Append(Character.ToChars(To)).Append("]");
                break;

            case Kind.REGEXP_ANYCHAR:
                b.Append(".");
                break;

            case Kind.REGEXP_EMPTY:
                b.Append("#");
                break;

            case Kind.REGEXP_STRING:
                b.Append("\"").Append(s).Append("\"");
                break;

            case Kind.REGEXP_ANYSTRING:
                b.Append("@");
                break;

            case Kind.REGEXP_AUTOMATON:
                b.Append("<").Append(s).Append(">");
                break;

            case Kind.REGEXP_INTERVAL:
                string s1 = Convert.ToString(Min);
                string s2 = Convert.ToString(Max);
                b.Append("<");
                if (Digits > 0)
                {
                    for (int i = s1.Length; i < Digits; i++)
                    {
                        b.Append('0');
                    }
                }
                b.Append(s1).Append("-");
                if (Digits > 0)
                {
                    for (int i = s2.Length; i < Digits; i++)
                    {
                        b.Append('0');
                    }
                }
                b.Append(s2).Append(">");
                break;
            }
            return(b);
        }