syntax.bsl-parser.0.25.0.source-code.SDBLLexer.g4 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bsl-parser Show documentation
Show all versions of bsl-parser Show documentation
Collection of parsers for Language 1C (BSL) in ANTLR4 format.
The newest version!
/**
* This file is a part of BSL Parser.
*
* Copyright © 2018-2022
* Alexey Sosnoviy , Nikita Fedkin , Sergey Batanov
*
* SPDX-License-Identifier: LGPL-3.0-or-later
*
* BSL Parser is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* BSL Parser is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with BSL Parser.
*/
/**
* @author Maximov Valery
*/
lexer grammar SDBLLexer;
@members {
public SDBLLexer(CharStream input, boolean crAwareCostructor) {
super(input);
_interp = new CRAwareLexerATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
}
}
// COMMONS
WHITE_SPACE: [ \t\f\r\n]+ -> channel(HIDDEN);
LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN);
// SEPARATORS
DOT: '.' -> pushMode(DOT_MODE);
LPAREN: '(';
RPAREN: ')';
SEMICOLON: ';';
COMMA: ',';
ASSIGN: '=';
PLUS: '+';
MINUS: '-';
LESS_OR_EQUAL: '<=';
NOT_EQUAL: '<>';
LESS: '<';
GREATER_OR_EQUAL: '>=';
GREATER: '>';
MUL: '*';
QUOTIENT: '/';
AMPERSAND: '&' -> pushMode(PARAMETER_MODE);
BRACE: '{' -> pushMode(BRACE_MODE), channel(HIDDEN);
// KEYWORDS RU EN
ALLOWED: RU_R RU_A RU_Z RU_R RU_E RU_SH RU_E RU_N RU_N RU_Y RU_E | A L L O W E D;
AND: RU_I | A N D;
AS: (RU_K RU_A RU_K | A S) -> pushMode(ID_MODE);
ASC: RU_V RU_O RU_Z RU_R | A S C;
AUTOORDER: RU_A RU_V RU_T RU_O RU_U RU_P RU_O RU_R RU_YA RU_D RU_O
RU_CH RU_I RU_V RU_A RU_N RU_I RU_E | A U T O O R D E R;
BETWEEN: RU_M RU_E RU_ZH RU_D RU_U | B E T W E E N;
BY_EN: B Y;
CASE: RU_V RU_Y RU_B RU_O RU_R | C A S E;
CAST: RU_V RU_Y RU_R RU_A RU_Z RU_I RU_T RU_SOFT_SIGN | C A S T;
DESC: RU_U RU_B RU_Y RU_V | D E S C;
DISTINCT: RU_R RU_A RU_Z RU_L RU_I RU_CH RU_N RU_Y RU_E | D I S T I N C T;
DROP: (RU_U RU_N RU_I RU_CH RU_T RU_O RU_ZH RU_I RU_T RU_SOFT_SIGN | D R O P) -> pushMode(ID_MODE);
ELSE: RU_I RU_N RU_A RU_CH RU_E | E L S E;
END: RU_K RU_O RU_N RU_E RU_C | E N D;
ESCAPE: RU_S RU_P RU_E RU_C RU_S RU_I RU_M RU_V RU_O RU_L | E S C A P E;
FALSE: RU_L RU_O RU_ZH RU_SOFT_SIGN | F A L S E;
FROM: RU_I RU_Z | F R O M;
HAVING: RU_I RU_M RU_E RU_YU RU_SCH RU_I RU_E | H A V I N G;
HIERARCHY: RU_I RU_E RU_R RU_A RU_R RU_H RU_I RU_YA | H I E R A R C H Y;
INTO: RU_P RU_O RU_M RU_E RU_S RU_T RU_I RU_T RU_SOFT_SIGN | I N T O;
IS: RU_E RU_S RU_T RU_SOFT_SIGN | I S;
ISNULL: RU_E RU_S RU_T RU_SOFT_SIGN N U L L | I S N U L L;
LIKE: RU_P RU_O RU_D RU_O RU_B RU_N RU_O | L I K E;
NOT: RU_N RU_E | N O T;
NULL: N U L L;
OF: O F;
ON_EN: O N;
OR: RU_I RU_L RU_I | O R;
OVERALL: RU_O RU_B RU_SCH RU_I RU_E | O V E R A L L;
PO_RU: RU_P RU_O;
SELECT: RU_V RU_Y RU_B RU_R RU_A RU_T RU_SOFT_SIGN | S E L E C T;
THEN: RU_T RU_O RU_G RU_D RU_A | T H E N;
TOP: RU_P RU_E RU_R RU_V RU_Y RU_E | T O P;
TOTALS: RU_I RU_T RU_O RU_G RU_I | T O T A L S;
TRUE: RU_I RU_S RU_T RU_I RU_N RU_A | T R U E;
UNDEFINED: RU_N RU_E RU_O RU_P RU_R RU_E RU_D RU_E RU_L RU_E RU_N RU_O | U N D E F I N E D;
WHEN: RU_K RU_O RU_G RU_D RU_A | W H E N;
WHERE: RU_G RU_D RU_E | W H E R E;
// KEYWORDS RU EN
ACOS: A C O S;
ASIN: A S I N;
ATAN: A T A N;
AVG: RU_S RU_R RU_E RU_D RU_N RU_E RU_E | A V G;
BEGINOFPERIOD: RU_N RU_A RU_CH RU_A RU_L RU_O RU_P RU_E RU_R RU_I RU_O RU_D RU_A | B E G I N O F P E R I O D;
BOOLEAN: RU_B RU_U RU_L RU_E RU_V RU_O | B O O L E A N;
COS: C O S;
COUNT: RU_K RU_O RU_L RU_I RU_CH RU_E RU_S RU_T RU_V RU_O | C O U N T;
DATE: RU_D RU_A RU_T RU_A | D A T E;
DATEADD: RU_D RU_O RU_B RU_A RU_V RU_I RU_T RU_SOFT_SIGN RU_K RU_D RU_A RU_T RU_E | D A T E A D D;
DATEDIFF: RU_R RU_A RU_Z RU_N RU_O RU_S RU_T RU_SOFT_SIGN RU_D RU_A RU_T | D A T E D I F F;
DATETIME: RU_D RU_A RU_T RU_A RU_V RU_R RU_E RU_M RU_YA | D A T E T I M E;
DAY: RU_D RU_E RU_N RU_SOFT_SIGN | D A Y;
DAYOFYEAR: RU_D RU_E RU_N RU_SOFT_SIGN RU_G RU_O RU_D RU_A | D A Y O F Y E A R;
EMPTYTABLE: RU_P RU_U RU_S RU_T RU_A RU_YA RU_T RU_A RU_B RU_L RU_I RU_C RU_A | E M P T Y T A B L E;
EMPTYREF: RU_P RU_U RU_S RU_T RU_A RU_YA RU_S RU_S RU_Y RU_L RU_K RU_A | E M P T Y R E F;
ENDOFPERIOD: RU_K RU_O RU_N RU_E RU_C RU_P RU_E RU_R RU_I RU_O RU_D RU_A | E N D O F P E R I O D;
EXP: E X P;
// TODO найти англ вариант GROUPEDBY: RU_S RU_G RU_R RU_U RU_P RU_P RU_I RU_R RU_O RU_V RU_A RU_N RU_O RU_P RU_O | УТОНИЧТЬ;
HALFYEAR: RU_P RU_O RU_L RU_U RU_G RU_O RU_D RU_I RU_E | H A L F Y E A R;
HOUR: RU_CH RU_A RU_S | H O U R;
// TODO добавить метод лев без конфликта с левым соединением LEFT: RU_L RU_E RU_V | L E F T;
INT: RU_C RU_E RU_L | I N T;
LOG: L O G;
LOG10: L O G NUM_1 NUM_0;
LOWER: RU_N RU_R RU_E RU_G | L O W E R;
MAX: RU_M RU_A RU_K RU_S RU_I RU_M RU_U RU_M | M A X;
MIN: RU_M RU_I RU_N RU_I RU_M RU_U RU_M | M I N;
MINUTE: RU_M RU_I RU_N RU_U RU_T RU_A | M I N U T E;
MONTH: RU_M RU_E RU_S RU_YA RU_C | M O N T H;
NUMBER: RU_CH RU_I RU_S RU_L RU_O | N U M B E R;
QUARTER: RU_K RU_V RU_A RU_R RU_T RU_A RU_L | Q U A R T E R;
ONLY: RU_T RU_O RU_L RU_SOFT_SIGN RU_K RU_O | O N L Y;
PERIODS: RU_P RU_E RU_R RU_I RU_O RU_D RU_A RU_M RU_I | P E R I O D S;
REFS: RU_S RU_S RU_Y RU_L RU_K RU_A | R E F S;
PRESENTATION: RU_P RU_R RU_E RU_D RU_S RU_T RU_A RU_V RU_L RU_E RU_N RU_I RU_E | P R E S E N T A T I O N;
RECORDAUTONUMBER:
RU_A RU_V RU_T RU_O RU_N RU_O RU_M RU_E RU_R RU_Z RU_A RU_P RU_I RU_S RU_I | R E C O R D A U T O N U M B E R;
REFPRESENTATION:
RU_P RU_R RU_E RU_D RU_S RU_T RU_A RU_V RU_L RU_E RU_N RU_I RU_E RU_S RU_S RU_Y RU_L RU_K RU_I
| R E F P R E S E N T A T I O N;
POW: P O W;
// TODO см Лев RIGHT: RU_P RU_R RU_A RU_V | R I G H T;
ROUND: RU_O RU_K RU_R | R O U N D;
SECOND: RU_S RU_E RU_K RU_U RU_N RU_D RU_A | S E C O N D;
SIN: S I N;
SQRT: S Q R T;
STOREDDATASIZE: RU_R RU_A RU_Z RU_M RU_E RU_R RU_H RU_R RU_A RU_N RU_I RU_M RU_Y RU_H RU_D RU_A RU_N RU_N RU_Y RU_H
| S T O R E D D A T A S I Z E;
STRING: RU_S RU_T RU_R RU_O RU_K RU_A | S T R I N G;
STRINGLENGTH: RU_D RU_L RU_I RU_N RU_A RU_S RU_T RU_R RU_O RU_K RU_I | S T R I N G L E N G T H;
STRFIND: RU_S RU_T RU_R RU_N RU_A RU_J RU_T RU_I | S T R F I N D;
STRREPLACE: RU_S RU_T RU_R RU_Z RU_A RU_M RU_E RU_N RU_I RU_T RU_SOFT_SIGN | S T R R E P L A C E;
SUBSTRING: RU_P RU_O RU_D RU_S RU_T RU_R RU_O RU_K RU_A | S U B S T R I N G;
SUM: RU_S RU_U RU_M RU_M RU_A | S U M;
TAN: T A N;
TENDAYS: RU_D RU_E RU_K RU_A RU_D RU_A | T E N D A Y S;
TRIMALL: RU_S RU_O RU_K RU_R RU_L RU_P | T R I M A L L;
TRIML: RU_S RU_O RU_K RU_R RU_L | T R I M L;
TRIMR: RU_S RU_O RU_K RU_R RU_P | T R I M R;
TYPE: RU_T RU_I RU_P | T Y P E;
UPPER: RU_V RU_R RU_E RU_G | U P P E R;
VALUE: RU_Z RU_N RU_A RU_CH RU_E RU_N RU_I RU_E | V A L U E;
VALUETYPE: RU_T RU_I RU_P RU_Z RU_N RU_A RU_CH RU_E RU_N RU_I RU_YA | V A L U E T Y P E;
WEEK: RU_N RU_E RU_D RU_E RU_L RU_YA | W E E K;
WEEKDAY: RU_D RU_E RU_N RU_SOFT_SIGN RU_N RU_E RU_D RU_E RU_L RU_I | W E E K D A Y;
YEAR: RU_G RU_O RU_D | Y E A R;
UUID: RU_U RU_N RU_I RU_K RU_A RU_L RU_SOFT_SIGN RU_N RU_Y RU_J RU_I RU_D RU_E RU_N RU_T RU_I RU_F RU_I RU_K RU_A RU_T RU_O RU_R
| U U I D;
// MDO TYPES RU EN
ACCOUNTING_REGISTER_TYPE:
REGISTER_RU RU_B RU_U RU_H RU_G RU_A RU_L RU_T RU_E RU_R RU_I RU_I | A C C O U N T I N G REGISTER_EN;
ACCUMULATION_REGISTER_TYPE:
REGISTER_RU RU_N RU_A RU_K RU_O RU_P RU_L RU_E RU_N RU_I RU_YA | A C C U M U L A T I O N REGISTER_EN;
BUSINESS_PROCESS_TYPE:
RU_B RU_I RU_Z RU_N RU_E RU_S RU_P RU_R RU_O RU_C RU_E RU_S RU_S | B U S I N E S S P R O C E S S;
CALCULATION_REGISTER_TYPE:
REGISTER_RU RU_R RU_A RU_S RU_CH RU_E RU_T RU_A | C A L C U L A T I O N REGISTER_EN;
CATALOG_TYPE: RU_S RU_P RU_R RU_A RU_V RU_O RU_CH RU_N RU_I RU_K | C A T A L O G;
CHART_OF_ACCOUNTS_TYPE:
PLAN_RU RU_S RU_CH RU_E RU_T RU_O RU_V | PLAN_EN A C C O U N T S;
CHART_OF_CALCULATION_TYPES_TYPE:
PLAN_RU RU_V RU_I RU_D RU_O RU_V RU_R RU_A RU_S RU_CH RU_E RU_T RU_A | PLAN_EN C A L C U L A T I O N T Y P E S;
CHART_OF_CHARACTERISTIC_TYPES_TYPE:
PLAN_RU RU_V RU_I RU_D RU_O RU_V RU_H RU_A RU_R RU_A RU_K RU_T RU_E RU_R RU_I RU_S RU_T RU_I RU_K
| PLAN_EN C H A R A C T E R I S T I C T Y P E S;
CONSTANT_TYPE: RU_K RU_O RU_N RU_S RU_T RU_A RU_N RU_T RU_A | C O N S T A N T;
DOCUMENT_TYPE: DOCUMENT_RU | DOCUMENT_EN;
DOCUMENT_JOURNAL_TYPE:
RU_ZH RU_U RU_R RU_N RU_A RU_L DOCUMENT_RU RU_O RU_V | DOCUMENT_EN J O U R N A L;
ENUM_TYPE: RU_P RU_E RU_R RU_E RU_CH RU_I RU_S RU_L RU_E RU_N RU_I RU_E | E N U M;
EXCHANGE_PLAN_TYPE:
PLAN_RU RU_O RU_B RU_M RU_E RU_N RU_A | E X C H A N G E P L A N;
EXTERNAL_DATA_SOURCE_TYPE:
(RU_V RU_N RU_E RU_SH RU_N RU_I RU_J RU_I RU_S RU_T RU_O RU_CH RU_N RU_I RU_K RU_D RU_A RU_N RU_N RU_Y RU_H
| E X T E R N A L D A T A S O U R C E) -> pushMode(EXTERNAL_DATA_SOURCE_MODE);
FILTER_CRITERION_TYPE:
RU_K RU_R RU_I RU_T RU_E RU_R RU_I RU_J RU_O RU_T RU_B RU_O RU_R RU_A | F I L T E R C R I T E R I O N;
INFORMATION_REGISTER_TYPE:
REGISTER_RU RU_S RU_V RU_E RU_D RU_E RU_N RU_I RU_J | I N F O R M A T I O N REGISTER_EN;
SEQUENCE_TYPE:
RU_P RU_O RU_S RU_L RU_E RU_D RU_O RU_V RU_A RU_T RU_E RU_L RU_SOFT_SIGN RU_N RU_O RU_S RU_T RU_SOFT_SIGN
| S E Q U E N C E;
TASK_TYPE : RU_Z RU_A RU_D RU_A RU_CH RU_A | T A S K;
// FIELDS RU EN
ROUTEPOINT_FIELD: RU_T RU_O RU_CH RU_K RU_A RU_M RU_A RU_R RU_SH RU_R RU_U RU_T RU_A | R O U T E P O I N T;
// compex keywords
INDEX: (RU_I RU_N RU_D RU_E RU_K RU_S RU_I RU_R RU_O RU_V RU_A RU_T RU_SOFT_SIGN | I N D E X);
GROUP: (RU_S RU_G RU_R RU_U RU_P RU_P RU_I RU_R RU_O RU_V RU_A RU_T RU_SOFT_SIGN | G R O U P);
ORDER: (RU_U RU_P RU_O RU_R RU_YA RU_D RU_O RU_CH RU_I RU_T RU_SOFT_SIGN | O R D E R);
GROUPEDBY: (RU_S RU_G RU_R RU_U RU_P RU_P RU_I RU_R RU_O RU_V RU_A RU_N RU_O RU_P RU_O | G R O U P E D B Y);
GROUPING : (RU_G RU_R RU_U RU_P RU_P RU_I RU_R RU_U RU_YU RU_SCH RU_I RU_M | G R O U P I N G);
SET : (RU_N RU_A RU_B RU_O RU_R RU_A RU_M | S E T);
RIGHT : (RU_P RU_R RU_A RU_V RU_O RU_E | R I G H T);
LEFT : (RU_L RU_E RU_V RU_O RU_E | L E F T);
INNER : (RU_V RU_N RU_U RU_T RU_R RU_E RU_N RU_N RU_E RU_E | I N N E R);
FULL : (RU_P RU_O RU_L RU_N RU_O RU_E | F U L L);
JOIN : (RU_S RU_O RU_E RU_D RU_I RU_N RU_E RU_N RU_I RU_E | J O I N);
OUTER : (RU_V RU_N RU_E RU_SH RU_N RU_E RU_E | O U T E R);
FOR : (RU_D RU_L RU_YA | F O R);
UPDATE : (RU_I RU_Z RU_M RU_E RU_N RU_E RU_N RU_I RU_YA | U P D A T E);
ALL : (RU_V RU_S RU_E | A L L);
UNION : (RU_O RU_B RU_SOLID_SIGN RU_E RU_D RU_I RU_N RU_I RU_T RU_SOFT_SIGN | U N I O N);
HIERARCHY_FOR_IN: (RU_I RU_E RU_R RU_A RU_R RU_H RU_I RU_I | H I E R A R C H Y);
IN :(RU_V | I N);
// tables
fragment BALANCE_RU : RU_O RU_S RU_T RU_A RU_T RU_K RU_I;
fragment BALANCE_EN : B A L A N C E;
fragment DOCUMENT_RU: RU_D RU_O RU_K RU_U RU_M RU_E RU_N RU_T;
fragment DOCUMENT_EN: D O C U M E N T;
fragment EXT_DIMENSIONS_RU: RU_S RU_U RU_B RU_K RU_O RU_N RU_T RU_O;
fragment EXT_DIMENSIONS_EN: E X T D I M E N S I O N S;
fragment PLAN_RU : RU_P RU_L RU_A RU_N;
fragment PLAN_EN : C H A R T O F;
fragment REGISTER_RU: RU_R RU_E RU_G RU_I RU_S RU_T RU_R;
fragment REGISTER_EN: R E G I S T E R;
fragment TURNOVERS_RU: RU_O RU_B RU_O RU_R RU_O RU_T RU_Y;
fragment TURNOVERS_EN: T U R N O V E R S;
// LETTERS
fragment RU_A: 'А' | 'а';
fragment RU_B: 'Б' | 'б';
fragment RU_V: 'В' | 'в';
fragment RU_G: 'Г' | 'г';
fragment RU_D: 'Д' | 'д';
fragment RU_YO: 'Ё' | 'ё';
fragment RU_E: 'Е' | 'е';
fragment RU_ZH: 'Ж' | 'ж';
fragment RU_Z: 'З' | 'з';
fragment RU_I: 'И' | 'и';
fragment RU_J: 'Й' | 'й';
fragment RU_K: 'К' | 'к';
fragment RU_L: 'Л' | 'л';
fragment RU_M: 'М' | 'м';
fragment RU_N: 'Н' | 'н';
fragment RU_O: 'О' | 'о';
fragment RU_P: 'П' | 'п';
fragment RU_R: 'Р' | 'р';
fragment RU_S: 'С' | 'с';
fragment RU_T: 'Т' | 'т';
fragment RU_U: 'У' | 'у';
fragment RU_F: 'Ф' | 'ф';
fragment RU_H: 'Х' | 'х';
fragment RU_C: 'Ц' | 'ц';
fragment RU_CH: 'Ч' | 'ч';
fragment RU_SH: 'Ш' | 'ш';
fragment RU_SCH: 'Щ' | 'щ';
fragment RU_SOLID_SIGN: 'Ъ' | 'ъ';
fragment RU_Y: 'Ы' | 'ы';
fragment RU_SOFT_SIGN: 'Ь' | 'ь';
fragment RU_EH: 'Э' | 'э';
fragment RU_YU: 'Ю' | 'ю';
fragment RU_YA: 'Я' | 'я';
fragment A: 'A' | 'a';
fragment B: 'B' | 'b';
fragment C: 'C' | 'c';
fragment D: 'D' | 'd';
fragment I: 'I' | 'i';
fragment J: 'J' | 'j';
fragment E: 'E' | 'e';
fragment F: 'F' | 'f';
fragment G: 'G' | 'g';
fragment U: 'U' | 'u';
fragment K: 'K' | 'k';
fragment L: 'L' | 'l';
fragment M: 'M' | 'm';
fragment N: 'N' | 'n';
fragment O: 'O' | 'o';
fragment P: 'P' | 'p';
fragment Q: 'Q' | 'q';
fragment R: 'R' | 'r';
fragment S: 'S' | 's';
fragment T: 'T' | 't';
fragment V: 'V' | 'v';
fragment H: 'H' | 'h';
fragment W: 'W' | 'w';
fragment X: 'X' | 'x';
fragment Y: 'Y' | 'y';
fragment Z: 'Z' | 'z';
fragment NUM_0: '0';
fragment NUM_1: '1';
// LITERALS
fragment DIGIT: [0-9];
fragment LETTER: [\p{Letter}] | '_';
DECIMAL : DIGIT+;
FLOAT : DIGIT+ '.' DIGIT*;
STR : '"' -> pushMode(STRINGS);
INCORRECT_IDENTIFIER : DIGIT+ LETTER (LETTER | DIGIT)*;
IDENTIFIER : LETTER (LETTER | DIGIT)*;
UNKNOWN : . -> channel(HIDDEN);
mode STRINGS;
STRFULL : (~["\n\r] | '""')* '"' -> type(STR), popMode;
SKIPNEWLINE : [\n\r][ \t\f]* -> channel(HIDDEN), type(WHITE_SPACE);
STRPART : (~["\n\r] | '""')+ -> type(STR);
// PARAMETERS
mode PARAMETER_MODE;
PARAMETER_WHITE_SPACE : WHITE_SPACE -> channel(HIDDEN), type(WHITE_SPACE);
PARAMETER_IDENTIFIER : IDENTIFIER -> popMode;
PARAMETER_UKNOWN : . -> channel(HIDDEN), type(UNKNOWN);
mode DOT_MODE;
DOT_WHITE_SPACE : WHITE_SPACE -> channel(HIDDEN), type(WHITE_SPACE);
DOT_MUL : MUL -> type(MUL), popMode;
DOT_LPAREN : LPAREN -> type(LPAREN), popMode;
DOT_RPAREN : RPAREN -> type(RPAREN), popMode;
DOT_ROUTEPOINT_FIELD : ROUTEPOINT_FIELD -> type(ROUTEPOINT_FIELD), popMode;
DOT_EMPTYREF : EMPTYREF -> type(EMPTYREF), popMode;
// VIRTUAL TABLES RU EN
ACTUAL_ACTION_PERIOD_VT:
(RU_F RU_A RU_K RU_T RU_I RU_CH RU_E RU_S RU_K RU_I RU_J RU_P RU_E RU_R RU_I RU_O RU_D RU_D RU_E RU_J RU_S RU_T RU_V RU_I RU_YA
| A C T U A L A C T I O N P E R I O D) -> popMode;
BALANCE_VT: (BALANCE_RU | BALANCE_EN) -> popMode;
BALANCE_AND_TURNOVERS_VT:
(BALANCE_RU RU_I TURNOVERS_RU | BALANCE_EN A N D TURNOVERS_EN) -> popMode;
BOUNDARIES_VT: (RU_G RU_R RU_A RU_N RU_I RU_C RU_Y | B O U N D A R I E S) -> popMode;
DR_CR_TURNOVERS_VT:
(TURNOVERS_RU RU_D RU_T RU_K RU_T | D R C R TURNOVERS_EN) -> popMode;
EXT_DIMENSIONS_VT:
(EXT_DIMENSIONS_RU | EXT_DIMENSIONS_EN) -> popMode;
RECORDS_WITH_EXT_DIMENSIONS_VT:
(RU_D RU_V RU_I RU_ZH RU_E RU_N RU_I RU_YA RU_S EXT_DIMENSIONS_RU | R E C O R D S W I T H EXT_DIMENSIONS_EN) -> popMode;
SCHEDULE_DATA_VT:
(RU_D RU_A RU_N RU_N RU_Y RU_E RU_G RU_R RU_A RU_F RU_I RU_K RU_A | S C H E D U L E D A T A) -> popMode;
SLICEFIRST_VT: (RU_S RU_R RU_E RU_Z RU_P RU_E RU_R RU_V RU_Y RU_H | S L I C E F I R S T) -> popMode;
SLICELAST_VT: (RU_S RU_R RU_E RU_Z RU_P RU_O RU_S RU_L RU_E RU_D RU_N RU_I RU_H | S L I C E L A S T) -> popMode;
TASK_BY_PERFORMER_VT:
(RU_Z RU_A RU_D RU_A RU_CH RU_I RU_P RU_O RU_I RU_S RU_P RU_O RU_L RU_N RU_I RU_T RU_E RU_L RU_YU
| T A S K B Y P E R F O R M E R) -> popMode;
TURNOVERS_VT: (TURNOVERS_RU | TURNOVERS_EN) -> popMode;
DOT_IDENTIFIER : IDENTIFIER -> type(IDENTIFIER), popMode;
mode BRACE_MODE;
BRACE_WHITE_SPACE : WHITE_SPACE -> channel(HIDDEN), type(WHITE_SPACE);
BRACE_IDENTIFIER : IDENTIFIER -> channel(HIDDEN);
BRACE_START : '{' -> pushMode(BRACE_MODE), channel(HIDDEN);
BRACE_END : '}' -> channel(HIDDEN), type(UNKNOWN), popMode;
BRACE_UNKNOWN : . -> channel(HIDDEN), type(UNKNOWN);
mode ID_MODE;
ID_BOOLEAN : BOOLEAN -> type(BOOLEAN), popMode;
ID_NUMBER : NUMBER -> type(NUMBER), popMode;
ID_STRING : STRING -> type(STRING), popMode;
ID_DATE : DATE -> type(DATE), popMode;
ID_BUSINESS_PROCESS_TYPE : BUSINESS_PROCESS_TYPE -> type(BUSINESS_PROCESS_TYPE), popMode;
ID_CATALOG_TYPE : CATALOG_TYPE -> type(CATALOG_TYPE), popMode;
ID_CHART_OF_ACCOUNTS_TYPE : CHART_OF_ACCOUNTS_TYPE -> type(CHART_OF_ACCOUNTS_TYPE), popMode;
ID_CHART_OF_CALCULATION_TYPES_TYPE : CHART_OF_CALCULATION_TYPES_TYPE -> type(CHART_OF_CALCULATION_TYPES_TYPE), popMode;
ID_CHART_OF_CHARACTERISTIC_TYPES_TYPE : CHART_OF_CHARACTERISTIC_TYPES_TYPE -> type(CHART_OF_CHARACTERISTIC_TYPES_TYPE), popMode;
ID_DOCUMENT_TYPE : DOCUMENT_TYPE -> type(DOCUMENT_TYPE), popMode;
ID_ENUM_TYPE : ENUM_TYPE -> type(ENUM_TYPE), popMode;
ID_EXCHANGE_PLAN_TYPE : EXCHANGE_PLAN_TYPE -> type(EXCHANGE_PLAN_TYPE), popMode;
ID_TASK_TYPE : TASK_TYPE -> type(TASK_TYPE), popMode;
ID_DOT : DOT -> type(DOT), pushMode(DOT_MODE), popMode;
ID_IDENTIFIER : IDENTIFIER -> type(IDENTIFIER), popMode;
ID_UNKNOWN : . -> channel(HIDDEN), type(UNKNOWN);
mode EXTERNAL_DATA_SOURCE_MODE;
EDS_TABLE: (RU_T RU_A RU_B RU_L RU_I RU_C RU_A | T A B L E) -> popMode;
EDS_CUBE: (RU_K RU_U RU_B | C U B E);
EDS_CUBE_DIMTABLE: (RU_T RU_A RU_B RU_L RU_I RU_C RU_A RU_I RU_Z RU_M RU_E RU_R RU_E RU_N RU_I RU_YA
| D I M E N S I O N T A B L E) -> popMode;
EDS_WHITE_SPACE : WHITE_SPACE -> channel(HIDDEN), type(WHITE_SPACE);
EDS_MUL: MUL -> type(MUL);
EDS_DOT : DOT -> type(DOT);
EDS_IDENTIFIER : IDENTIFIER -> type(IDENTIFIER);