001package gudusoft.gsqlparser.pp2.island;
002
003/**
004 * The kind of lexical island recognised by {@link IslandRecognizer}. An island
005 * is a contiguous run of tokens that the layout pipeline treats as a unit.
006 *
007 * <p>Plan reference: §6 (island/IslandKind), §7.3/S22, §7.4/S22.
008 */
009public enum IslandKind {
010
011    /** SELECT projection list. */
012    SELECT,
013    /** FROM table list (before any JOIN). */
014    FROM,
015    /** JOIN clause (JOIN/ON/USING/APPLY and operands). */
016    JOIN,
017    /** WHERE predicate. */
018    WHERE,
019    /** GROUP BY list. */
020    GROUP_BY,
021    /** HAVING predicate. */
022    HAVING,
023    /** ORDER BY list. */
024    ORDER_BY,
025    /** INTO target (INSERT INTO / SELECT INTO). */
026    INTO,
027    /** INSERT VALUES list. */
028    INSERT_VALUES,
029    /** UPDATE SET assignment list. */
030    UPDATE_SET,
031    /** A parenthesised subquery / derived table (not a CTE body). */
032    SUBQUERY,
033    /** A CTE body ({@code WITH x AS ( ... )}). */
034    CTE,
035    /** A CASE ... END expression/statement. */
036    CASE,
037    /** A MERGE statement. */
038    MERGE,
039    /** An unrecoverable / unclassifiable span. */
040    ERROR_REGION,
041    /** Anything not otherwise classified. */
042    OTHER
043}