fastmodel-ide/fastmodel-ide-open-front/antlr/FastModelLexer.g4 (457 lines of code) (raw):

lexer grammar FastModelLexer; channels { WS_CHANNEL, COMMENT_CHANNEL } KW_CREATE : C R E A T E ; KW_ALTER: A L T E R ; KW_PROCESS : B U S I N E S S '_' P R O C E S S ; KW_PROCESSES : B U S I N E S S '_' P R O C E S S E S ; KW_BUSINESS_CATEGORY : B U S I N E S S '_' C A T E G O R Y ; KW_BUSINESS_CATEGORIES : B U S I N E S S '_' C A T E G O R I E S ; KW_DOMAIN : D O M A I N ; KW_DOMAINS : D O M A I N S ; KW_TABLE : T A B L E ; KW_TABLES : T A B L E S ; KW_TYPE : T Y P E ; KW_DIALECT : D I A L E C T ; KW_FULL_BU : B U S I N E S S '_' U N I T ; KW_FULL_BUS : B U S I N E S S '_' U N I T S ; KW_ADJUNCT : A D J U N C T ; KW_ADJUNCTS : A D J U N C T S ; KW_DICT : D I C T ; KW_DICTS : D I C T S ; KW_TIMEPERIOD : T I M E '_' P E R I O D ; KW_TIMEPERIODS : T I M E '_' P E R I O D S ; KW_MEASUREUNIT : M E A S U R E '_' U N I T ; KW_MEASUREUNITS : M E A S U R E '_' U N I T S ; KW_INDICATOR : I N D I C A T O R ; KW_INDICATORS : I N D I C A T O R S ; KW_BATCH : B A T C H ; KW_BATCHES : B A T C H E S ; KW_PATH : P A T H ; KW_COLUMN: C O L U M N ; KW_CHECKER : C H E C K E R ; KW_LAYER : L A Y E R ; KW_CODE : C O D E ; KW_CODES : C O D E S ; KW_COlGROUP : C O L U M N '_' G R O U P ; KW_ATTRIBUTE : A T T R I B U T E ; KW_MEASUREMENT : M E A S U R E M E N T ; KW_CORRELATION : C O R R E L A T I O N ; KW_PARTITIONED : P A R T I T I O N E D ; KW_INCLUDE : I N C L U D E ; KW_EXCLUDE : E X C L U D E ; KW_CHECKERS : C H E C K E R S ; KW_LAYERS : L A Y E R S ; KW_DROP: D R O P ; KW_RENAME: R E N A M E ; KW_USE : U S E ; KW_TO: T O ; KW_COMMENT : C O M M E N T ; KW_SHOW : S H O W ; KW_OUTPUT : O U T P U T ; KW_INSERT : I N S E R T ; KW_INTO : I N T O ; KW_AS : A S ; KW_IF : I F ; KW_OR : O R ; KW_IN : I N ; KW_DATEFIELD: D A T E '_' F I E L D ; KW_DELETE : D E L E T E ; KW_ALIAS : A L I A S ; KW_DIMENSION : D I M E N S I O N ; KW_DIMENSIONS : D I M E N S I O N S ; KW_ATTRIBUTES : A T T R I B U T E S ; KW_DIM_ATTRIBUTES : D I M '_' A T T R I B U T E S ; KW_SUBJECT : S U B J E C T ; KW_SUBJECTS : S U B J E C T S ; KW_MARKET : M A R K E T ; KW_MARKETS : M A R K E T S ; KW_CURRENT: C U R R E N T ; KW_CURRENT_DATE: C U R R E N T '_' D A T E ; KW_CURRENT_TIMESTAMP: C U R R E N T '_' T I M E S T A M P ; KW_GROUPING: G R O U P I N G ; KW_UNNEST: U N N E S T ; KW_LATERAL: L A T E R A L ; KW_VIEW : V I E W ; KW_LIKE : L I K E ; KW_TRUE : T R U E ; KW_FALSE : F A L S E ; KW_CAST : C A S T ; KW_HAVING : H A V I N G ; KW_ORDER : O R D E R ; KW_GROUP : G R O U P ; KW_BY : B Y ; KW_WHERE : W H E R E ; KW_PERCENT : P E R C E N T ; KW_OF : O F ; KW_EXISTS : E X I S T S ; KW_NOT : 'NOT' | '!'; KW_VALUES : V A L U E S ; KW_ON : O N ; KW_USING : U S I N G ; KW_PRESERVE : P R E S E R V E ; KW_JOIN : J O I N ; KW_NATURAL : N A T U R A L ; KW_LEFT : L E F T ; KW_RIGHT : R I G H T ; KW_FULL : F U L L ; KW_INNER: I N N E R ; KW_CROSS : C R O S S ; KW_OUTER : O U T E R ; KW_SEMI : S E M I ; KW_TABLESAMPLE : T A B L E S A M P L E ; KW_TRUNCATE : T R U N C A T E ; KW_DWS : D W S ; KW_ADS : A D S ; KW_OVERWRITE : O V E R W R I T E ; KW_BINARY: B I N A R Y ; KW_PRECISION : P R E C I S I O N ; KW_NULL: N U L L ; KW_BOOLEAN: B O O L E A N ; KW_TINYINT: T I N Y I N T ; KW_SMALLINT: S M A L L I N T ; KW_INT: I N T ; KW_BIGINT: B I G I N T ; KW_FLOAT: F L O A T ; KW_DOUBLE: D O U B L E ; KW_DATE: D A T E ; KW_DATETIME: D A T E T I M E ; KW_TIMESTAMP: T I M E S T A M P ; KW_DECIMAL: D E C I M A L ; KW_STRING: S T R I N G ; KW_CHAR: C H A R ; KW_VARCHAR: V A R C H A R ; KW_CUSTOM: C U S T O M ; KW_ARRAY: A R R A Y ; KW_STRUCT: S T R U C T ; KW_MAP: M A P ; KW_WITH: W I T H ; KW_SET: S E T ; KW_UNSET: U N S E T ; KW_ORDINALITY: O R D I N A L I T Y ; KW_LEVEL: L E V E L ; KW_ENUM: E N U M ; KW_PERIODIC_SNAPSHOT : P E R I O D I C '_' S N A P S H O T ; KW_ACCUMULATING_SNAPSHOT : A C C U M U L A T I N G '_' S N A P S H O T ; KW_AGGREGATE : A G G R E G A T E ; KW_CONSOLIDATED : C O N S O L I D A T E D ; KW_TRANSACTION : T R A N S A C T I O N ; KW_FACTLESS : F A C T L E S S ; KW_NORMAL : N O R M A L ; KW_ADVANCED : A D V A N C E D ; KW_MATERIALIZED: M A T E R I A L I Z E D ; KW_ENGINE: E N G I N E ; KW_PROPERTIES: P R O P E R T I E S ; KW_FLOOR: F L O O R ; KW_ATOMIC: A T O M I C ; KW_COMPOSITE: C O M P O S I T E ; KW_DERIVATIVE: D E R I V A T I V E ; KW_CALL : C A L L ; KW_CASE: C A S E ; KW_WHEN: W H E N ; KW_THEN: T H E N ; KW_ELSE: E L S E ; KW_END: E N D ; KW_LIMIT: L I M I T ; KW_OFFSET: O F F S E T ; KW_UNION: U N I O N ; KW_DISTINCT: D I S T I N C T ; KW_ALL: A L L ; KW_INTERSECT: I N T E R S E C T ; KW_EXCEPT: E X C E P T ; KW_SELECT: S E L E C T ; KW_FROM: F R O M ; KW_AND: A N D ; KW_BETWEEN: B E T W E E N ; KW_IS: I S ; KW_DIM: D I M ; KW_FACT: F A C T ; KW_PRIMARY: P R I M A R Y ; KW_KEY: K E Y ; KW_CHANGE: C H A N G E ; KW_COLUMNS: C O L U M N S ; KW_ADD: A D D ; KW_REPLACE: R E P L A C E ; KW_CONSTRAINT: C O N S T R A I N T ; KW_ASC: A S C ; KW_DESC: D E S C ; KW_DESCRIBE : D E S C R I B E ; KW_REFERENCES: R E F E R E N C E S ; KW_INTERVAL: I N T E R V A L ; KW_YEAR: Y E A R ; KW_QUARTER: Q U A R T E R ; KW_MONTH: M O N T H ; KW_WEEK: W E E K ; KW_DAY: D A Y ; KW_DOW: D A Y O F W E E K ; KW_HOUR: H O U R ; KW_MINUTE: M I N U T E ; KW_SECOND: S E C O N D ; KW_TRANSFORM: T R A N S F O R M ; KW_REDUCE: R E D U C E ; KW_WINDOW: W I N D O W ; KW_ROWS: R O W S ; KW_RANGE: R A N G E ; KW_GROUPS: G R O U P S ; KW_IGNORE: I G N O R E ; KW_RESPECT: R E S P E C T ; KW_UNBOUNDED: U N B O U N D E D ; KW_PRECEDING: P R E C E D I N G ; KW_ROW: R O W ; KW_FOLLOWING: F O L L O W I N G ; KW_ROLLUP: R O L L U P ; KW_CUBE: C U B E ; KW_SETS: S E T S ; KW_CLUSTER: C L U S T E R ; KW_PARTITION: P A R T I T I O N ; KW_DISTRIBUTE: D I S T R I B U T E ; KW_SORT: S O R T ; KW_OVER: O V E R ; KW_FILTER: F I L T E R ; KW_EXTRACT: E X T R A C T ; KW_TIMESTAMPLOCALTZ: T I M E S T A M P L O C A L T Z ; KW_UNIONTYPE: U N I O N T Y P E ; KW_RLIKE: R L I K E ; KW_REGEXP: R E G E X P ; KW_ANY: A N Y ; KW_DEFAULT: D E F A U L T ; KW_BERNOULLI: B E R N O U L L I ; KW_SYSTEM: S Y S T E M ; KW_RECURSIVE: R E C U R S I V E ; KW_FETCH: F E T C H ; KW_FIRST: F I R S T ; KW_NEXT: N E X T ; KW_ONLY: O N L Y ; KW_TIES: T I E S ; KW_NULLS: N U L L S ; KW_LAST: L A S T ; KW_ENABLE: E N A B L E ; KW_DISABLE: D I S A B L E ; KW_VALIDATE: V A L I D A T E ; KW_NOVALIDATE: N O V A L I D A T E ; KW_RELY: R E L Y ; KW_NORELY: N O R E L Y ; KW_ENFORCED: E N F O R C E D ; KW_FOR: F O R ; KW_SUBSTRING: S U B S T R I N G ; KW_PIPE : P I P E ; KW_TARGET : T A R G E T ; KW_TARGET_TYPE : T A R G E T '_' T Y P E ; KW_URL : U R L ; KW_USER : U S E R ; KW_PASSWORD : P A S S W O R D ; KW_SYNC : S Y N C ; KW_ASYNC : A S Y N C ; KW_COPY : C O P Y ; KW_BIZ_DATE : B I Z '_' D A T E ; KW_COPY_MODE : C O P Y '_' M O D E ; KW_SOURCE : S O U R C E ; KW_RULES : R U L E S ; KW_SQL : S Q L ; KW_TASK : T A S K ; KW_STRONG : S T R O N G ; KW_WEAK : W E A K ; KW_RULE : R U L E ; KW_INCREASE : I N C R E A S E ; KW_DECREASE : D E C R E A S E ; KW_DYNAMIC : D Y N A M I C ; KW_DQC_RULE : D Q C '_' R U L E ; KW_CHECK : C H E C K ; KW_NAMING : N A M I N G ; KW_REL_DIMENSION : R E L '_' D I M E N S I O N ; KW_REL_INDICATOR : R E L '_' I N D I C A T O R ; KW_STAT_TIME : S T A T '_' T I M E ; KW_REDUNDANT : R E D U N D A N T ; KW_EXP : E X P ; KW_EXPORT : E X P O R T ; KW_IMPORT : I M P O R T ; KW_IMPORT_SQL : 'IMP_SQL' | 'IMPORT_SQL'; KW_EXPORT_SQL : 'EXP_SQL' | 'EXPORT_SQL'; KW_UNIQUE : U N I Q U E ; KW_INDEX : I N D E X ; KW_RENDER : R E N D E R ; KW_REF : R E F ; EQUAL:'='; LESSTHAN:'<'; GREATERTHAN:'>'; EQUAL_NS : '<=>'; NOTEQUAL : '<>' | '!='; LESSTHANOREQUALTO : '<='; GREATERTHANOREQUALTO : '>='; LEFT_DIRECTION_RIGHT : '->'; RIGHT_DIRECTON_LEFT : '<-'; DOT : '.'; // generated as a part of Number rule COLON : ':' ; COMMA : ',' ; SEMICOLON : ';' ; LPAREN : '(' ; RPAREN : ')' ; LSQUARE : '[' ; RSQUARE : ']' ; LCURLY : '{'; RCURLY : '}'; DIVIDE : '/'; PLUS : '+'; MINUS : '-'; MINUSMINUS : '--'; STAR : '*'; MOD : '%'; DIV : D I V ; MODE_OPTION : MINUS M; TEXT_OPTION : MINUS T; URI_OPTION : MINUS U; AMPERSAND : '&'; TILDE : '~'; BITWISEOR : '|'; CONCATENATE : '||'; BITWISEXOR : '^'; QUESTION : '?'; DOLLAR : '$'; MACRO : '#'; // LITERALS fragment Letter : 'a'..'z' | 'A'..'Z' ; fragment Digit : '0'..'9' ; TIME_ID: ('0'..'9')+ ('a'..'z' | 'A'..'Z')+; fragment RegexComponent : 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' | PLUS | STAR | QUESTION | MINUS | DOT | LPAREN | RPAREN | LSQUARE | RSQUARE | LCURLY | RCURLY | BITWISEXOR | BITWISEOR | DOLLAR | '!' ; StringLiteral : ( '\'' ( ~('\''|'\\') | ('\\' .) )* '\'' | '"' ( ~('"'|'\\') | ('\\' .) )* '"' )+ ; fragment CharSetName : '_' (Letter | Digit | '_' | '-' | '.' | ':' )+ ; fragment CharSetLiteral : StringLiteral | '0' 'X' (HexDigit|Digit)+ ; NumberLiteral : Number ('D' | 'B' 'D') ; ByteLengthLiteral : (Digit)+ ('b' | 'B' | 'k' | 'K' | 'm' | 'M' | 'g' | 'G') ; INTEGER_VALUE : DIGIT+ ; DECIMAL_VALUE : DIGIT+ '.' DIGIT* ; DOUBLE_VALUE : DIGIT+ ('.' DIGIT*)? EXPONENT ; Number : (Digit)+ ( DOT (Digit)* (Exponent)? | Exponent)? ; // Ported from Java.g fragment IDLetter : '\u0024' | '\u0041'..'\u005a' | '\u005f' | '\u0061'..'\u007a' | '\u00c0'..'\u00d6' | '\u00d8'..'\u00f6' | '\u00f8'..'\u00ff' | '\u0100'..'\u1fff' | '\u3040'..'\u318f' | '\u3300'..'\u337f' | '\u3400'..'\u3d2d' | '\u4e00'..'\u9fff' | '\uf900'..'\ufaff' ; fragment IDDigit : '\u0030'..'\u0039' | '\u0660'..'\u0669' | '\u06f0'..'\u06f9' | '\u0966'..'\u096f' | '\u09e6'..'\u09ef' | '\u0a66'..'\u0a6f' | '\u0ae6'..'\u0aef' | '\u0b66'..'\u0b6f' | '\u0be7'..'\u0bef' | '\u0c66'..'\u0c6f' | '\u0ce6'..'\u0cef' | '\u0d66'..'\u0d6f' | '\u0e50'..'\u0e59' | '\u0ed0'..'\u0ed9' | '\u1040'..'\u1049' ; fragment Substitution : DOLLAR LCURLY (IDLetter | IDDigit) (IDLetter | IDDigit | '_' )* RCURLY ; Identifier : (IDLetter | IDDigit) (IDLetter | IDDigit | '_' | Substitution)* | QuotedIdentifier /* though at the language level we allow all Identifiers to be QuotedIdentifiers; at the API level only columns are allowed to be of this form */ | '`' RegexComponent+ '`' ; QuotedIdentifier : '`' ( '``' | ~('`') )* '`' ; SINGLE_LINE_COMMENT: '--' ~[\r\n]* (('\r'? '\n') | EOF) -> channel(HIDDEN); HINT_START : '/*+' ; HINT_END : '*/'; MULTILINE_COMMENT: '/*' .*? ( '*/' | EOF) -> channel(HIDDEN); WS : (' '|'\r'|'\t'|'\n') -> channel(HIDDEN); fragment Exponent : ('e' | 'E') ( PLUS|MINUS )? (Digit)+ ; fragment HexDigit : 'a'..'f' | 'A'..'F' ; fragment DIGIT : [0-9] ; fragment EXPONENT : 'E' [+-]? DIGIT+ ; fragment A: [aA]; fragment B: [bB]; fragment C: [cC]; fragment D: [dD]; fragment E: [eE]; fragment F: [fF]; fragment G: [gG]; fragment H: [hH]; fragment I: [iI]; fragment J: [jJ]; fragment K: [kK]; fragment L: [lL]; fragment M: [mM]; fragment N: [nN]; fragment O: [oO]; fragment P: [pP]; fragment Q: [qQ]; fragment R: [rR]; fragment S: [sS]; fragment T: [tT]; fragment U: [uU]; fragment V: [vV]; fragment W: [wW]; fragment X: [xX]; fragment Y: [yY]; fragment Z: [zZ]; UNRECOGNIZED : . ;