示例#1
0
 private WDataTypeReference ParseDataType(DataTypeReference dataType)
 {
     if (dataType == null)
         return null;
     var pDataType = dataType as ParameterizedDataTypeReference;
     if (pDataType == null)
         throw new NotImplementedException();
     var wDataType = new WParameterizedDataTypeReference
     {
         Name = ParseSchemaObjectName(pDataType.Name),
         FirstTokenIndex = pDataType.FirstTokenIndex,
         LastTokenIndex = pDataType.LastTokenIndex
     };
     if (pDataType.Parameters == null)
         return wDataType;
     wDataType.Parameters = new List<Literal>(pDataType.Parameters.Count);
     foreach (var param in pDataType.Parameters)
         wDataType.Parameters.Add(param);
     return wDataType;
 }
示例#2
0
        private static bool ParseParameterizedDataType(
            IList<TSqlParserToken> tokens,
            ref int nextToken,
            ref WDataTypeReference result,
            ref int farestError)
        {
            var firstToken = nextToken;
            var currentToken = nextToken;
            WSchemaObjectName varName = null;
            if (!ParseSchemaObjectName(tokens, ref currentToken, ref varName, ref farestError))
                return false;
            List<Literal> parameters = null;
            ParseLiteralList(tokens, ref currentToken, ref parameters, ref farestError);

            var dataTypeReference = new WParameterizedDataTypeReference
            {
                Name = varName,
                Parameters = parameters,
                FirstTokenIndex = firstToken,
                LastTokenIndex = currentToken - 1,
            };
            nextToken = currentToken;
            result = dataTypeReference;
            return true;
        }