Skip to content

Commit 793ff6e

Browse files
authored
feat: replace fliePath with slashText to resolve conflict between filePath and arithmetic (#112)
1 parent 76d7ee5 commit 793ff6e

11 files changed

Lines changed: 3796 additions & 3628 deletions

File tree

src/grammar/flinksql/FlinkSqlLexer.g4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,9 +442,9 @@ REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+
442442
| DEC_DIGIT+ EXPONENT_NUM_PART;
443443
BIT_STRING: BIT_STRING_L;
444444
ID_LITERAL: ID_LITERAL_FRAG;
445-
FILE_PATH: FILE_PATH_STRING;
445+
SLASH_TEXT: SLASH_TEXT_FRAG;
446446

447-
fragment FILE_PATH_STRING: ([/\\] (~([/\\ ]))*)+;
447+
fragment SLASH_TEXT_FRAG: [/\\] (~([/\\ ] | '(' | ')' | ';'))*;
448448
fragment JAR_FILE_PARTTARN: '`' ( '\\'. | '``' | ~('`'|'\\'))* '`';
449449
fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+;
450450
fragment ID_LITERAL_FRAG: [A-Z_0-9a-z]*?[A-Z_a-z]+?[A-Z_0-9a-z]*;

src/grammar/flinksql/FlinkSqlParser.g4

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,15 @@ jarStatememt
8888

8989
// 数栈平台自研的添加文件语法
9090
dtAddStatement
91-
: KW_ADD KW_JAR KW_WITH FILE_PATH (KW_AS uid)?
92-
| KW_ADD KW_FILE KW_WITH FILE_PATH (KW_AS uid)? (KW_RENAME uid)?
93-
| KW_ADD (KW_PYTHON_FILES | KW_PYTHON_REQUIREMENTS | KW_PYTHON_DEPENDENCIES | KW_PYTHON_JAR | KW_PYTHON_ARCHIVES) KW_WITH FILE_PATH KW_RENAME uid
94-
| KW_ADD KW_PYTHON_PARAMETER FILE_PATH
95-
| KW_ADD KW_ENGINE KW_FILE KW_WITH FILE_PATH KW_RENAME uid KW_KEY uid
91+
: KW_ADD KW_JAR KW_WITH dtFilePath (KW_AS uid)?
92+
| KW_ADD KW_FILE KW_WITH dtFilePath (KW_AS uid)? (KW_RENAME uid)?
93+
| KW_ADD (KW_PYTHON_FILES | KW_PYTHON_REQUIREMENTS | KW_PYTHON_DEPENDENCIES | KW_PYTHON_JAR | KW_PYTHON_ARCHIVES) KW_WITH dtFilePath KW_RENAME uid
94+
| KW_ADD KW_PYTHON_PARAMETER dtFilePath
95+
| KW_ADD KW_ENGINE KW_FILE KW_WITH dtFilePath KW_RENAME uid KW_KEY uid
96+
;
97+
98+
dtFilePath
99+
: SLASH_TEXT+
96100
;
97101

98102
// Create statements
@@ -696,6 +700,7 @@ valueExpression
696700
| left=valueExpression operator='^' right=valueExpression #arithmeticBinary
697701
| left=valueExpression operator='|' right=valueExpression #arithmeticBinary
698702
| left=valueExpression comparisonOperator right=valueExpression #comparison
703+
| left=valueExpression right=SLASH_TEXT #arithmeticBinaryAlternate
699704
;
700705

701706
primaryExpression

src/lib/flinksql/FlinkSqlLexer.interp

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

src/lib/flinksql/FlinkSqlLexer.tokens

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ DIG_LITERAL=406
407407
REAL_LITERAL=407
408408
BIT_STRING=408
409409
ID_LITERAL=409
410-
FILE_PATH=410
410+
SLASH_TEXT=410
411411
'ADD'=4
412412
'ADMIN'=5
413413
'AFTER'=6

src/lib/flinksql/FlinkSqlLexer.ts

Lines changed: 1008 additions & 1010 deletions
Large diffs are not rendered by default.

src/lib/flinksql/FlinkSqlParser.interp

Lines changed: 3 additions & 2 deletions
Large diffs are not rendered by default.

src/lib/flinksql/FlinkSqlParser.tokens

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ DIG_LITERAL=406
407407
REAL_LITERAL=407
408408
BIT_STRING=408
409409
ID_LITERAL=409
410-
FILE_PATH=410
410+
SLASH_TEXT=410
411411
'ADD'=4
412412
'ADMIN'=5
413413
'AFTER'=6

src/lib/flinksql/FlinkSqlParser.ts

Lines changed: 2726 additions & 2601 deletions
Large diffs are not rendered by default.

src/lib/flinksql/FlinkSqlParserListener.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { SetStatememtContext } from "./FlinkSqlParser";
2323
import { ResetStatememtContext } from "./FlinkSqlParser";
2424
import { JarStatememtContext } from "./FlinkSqlParser";
2525
import { DtAddStatementContext } from "./FlinkSqlParser";
26+
import { DtFilePathContext } from "./FlinkSqlParser";
2627
import { CreateTableContext } from "./FlinkSqlParser";
2728
import { SimpleCreateTableContext } from "./FlinkSqlParser";
2829
import { CreateTableAsSelectContext } from "./FlinkSqlParser";
@@ -144,6 +145,7 @@ import { PredicateContext } from "./FlinkSqlParser";
144145
import { LikePredicateContext } from "./FlinkSqlParser";
145146
import { ValueExpressionDefaultContext } from "./FlinkSqlParser";
146147
import { ComparisonContext } from "./FlinkSqlParser";
148+
import { ArithmeticBinaryAlternateContext } from "./FlinkSqlParser";
147149
import { ArithmeticBinaryContext } from "./FlinkSqlParser";
148150
import { ArithmeticUnaryContext } from "./FlinkSqlParser";
149151
import { DereferenceContext } from "./FlinkSqlParser";
@@ -416,6 +418,16 @@ export default class FlinkSqlParserListener extends ParseTreeListener {
416418
* @param ctx the parse tree
417419
*/
418420
exitDtAddStatement?: (ctx: DtAddStatementContext) => void;
421+
/**
422+
* Enter a parse tree produced by `FlinkSqlParser.dtFilePath`.
423+
* @param ctx the parse tree
424+
*/
425+
enterDtFilePath?: (ctx: DtFilePathContext) => void;
426+
/**
427+
* Exit a parse tree produced by `FlinkSqlParser.dtFilePath`.
428+
* @param ctx the parse tree
429+
*/
430+
exitDtFilePath?: (ctx: DtFilePathContext) => void;
419431
/**
420432
* Enter a parse tree produced by `FlinkSqlParser.createTable`.
421433
* @param ctx the parse tree
@@ -1644,6 +1656,18 @@ export default class FlinkSqlParserListener extends ParseTreeListener {
16441656
* @param ctx the parse tree
16451657
*/
16461658
exitComparison?: (ctx: ComparisonContext) => void;
1659+
/**
1660+
* Enter a parse tree produced by the `arithmeticBinaryAlternate`
1661+
* labeled alternative in `FlinkSqlParser.valueExpression`.
1662+
* @param ctx the parse tree
1663+
*/
1664+
enterArithmeticBinaryAlternate?: (ctx: ArithmeticBinaryAlternateContext) => void;
1665+
/**
1666+
* Exit a parse tree produced by the `arithmeticBinaryAlternate`
1667+
* labeled alternative in `FlinkSqlParser.valueExpression`.
1668+
* @param ctx the parse tree
1669+
*/
1670+
exitArithmeticBinaryAlternate?: (ctx: ArithmeticBinaryAlternateContext) => void;
16471671
/**
16481672
* Enter a parse tree produced by the `arithmeticBinary`
16491673
* labeled alternative in `FlinkSqlParser.valueExpression`.

src/lib/flinksql/FlinkSqlParserVisitor.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { SetStatememtContext } from "./FlinkSqlParser";
2323
import { ResetStatememtContext } from "./FlinkSqlParser";
2424
import { JarStatememtContext } from "./FlinkSqlParser";
2525
import { DtAddStatementContext } from "./FlinkSqlParser";
26+
import { DtFilePathContext } from "./FlinkSqlParser";
2627
import { CreateTableContext } from "./FlinkSqlParser";
2728
import { SimpleCreateTableContext } from "./FlinkSqlParser";
2829
import { CreateTableAsSelectContext } from "./FlinkSqlParser";
@@ -144,6 +145,7 @@ import { PredicateContext } from "./FlinkSqlParser";
144145
import { LikePredicateContext } from "./FlinkSqlParser";
145146
import { ValueExpressionDefaultContext } from "./FlinkSqlParser";
146147
import { ComparisonContext } from "./FlinkSqlParser";
148+
import { ArithmeticBinaryAlternateContext } from "./FlinkSqlParser";
147149
import { ArithmeticBinaryContext } from "./FlinkSqlParser";
148150
import { ArithmeticUnaryContext } from "./FlinkSqlParser";
149151
import { DereferenceContext } from "./FlinkSqlParser";
@@ -339,6 +341,12 @@ export default class FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Resu
339341
* @return the visitor result
340342
*/
341343
visitDtAddStatement?: (ctx: DtAddStatementContext) => Result;
344+
/**
345+
* Visit a parse tree produced by `FlinkSqlParser.dtFilePath`.
346+
* @param ctx the parse tree
347+
* @return the visitor result
348+
*/
349+
visitDtFilePath?: (ctx: DtFilePathContext) => Result;
342350
/**
343351
* Visit a parse tree produced by `FlinkSqlParser.createTable`.
344352
* @param ctx the parse tree
@@ -1074,6 +1082,13 @@ export default class FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Resu
10741082
* @return the visitor result
10751083
*/
10761084
visitComparison?: (ctx: ComparisonContext) => Result;
1085+
/**
1086+
* Visit a parse tree produced by the `arithmeticBinaryAlternate`
1087+
* labeled alternative in `FlinkSqlParser.valueExpression`.
1088+
* @param ctx the parse tree
1089+
* @return the visitor result
1090+
*/
1091+
visitArithmeticBinaryAlternate?: (ctx: ArithmeticBinaryAlternateContext) => Result;
10771092
/**
10781093
* Visit a parse tree produced by the `arithmeticBinary`
10791094
* labeled alternative in `FlinkSqlParser.valueExpression`.

0 commit comments

Comments
 (0)