예제 #1
0
파일: Parser.cs 프로젝트: jawn/nquery-vnext
        private SeparatedSyntaxList <SelectColumnSyntax> ParseSelectColumnList()
        {
            var columnsWithCommas = new List <SyntaxNodeOrToken>();

            while (true)
            {
                var oldIndex = _tokenIndex;

                var selectColumn = ParseSelectColumn();
                columnsWithCommas.Add(selectColumn);

                if (_tokenIndex == oldIndex)
                {
                    SkipTokens(t => SyntaxFacts.CanFollowSelectColumn(t.Kind));
                }

                if (Current.Kind != SyntaxKind.CommaToken && !SyntaxFacts.CanStartExpression(Current.Kind))
                {
                    break;
                }

                var comma = Match(SyntaxKind.CommaToken);
                columnsWithCommas.Add(comma);
            }

            return(new SeparatedSyntaxList <SelectColumnSyntax>(columnsWithCommas));
        }
예제 #2
0
파일: Parser.cs 프로젝트: jawn/nquery-vnext
        private AliasSyntax ParseOptionalColumnAlias()
        {
            var isAlias = Peek(0).Kind == SyntaxKind.AsKeyword ||
                          Peek(0).Kind == SyntaxKind.IdentifierToken && SyntaxFacts.CanFollowSelectColumn(Peek(1).Kind);

            return(isAlias
                       ? ParseAlias()
                       : null);
        }