示例#1
0
        public static TsType FromLiteral(CsLiteral value)
        {
            if (value.Type.OriginalType.IsEnum)
            {
                return(new TsEnumLiteralType
                {
                    Value = Enum.GetName(value.Type.OriginalType, value.Value),
                    EnumType = new TsTypeReference(value.Type.Name)
                    {
                        CsType = value.Type
                    }
                });
            }

            if (value.Type.OriginalType == typeof(bool))
            {
                return(new TsBoolLiteralType {
                    Bool = (bool)value.Value
                });
            }

            if (value.Type.OriginalType == typeof(string))
            {
                return(new TsStringLiteralType {
                    String = (string)value.Value
                });
            }

            if (value.Type.OriginalType == typeof(int))
            {
                return(new TsIntLiteralType {
                    Int = (int)value.Value
                });
            }

            throw new ArgumentException("Not supported literal type " +
                                        value.Type.OriginalType.Name);
        }
示例#2
0
        public Expression Parse(CsExpression pStatement, FactoryExpressionCreator pCreator)
        {
            CsLiteral li = (CsLiteral)pStatement;

            switch (li.type)
            {
            case CsTokenType.tkTRUE:
                return(new Expression("true", pStatement.entity_typeref));

            case CsTokenType.tkFALSE:
                return(new Expression("false", pStatement.entity_typeref));

            case CsTokenType.tkNULL:
                return(new Expression("null", pStatement.entity_typeref));

            default:
                switch (li.literal_type)
                {
                case CsLiteralType.literal_int:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_uint_U:
                    return(new Expression(li.literal.Substring(0, li.literal.Length - 1), pStatement.entity_typeref));

                case CsLiteralType.literal_uint:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_long:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_long_L:
                    return(new Expression(li.literal.Substring(0, li.literal.Length - 1), pStatement.entity_typeref));

                case CsLiteralType.literal_decimal_M:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_ulong:
                case CsLiteralType.literal_ulong_L:
                case CsLiteralType.literal_ulong_UL:
                    return(new Expression(li.literal, pStatement.entity_typeref));


                case CsLiteralType.literal_double_D:
                case CsLiteralType.literal_double:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_number:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_float_F:
                    return(new Expression(li.literal, pStatement.entity_typeref));

                case CsLiteralType.literal_char:
                    return(new Expression("'" + li.literal + "'", pStatement.entity_typeref));

                case CsLiteralType.literal_verbatim_string:
                    string l = li.literal.Substring(2, li.literal.Length - 3);
                    return(l.StartsWith(@"rx:", StringComparison.Ordinal) ?
                           new Expression(l.Substring(3, l.Length - 3), pStatement.entity_typeref) :
                           new Expression(Helpers.EscapeString(l), pStatement.entity_typeref));

                default:
                    return(new Expression(Helpers.EscapeString(li.literal), pStatement.entity_typeref));
                }
            }
        }