app.cash.sqldelight.dialects.sqlite_3_25.grammar.SqliteParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sqlite-3-25-dialect Show documentation
Show all versions of sqlite-3-25-dialect Show documentation
The SQLite v3.25 Dialect for SQLDelight
The newest version!
// This is a generated file. Not intended for manual editing.
package app.cash.sqldelight.dialects.sqlite_3_25.grammar;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static app.cash.sqldelight.dialects.sqlite_3_25.grammar.psi.SqliteTypes.*;
import static app.cash.sqldelight.dialects.sqlite_3_25.grammar.SqliteParserUtil.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.lang.ASTNode;
import com.intellij.psi.tree.TokenSet;
import com.intellij.lang.PsiParser;
import com.intellij.lang.LightPsiParser;
import static com.alecstrong.sql.psi.core.SqlParser.*;
import static com.alecstrong.sql.psi.core.SqlParserUtil.alterTableAddColumnExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.alterTableRenameTableExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.tableNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.columnAliasExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.resultColumnExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.joinClauseExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.groupByExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.valuesExpressionExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.columnNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.orderingTermExt;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ALL;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.AND;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.AS;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.BETWEEN;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.BY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.COLUMN;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.COMMA;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DISTINCT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DOT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.FROM;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.GROUP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.HAVING;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ID;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.LP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.MULTIPLY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.NO;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ORDER;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.PARTITION;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.RENAME;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ROW;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.RP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.SELECT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.TO;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.VALUES;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.WHERE;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.WINDOW;
@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
public class SqliteParser implements PsiParser, LightPsiParser {
public ASTNode parse(IElementType root_, PsiBuilder builder_) {
parseLight(root_, builder_);
return builder_.getTreeBuilt();
}
public void parseLight(IElementType root_, PsiBuilder builder_) {
boolean result_;
builder_ = adapt_builder_(root_, builder_, this, null);
Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null);
result_ = parse_root_(root_, builder_);
exit_section_(builder_, 0, marker_, root_, result_, true, TRUE_CONDITION);
}
protected boolean parse_root_(IElementType root_, PsiBuilder builder_) {
return parse_root_(root_, builder_, 0);
}
static boolean parse_root_(IElementType root_, PsiBuilder builder_, int level_) {
return root(builder_, level_ + 1);
}
/* ********************************************************** */
// id | string
public static boolean alter_table_column_alias_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "alter_table_column_alias_real")) return false;
if (!nextTokenIs(builder_, "", ID, STRING)) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, ALTER_TABLE_COLUMN_ALIAS, "");
result_ = consumeToken(builder_, ID);
if (!result_) result_ = consumeToken(builder_, STRING);
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
/* ********************************************************** */
// RENAME [ COLUMN ] <>>> TO <>
public static boolean alter_table_rename_column_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "alter_table_rename_column_real")) return false;
if (!nextTokenIs(builder_, RENAME)) return false;
boolean result_, pinned_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, ALTER_TABLE_RENAME_COLUMN, null);
result_ = consumeToken(builder_, RENAME);
pinned_ = result_; // pin = 1
result_ = result_ && report_error_(builder_, alter_table_rename_column_real_1(builder_, level_ + 1));
result_ = pinned_ && report_error_(builder_, columnNameExt(builder_, level_ + 1, alter_table_rename_column_real_2_0_parser_)) && result_;
result_ = pinned_ && report_error_(builder_, consumeToken(builder_, TO)) && result_;
result_ = pinned_ && alterTableColumnAliasExt(builder_, level_ + 1, SqliteParser::alter_table_column_alias_real) && result_;
exit_section_(builder_, level_, marker_, result_, pinned_, null);
return result_ || pinned_;
}
// [ COLUMN ]
private static boolean alter_table_rename_column_real_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "alter_table_rename_column_real_1")) return false;
consumeToken(builder_, COLUMN);
return true;
}
/* ********************************************************** */
// <>>>
// | <>>>
// | <>
public static boolean alter_table_rules_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "alter_table_rules_real")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, ALTER_TABLE_RULES, "");
result_ = alterTableAddColumnExt(builder_, level_ + 1, alter_table_rules_real_0_0_parser_);
if (!result_) result_ = alterTableRenameTableExt(builder_, level_ + 1, alter_table_rules_real_1_0_parser_);
if (!result_) result_ = alterTableRenameColumnExt(builder_, level_ + 1, SqliteParser::alter_table_rename_column_real);
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
/* ********************************************************** */
// id
public static boolean base_window_name_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "base_window_name_real")) return false;
if (!nextTokenIs(builder_, ID)) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, ID);
exit_section_(builder_, marker_, BASE_WINDOW_NAME, result_);
return result_;
}
/* ********************************************************** */
// ( 'RANGE' | 'ROWS' | 'GROUPS' )
// (
// BETWEEN (
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// ) AND (
// 'UNBOUNDED' 'FOLLOWING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// ) |
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING'
// ) [ 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES' ]
public static boolean frame_spec_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real")) return false;
boolean result_, pinned_;
Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, FRAME_SPEC, "");
result_ = frame_spec_real_0(builder_, level_ + 1);
pinned_ = result_; // pin = 1
result_ = result_ && report_error_(builder_, frame_spec_real_1(builder_, level_ + 1));
result_ = pinned_ && frame_spec_real_2(builder_, level_ + 1) && result_;
exit_section_(builder_, level_, marker_, result_, pinned_, null);
return result_ || pinned_;
}
// 'RANGE' | 'ROWS' | 'GROUPS'
private static boolean frame_spec_real_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_0")) return false;
boolean result_;
result_ = consumeToken(builder_, "RANGE");
if (!result_) result_ = consumeToken(builder_, "ROWS");
if (!result_) result_ = consumeToken(builder_, "GROUPS");
return result_;
}
// BETWEEN (
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// ) AND (
// 'UNBOUNDED' 'FOLLOWING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// ) |
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING'
private static boolean frame_spec_real_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = frame_spec_real_1_0(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_1(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_2(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// BETWEEN (
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// ) AND (
// 'UNBOUNDED' 'FOLLOWING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
// )
private static boolean frame_spec_real_1_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, BETWEEN);
result_ = result_ && frame_spec_real_1_0_1(builder_, level_ + 1);
result_ = result_ && consumeToken(builder_, AND);
result_ = result_ && frame_spec_real_1_0_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'UNBOUNDED' 'PRECEDING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
private static boolean frame_spec_real_1_0_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = frame_spec_real_1_0_1_0(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_1_1(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_1_2(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_1_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'UNBOUNDED' 'PRECEDING'
private static boolean frame_spec_real_1_0_1_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "UNBOUNDED");
result_ = result_ && consumeToken(builder_, "PRECEDING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'CURRENT' ROW
private static boolean frame_spec_real_1_0_1_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "CURRENT");
result_ = result_ && consumeToken(builder_, ROW);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> 'PRECEDING'
private static boolean frame_spec_real_1_0_1_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_2")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = expr(builder_, level_ + 1, -1);
result_ = result_ && consumeToken(builder_, "PRECEDING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> 'FOLLOWING'
private static boolean frame_spec_real_1_0_1_3(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_3")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = expr(builder_, level_ + 1, -1);
result_ = result_ && consumeToken(builder_, "FOLLOWING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'UNBOUNDED' 'FOLLOWING' |
// 'CURRENT' ROW |
// <> 'PRECEDING' |
// <> 'FOLLOWING'
private static boolean frame_spec_real_1_0_3(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = frame_spec_real_1_0_3_0(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_3_1(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_3_2(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_1_0_3_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'UNBOUNDED' 'FOLLOWING'
private static boolean frame_spec_real_1_0_3_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "UNBOUNDED");
result_ = result_ && consumeToken(builder_, "FOLLOWING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'CURRENT' ROW
private static boolean frame_spec_real_1_0_3_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "CURRENT");
result_ = result_ && consumeToken(builder_, ROW);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> 'PRECEDING'
private static boolean frame_spec_real_1_0_3_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_2")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = expr(builder_, level_ + 1, -1);
result_ = result_ && consumeToken(builder_, "PRECEDING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> 'FOLLOWING'
private static boolean frame_spec_real_1_0_3_3(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_3")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = expr(builder_, level_ + 1, -1);
result_ = result_ && consumeToken(builder_, "FOLLOWING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'UNBOUNDED' 'PRECEDING'
private static boolean frame_spec_real_1_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "UNBOUNDED");
result_ = result_ && consumeToken(builder_, "PRECEDING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'CURRENT' ROW
private static boolean frame_spec_real_1_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_2")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "CURRENT");
result_ = result_ && consumeToken(builder_, ROW);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> 'PRECEDING'
private static boolean frame_spec_real_1_3(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_1_3")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = expr(builder_, level_ + 1, -1);
result_ = result_ && consumeToken(builder_, "PRECEDING");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// [ 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES' ]
private static boolean frame_spec_real_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2")) return false;
frame_spec_real_2_0(builder_, level_ + 1);
return true;
}
// 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES'
private static boolean frame_spec_real_2_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = frame_spec_real_2_0_0(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_2_0_1(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_2_0_2(builder_, level_ + 1);
if (!result_) result_ = frame_spec_real_2_0_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'EXCLUDE' NO 'OTHERS'
private static boolean frame_spec_real_2_0_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "EXCLUDE");
result_ = result_ && consumeToken(builder_, NO);
result_ = result_ && consumeToken(builder_, "OTHERS");
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'EXCLUDE' 'CURRENT' ROW
private static boolean frame_spec_real_2_0_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "EXCLUDE");
result_ = result_ && consumeToken(builder_, "CURRENT");
result_ = result_ && consumeToken(builder_, ROW);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'EXCLUDE' GROUP
private static boolean frame_spec_real_2_0_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_2")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "EXCLUDE");
result_ = result_ && consumeToken(builder_, GROUP);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// 'EXCLUDE' 'TIES'
private static boolean frame_spec_real_2_0_3(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_3")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, "EXCLUDE");
result_ = result_ && consumeToken(builder_, "TIES");
exit_section_(builder_, marker_, null, result_);
return result_;
}
/* ********************************************************** */
// <> | <> | <>
public static boolean overrides_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "overrides_real")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, OVERRIDES, "");
result_ = alterTableRulesExt(builder_, level_ + 1, SqliteParser::alter_table_rules_real);
if (!result_) result_ = resultColumnExt(builder_, level_ + 1, SqliteParser::result_column_real);
if (!result_) result_ = selectStmtExt(builder_, level_ + 1, SqliteParser::select_stmt_real);
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
/* ********************************************************** */
// MULTIPLY
// | <>>> DOT MULTIPLY
// | (<> | <>) [ [ AS ] <>>> ]
public static boolean result_column_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, RESULT_COLUMN, "");
result_ = consumeToken(builder_, MULTIPLY);
if (!result_) result_ = result_column_real_1(builder_, level_ + 1);
if (!result_) result_ = result_column_real_2(builder_, level_ + 1);
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
// <>>> DOT MULTIPLY
private static boolean result_column_real_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = tableNameExt(builder_, level_ + 1, result_column_real_1_0_0_parser_);
result_ = result_ && consumeTokens(builder_, 0, DOT, MULTIPLY);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// (<> | <>) [ [ AS ] <>>> ]
private static boolean result_column_real_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_2")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = result_column_real_2_0(builder_, level_ + 1);
result_ = result_ && result_column_real_2_1(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// <> | <>
private static boolean result_column_real_2_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_2_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = windowFunctionInvocationExt(builder_, level_ + 1, SqliteParser::window_function_invocation_real);
if (!result_) result_ = expr(builder_, level_ + 1, -1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// [ [ AS ] <>>> ]
private static boolean result_column_real_2_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_2_1")) return false;
result_column_real_2_1_0(builder_, level_ + 1);
return true;
}
// [ AS ] <>>>
private static boolean result_column_real_2_1_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_2_1_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = result_column_real_2_1_0_0(builder_, level_ + 1);
result_ = result_ && columnAliasExt(builder_, level_ + 1, result_column_real_2_1_0_1_0_parser_);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// [ AS ]
private static boolean result_column_real_2_1_0_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "result_column_real_2_1_0_0")) return false;
consumeToken(builder_, AS);
return true;
}
/* ********************************************************** */
// <>
static boolean root(PsiBuilder builder_, int level_) {
return overridesExt(builder_, level_ + 1, SqliteParser::overrides_real);
}
/* ********************************************************** */
// SELECT [ DISTINCT | ALL ] <>>> ( COMMA <>>> ) * [ FROM <>>> ] [ WHERE <> ] [<>>>] [ HAVING <> ] [ WINDOW <> AS <> ( COMMA <> AS <> ) * ] | VALUES <>>> ( COMMA <>>> ) *
public static boolean select_stmt_real(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "select_stmt_real")) return false;
if (!nextTokenIs(builder_, "