Exemple #1
0
        private static bool ParseMultiPartIdentifier(
            IList <TSqlParserToken> tokens,
            ref int nextToken,
            ref DMultiPartIdentifier result,
            ref int farestError)
        {
            var        firstToken   = nextToken;
            var        currentToken = nextToken;
            var        identifiers  = new List <Identifier>();
            Identifier identifier   = null;

            if (!ParseIdentifier(tokens, ref currentToken, ref identifier, ref farestError))
            {
                return(false);
            }
            identifiers.Add(identifier);
            while (ReadToken(tokens, ".", ref currentToken, ref farestError))
            {
                ParseIdentifier(tokens, ref currentToken, ref identifier, ref farestError);
                identifiers.Add(identifier);
            }
            result = new DMultiPartIdentifier
            {
                Identifiers = identifiers,
            };
            nextToken = currentToken;
            return(true);
        }
Exemple #2
0
        public DMultiPartIdentifier ParseMultiPartIdentifier(string input)
        {
            var sr = new StringReader(input);
            IList <ParseError>     errors;
            List <TSqlParserToken> tokens = new List <TSqlParserToken>(_parser.tsqlParser.GetTokenStream(sr, out errors));

            if (errors.Count > 0)
            {
                return(null);
            }

            var currentToken            = 0;
            var farestError             = 0;
            DMultiPartIdentifier result = new DMultiPartIdentifier();

            if (!ParseMultiPartIdentifier(tokens, ref currentToken, ref result, ref farestError))
            {
                return(null);
            }

            return(result);
        }