public TSQLUpdateStatement Parse() { TSQLUpdateClause updateClause = new TSQLUpdateClauseParser().Parse(Tokenizer); Statement.Update = updateClause; Statement.Tokens.AddRange(updateClause.Tokens); if (Tokenizer.Current.IsKeyword(TSQLKeywords.SET)) { TSQLSetClause setClause = new TSQLSetClauseParser().Parse(Tokenizer); Statement.Set = setClause; Statement.Tokens.AddRange(setClause.Tokens); } if (Tokenizer.Current.IsFutureKeyword(TSQLFutureKeywords.OUTPUT)) { TSQLOutputClause outputClause = new TSQLOutputClauseParser().Parse(Tokenizer); Statement.Output = outputClause; Statement.Tokens.AddRange(outputClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.FROM)) { TSQLFromClause fromClause = new TSQLFromClauseParser().Parse(Tokenizer); Statement.From = fromClause; Statement.Tokens.AddRange(fromClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.WHERE)) { TSQLWhereClause whereClause = new TSQLWhereClauseParser().Parse(Tokenizer); Statement.Where = whereClause; Statement.Tokens.AddRange(whereClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(Tokenizer); Statement.Option = optionClause; Statement.Tokens.AddRange(optionClause.Tokens); } return(Statement); }
public TSQLDeleteStatement Parse() { TSQLDeleteClause deleteClause = new TSQLDeleteClauseParser().Parse(Tokenizer); Statement.Delete = deleteClause; Statement.Tokens.AddRange(deleteClause.Tokens); if (Tokenizer.Current.IsFutureKeyword(TSQLFutureKeywords.OUTPUT)) { TSQLOutputClause outputClause = new TSQLOutputClauseParser().Parse(Tokenizer); Statement.Output = outputClause; Statement.Tokens.AddRange(outputClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.FROM)) { TSQLFromClause fromClause = new TSQLFromClauseParser().Parse(Tokenizer); Statement.From = fromClause; Statement.Tokens.AddRange(fromClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.WHERE)) { TSQLWhereClause whereClause = new TSQLWhereClauseParser().Parse(Tokenizer); Statement.Where = whereClause; Statement.Tokens.AddRange(whereClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(Tokenizer); Statement.Option = optionClause; Statement.Tokens.AddRange(optionClause.Tokens); } if ( Tokenizer.Current?.AsKeyword != null && Tokenizer.Current.AsKeyword.Keyword.IsStatementStart()) { Tokenizer.Putback(); } return(Statement); }
public TSQLSelectStatement Parse(ITSQLTokenizer tokenizer) { TSQLSelectStatement select = new TSQLSelectStatement(); TSQLSelectClause selectClause = new TSQLSelectClauseParser().Parse(tokenizer); select.Select = selectClause; select.Tokens.AddRange(selectClause.Tokens); if (tokenizer.Current.IsKeyword(TSQLKeywords.INTO)) { TSQLIntoClause intoClause = new TSQLIntoClauseParser().Parse(tokenizer); select.Into = intoClause; select.Tokens.AddRange(intoClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.FROM)) { TSQLFromClause fromClause = new TSQLFromClauseParser().Parse(tokenizer); select.From = fromClause; select.Tokens.AddRange(fromClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.WHERE)) { TSQLWhereClause whereClause = new TSQLWhereClauseParser().Parse(tokenizer); select.Where = whereClause; select.Tokens.AddRange(whereClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.GROUP)) { TSQLGroupByClause groupByClause = new TSQLGroupByClauseParser().Parse(tokenizer); select.GroupBy = groupByClause; select.Tokens.AddRange(groupByClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.HAVING)) { TSQLHavingClause havingClause = new TSQLHavingClauseParser().Parse(tokenizer); select.Having = havingClause; select.Tokens.AddRange(havingClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.ORDER)) { TSQLOrderByClause orderByClause = new TSQLOrderByClauseParser().Parse(tokenizer); select.OrderBy = orderByClause; select.Tokens.AddRange(orderByClause.Tokens); } if (tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(tokenizer); select.Option = optionClause; select.Tokens.AddRange(optionClause.Tokens); } if ( tokenizer.Current != null && tokenizer.Current.Type == TSQLTokenType.Keyword) { tokenizer.Putback(); } return(select); }
public TSQLMergeStatement Parse() { TSQLMergeClause mergeClause = new TSQLMergeClauseParser().Parse(Tokenizer); Statement.Merge = mergeClause; Statement.Tokens.AddRange(mergeClause.Tokens); if (Tokenizer.Current.IsKeyword(TSQLKeywords.INTO)) { TSQLIntoClause intoClause = new TSQLMergeIntoClauseParser().Parse(Tokenizer); Statement.Into = intoClause; Statement.Tokens.AddRange(intoClause.Tokens); } if (Tokenizer.Current.IsFutureKeyword(TSQLFutureKeywords.USING)) { TSQLUsingClause usingClause = new TSQLUsingClauseParser().Parse(Tokenizer); Statement.Using = usingClause; Statement.Tokens.AddRange(usingClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.ON)) { TSQLOnClause onClause = new TSQLOnClauseParser().Parse(Tokenizer); Statement.On = onClause; Statement.Tokens.AddRange(onClause.Tokens); } while (Tokenizer.Current.IsKeyword(TSQLKeywords.WHEN)) { TSQLWhenClause whenClause = new TSQLWhenClauseParser().Parse(Tokenizer); Statement.When.Add(whenClause); Statement.Tokens.AddRange(whenClause.Tokens); } if (Tokenizer.Current.IsFutureKeyword(TSQLFutureKeywords.OUTPUT)) { TSQLOutputClause outputClause = new TSQLOutputClauseParser().Parse(Tokenizer); Statement.Output = outputClause; Statement.Tokens.AddRange(outputClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(Tokenizer); Statement.Option = optionClause; Statement.Tokens.AddRange(optionClause.Tokens); } return(Statement); }
public TSQLSelectStatement Parse() { // (SELECT 1) int level = 0; while (Tokenizer.Current.IsCharacter(TSQLCharacters.OpenParentheses)) { Statement.Tokens.Add(Tokenizer.Current); level++; Tokenizer.MoveNext(); TSQLTokenParserHelper.ReadCommentsAndWhitespace( Tokenizer, Statement); } TSQLSelectClause selectClause = new TSQLSelectClauseParser().Parse(Tokenizer); Statement.Select = selectClause; Statement.Tokens.AddRange(selectClause.Tokens); if (Tokenizer.Current.IsKeyword(TSQLKeywords.INTO)) { TSQLIntoClause intoClause = new TSQLIntoClauseParser().Parse(Tokenizer); Statement.Into = intoClause; Statement.Tokens.AddRange(intoClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.FROM)) { TSQLFromClause fromClause = new TSQLFromClauseParser().Parse(Tokenizer); Statement.From = fromClause; Statement.Tokens.AddRange(fromClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.WHERE)) { TSQLWhereClause whereClause = new TSQLWhereClauseParser().Parse(Tokenizer); Statement.Where = whereClause; Statement.Tokens.AddRange(whereClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.GROUP)) { TSQLGroupByClause groupByClause = new TSQLGroupByClauseParser().Parse(Tokenizer); Statement.GroupBy = groupByClause; Statement.Tokens.AddRange(groupByClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.HAVING)) { TSQLHavingClause havingClause = new TSQLHavingClauseParser().Parse(Tokenizer); Statement.Having = havingClause; Statement.Tokens.AddRange(havingClause.Tokens); } while (level > 0 && Tokenizer.Current.IsCharacter(TSQLCharacters.CloseParentheses)) { Statement.Tokens.Add(Tokenizer.Current); level--; Tokenizer.MoveNext(); } while (Tokenizer.Current?.AsKeyword != null && Tokenizer.Current.AsKeyword.Keyword.In( TSQLKeywords.UNION, TSQLKeywords.EXCEPT, TSQLKeywords.INTERSECT)) { TSQLSetOperatorClause set = new TSQLSetOperatorClauseParser().Parse(Tokenizer); Statement.SetOperators.Add(set); Statement.Tokens.AddRange(set.Tokens); } while (level > 0 && Tokenizer.Current.IsCharacter(TSQLCharacters.CloseParentheses)) { Statement.Tokens.Add(Tokenizer.Current); level--; Tokenizer.MoveNext(); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.ORDER)) { TSQLOrderByClause orderByClause = new TSQLOrderByClauseParser().Parse(Tokenizer); Statement.OrderBy = orderByClause; Statement.Tokens.AddRange(orderByClause.Tokens); } // order for OPTION and FOR doesn't seem to matter while ( Tokenizer.Current.IsKeyword(TSQLKeywords.FOR) || Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { if (Tokenizer.Current.IsKeyword(TSQLKeywords.FOR)) { TSQLForClause forClause = new TSQLForClauseParser().Parse(Tokenizer); Statement.For = forClause; Statement.Tokens.AddRange(forClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(Tokenizer); Statement.Option = optionClause; Statement.Tokens.AddRange(optionClause.Tokens); } } return(Statement); }
public TSQLSelectStatement Parse() { TSQLSelectClause selectClause = new TSQLSelectClauseParser().Parse(Tokenizer); Statement.Select = selectClause; Statement.Tokens.AddRange(selectClause.Tokens); if (Tokenizer.Current.IsKeyword(TSQLKeywords.INTO)) { TSQLIntoClause intoClause = new TSQLIntoClauseParser().Parse(Tokenizer); Statement.Into = intoClause; Statement.Tokens.AddRange(intoClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.FROM)) { TSQLFromClause fromClause = new TSQLFromClauseParser().Parse(Tokenizer); Statement.From = fromClause; Statement.Tokens.AddRange(fromClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.WHERE)) { TSQLWhereClause whereClause = new TSQLWhereClauseParser().Parse(Tokenizer); Statement.Where = whereClause; Statement.Tokens.AddRange(whereClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.GROUP)) { TSQLGroupByClause groupByClause = new TSQLGroupByClauseParser().Parse(Tokenizer); Statement.GroupBy = groupByClause; Statement.Tokens.AddRange(groupByClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.HAVING)) { TSQLHavingClause havingClause = new TSQLHavingClauseParser().Parse(Tokenizer); Statement.Having = havingClause; Statement.Tokens.AddRange(havingClause.Tokens); } if (Tokenizer.Current?.AsKeyword != null && Tokenizer.Current.AsKeyword.Keyword.In( TSQLKeywords.UNION, TSQLKeywords.EXCEPT, TSQLKeywords.INTERSECT)) { TSQLSetOperatorClause set = new TSQLSetOperatorClauseParser().Parse(Tokenizer); Statement.SetOperator = set; Statement.Tokens.AddRange(set.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.ORDER)) { TSQLOrderByClause orderByClause = new TSQLOrderByClauseParser().Parse(Tokenizer); Statement.OrderBy = orderByClause; Statement.Tokens.AddRange(orderByClause.Tokens); } // order for OPTION and FOR doesn't seem to matter while ( Tokenizer.Current.IsKeyword(TSQLKeywords.FOR) || Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { if (Tokenizer.Current.IsKeyword(TSQLKeywords.FOR)) { TSQLForClause forClause = new TSQLForClauseParser().Parse(Tokenizer); Statement.For = forClause; Statement.Tokens.AddRange(forClause.Tokens); } if (Tokenizer.Current.IsKeyword(TSQLKeywords.OPTION)) { TSQLOptionClause optionClause = new TSQLOptionClauseParser().Parse(Tokenizer); Statement.Option = optionClause; Statement.Tokens.AddRange(optionClause.Tokens); } } if ( Tokenizer.Current?.AsKeyword != null && Tokenizer.Current.AsKeyword.Keyword.IsStatementStart()) { Tokenizer.Putback(); } return(Statement); }