vtlengine 1.4.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. vtlengine/API/_InternalApi.py +791 -0
  2. vtlengine/API/__init__.py +612 -0
  3. vtlengine/API/data/schema/external_routines_schema.json +34 -0
  4. vtlengine/API/data/schema/json_schema_2.1.json +116 -0
  5. vtlengine/API/data/schema/value_domain_schema.json +97 -0
  6. vtlengine/AST/ASTComment.py +57 -0
  7. vtlengine/AST/ASTConstructor.py +598 -0
  8. vtlengine/AST/ASTConstructorModules/Expr.py +1928 -0
  9. vtlengine/AST/ASTConstructorModules/ExprComponents.py +995 -0
  10. vtlengine/AST/ASTConstructorModules/Terminals.py +790 -0
  11. vtlengine/AST/ASTConstructorModules/__init__.py +50 -0
  12. vtlengine/AST/ASTDataExchange.py +10 -0
  13. vtlengine/AST/ASTEncoders.py +32 -0
  14. vtlengine/AST/ASTString.py +675 -0
  15. vtlengine/AST/ASTTemplate.py +558 -0
  16. vtlengine/AST/ASTVisitor.py +25 -0
  17. vtlengine/AST/DAG/__init__.py +479 -0
  18. vtlengine/AST/DAG/_words.py +10 -0
  19. vtlengine/AST/Grammar/Vtl.g4 +705 -0
  20. vtlengine/AST/Grammar/VtlTokens.g4 +409 -0
  21. vtlengine/AST/Grammar/__init__.py +0 -0
  22. vtlengine/AST/Grammar/lexer.py +2139 -0
  23. vtlengine/AST/Grammar/parser.py +16597 -0
  24. vtlengine/AST/Grammar/tokens.py +169 -0
  25. vtlengine/AST/VtlVisitor.py +824 -0
  26. vtlengine/AST/__init__.py +674 -0
  27. vtlengine/DataTypes/TimeHandling.py +562 -0
  28. vtlengine/DataTypes/__init__.py +863 -0
  29. vtlengine/DataTypes/_time_checking.py +135 -0
  30. vtlengine/Exceptions/__exception_file_generator.py +96 -0
  31. vtlengine/Exceptions/__init__.py +159 -0
  32. vtlengine/Exceptions/messages.py +1004 -0
  33. vtlengine/Interpreter/__init__.py +2048 -0
  34. vtlengine/Model/__init__.py +501 -0
  35. vtlengine/Operators/Aggregation.py +357 -0
  36. vtlengine/Operators/Analytic.py +455 -0
  37. vtlengine/Operators/Assignment.py +23 -0
  38. vtlengine/Operators/Boolean.py +106 -0
  39. vtlengine/Operators/CastOperator.py +451 -0
  40. vtlengine/Operators/Clause.py +366 -0
  41. vtlengine/Operators/Comparison.py +488 -0
  42. vtlengine/Operators/Conditional.py +495 -0
  43. vtlengine/Operators/General.py +191 -0
  44. vtlengine/Operators/HROperators.py +254 -0
  45. vtlengine/Operators/Join.py +447 -0
  46. vtlengine/Operators/Numeric.py +422 -0
  47. vtlengine/Operators/RoleSetter.py +77 -0
  48. vtlengine/Operators/Set.py +176 -0
  49. vtlengine/Operators/String.py +578 -0
  50. vtlengine/Operators/Time.py +1144 -0
  51. vtlengine/Operators/Validation.py +275 -0
  52. vtlengine/Operators/__init__.py +900 -0
  53. vtlengine/Utils/__Virtual_Assets.py +34 -0
  54. vtlengine/Utils/__init__.py +479 -0
  55. vtlengine/__extras_check.py +17 -0
  56. vtlengine/__init__.py +27 -0
  57. vtlengine/files/__init__.py +0 -0
  58. vtlengine/files/output/__init__.py +35 -0
  59. vtlengine/files/output/_time_period_representation.py +55 -0
  60. vtlengine/files/parser/__init__.py +240 -0
  61. vtlengine/files/parser/_rfc_dialect.py +22 -0
  62. vtlengine/py.typed +0 -0
  63. vtlengine-1.4.0rc2.dist-info/METADATA +89 -0
  64. vtlengine-1.4.0rc2.dist-info/RECORD +66 -0
  65. vtlengine-1.4.0rc2.dist-info/WHEEL +4 -0
  66. vtlengine-1.4.0rc2.dist-info/licenses/LICENSE.md +661 -0
@@ -0,0 +1,705 @@
1
+ grammar Vtl;
2
+ import VtlTokens;
3
+
4
+ start:
5
+ (statement EOL)* EOF
6
+ ;
7
+
8
+ /* statement */
9
+ statement:
10
+ varID ASSIGN expr # temporaryAssignment
11
+ | varID PUT_SYMBOL expr # persistAssignment
12
+ | defOperators # defineExpression
13
+ ;
14
+
15
+ /* expression */
16
+ expr:
17
+ LPAREN expr RPAREN # parenthesisExpr
18
+ | functions # functionsExpression
19
+ | dataset=expr QLPAREN clause=datasetClause QRPAREN # clauseExpr
20
+ | expr MEMBERSHIP simpleComponentId # membershipExpr
21
+ | op=(PLUS|MINUS|NOT) right=expr # unaryExpr
22
+ | left=expr op=(MUL|DIV) right=expr # arithmeticExpr
23
+ | left=expr op=(PLUS|MINUS|CONCAT) right=expr # arithmeticExprOrConcat
24
+ | left=expr op=comparisonOperand right=expr # comparisonExpr
25
+ | left=expr op=(IN|NOT_IN)(lists|valueDomainID) # inNotInExpr
26
+ | left=expr op=AND right=expr # booleanExpr
27
+ | left=expr op=(OR|XOR) right=expr # booleanExpr
28
+ | IF conditionalExpr=expr THEN thenExpr=expr ELSE elseExpr=expr # ifExpr
29
+ | CASE (WHEN expr THEN expr)+ ELSE expr # caseExpr
30
+ | constant # constantExpr
31
+ | varID # varIdExpr
32
+
33
+
34
+ ;
35
+
36
+
37
+ exprComponent:
38
+ LPAREN exprComponent RPAREN # parenthesisExprComp
39
+ | functionsComponents # functionsExpressionComp
40
+ | op=(PLUS|MINUS|NOT) right=exprComponent # unaryExprComp
41
+ | left=exprComponent op=(MUL|DIV) right=exprComponent # arithmeticExprComp
42
+ | left=exprComponent op=(PLUS|MINUS|CONCAT) right=exprComponent # arithmeticExprOrConcatComp
43
+ | left=exprComponent comparisonOperand right=exprComponent # comparisonExprComp
44
+ | left=exprComponent op=(IN|NOT_IN)(lists|valueDomainID) # inNotInExprComp
45
+ | left=exprComponent op=AND right=exprComponent # booleanExprComp
46
+ | left=exprComponent op=(OR|XOR) right=exprComponent # booleanExprComp
47
+ | IF conditionalExpr=exprComponent THEN thenExpr=exprComponent ELSE elseExpr=exprComponent # ifExprComp
48
+ | CASE (WHEN exprComponent THEN exprComponent)+ ELSE exprComponent # caseExprComp
49
+ | constant # constantExprComp
50
+ | componentID # compId
51
+ ;
52
+
53
+ functionsComponents:
54
+ genericOperatorsComponent # genericFunctionsComponents
55
+ | stringOperatorsComponent # stringFunctionsComponents
56
+ | numericOperatorsComponent # numericFunctionsComponents
57
+ | comparisonOperatorsComponent # comparisonFunctionsComponents
58
+ | timeOperatorsComponent # timeFunctionsComponents
59
+ | conditionalOperatorsComponent # conditionalFunctionsComponents
60
+ | aggrOperators # aggregateFunctionsComponents
61
+ | anFunctionComponent # analyticFunctionsComponents
62
+
63
+ ;
64
+
65
+ /* functions */
66
+ functions:
67
+ joinOperators # joinFunctions
68
+ | genericOperators # genericFunctions
69
+ | stringOperators # stringFunctions
70
+ | numericOperators # numericFunctions
71
+ | comparisonOperators # comparisonFunctions
72
+ | timeOperators # timeFunctions
73
+ | setOperators # setFunctions
74
+ | hierarchyOperators # hierarchyFunctions
75
+ | validationOperators # validationFunctions
76
+ | conditionalOperators # conditionalFunctions
77
+ | aggrOperatorsGrouping # aggregateFunctions
78
+ | anFunction # analyticFunctions
79
+ ;
80
+
81
+
82
+ /*------------------------------------------------------ Clauses----------------------------------------------- */
83
+ datasetClause:
84
+ renameClause
85
+ | aggrClause
86
+ | filterClause
87
+ | calcClause
88
+ | keepOrDropClause
89
+ | pivotOrUnpivotClause
90
+ /* | customPivotClause */
91
+ | subspaceClause
92
+ ;
93
+
94
+ renameClause:
95
+ RENAME renameClauseItem (COMMA renameClauseItem)*
96
+ ;
97
+
98
+ aggrClause:
99
+ AGGREGATE aggregateClause (groupingClause havingClause?)?
100
+ ;
101
+
102
+ filterClause:
103
+ FILTER exprComponent
104
+ ;
105
+
106
+ calcClause:
107
+ CALC calcClauseItem (COMMA calcClauseItem)*
108
+ ;
109
+
110
+ keepOrDropClause:
111
+ op = (KEEP | DROP) componentID (COMMA componentID)*
112
+ ;
113
+
114
+
115
+ pivotOrUnpivotClause:
116
+ op=(PIVOT|UNPIVOT) id_=componentID COMMA mea=componentID
117
+ ;
118
+
119
+ customPivotClause:
120
+ CUSTOMPIVOT id_=componentID COMMA mea=componentID IN constant (COMMA constant)*
121
+ ;
122
+
123
+ subspaceClause:
124
+ SUBSPACE subspaceClauseItem (COMMA subspaceClauseItem)*
125
+ ;
126
+
127
+ /*------------------------------------------------------End Clauses----------------------------------------------- */
128
+
129
+ /************************************************** JOIN FUNCITONS -------------------------------------------*/
130
+
131
+ joinOperators:
132
+ joinKeyword=(INNER_JOIN | LEFT_JOIN) LPAREN joinClause joinBody RPAREN # joinExpr
133
+ | joinKeyword=(FULL_JOIN | CROSS_JOIN) LPAREN joinClauseWithoutUsing joinBody RPAREN # joinExpr
134
+ ;
135
+
136
+ /************************************************** END JOIN FUNCITONS -------------------------------------------*/
137
+ /* --------------------------------------------Define Functions------------------------------------------------- */
138
+ defOperators:
139
+ DEFINE OPERATOR operatorID LPAREN (parameterItem (COMMA parameterItem)*)? RPAREN (RETURNS outputParameterType)? IS (expr) END OPERATOR # defOperator
140
+ | DEFINE DATAPOINT RULESET rulesetID LPAREN rulesetSignature RPAREN IS ruleClauseDatapoint END DATAPOINT RULESET # defDatapointRuleset
141
+ | DEFINE HIERARCHICAL RULESET rulesetID LPAREN hierRuleSignature RPAREN IS ruleClauseHierarchical END HIERARCHICAL RULESET # defHierarchical
142
+ ;
143
+
144
+ /* --------------------------------------------END DEFINE FUNCTIONS------------------------------------------------- */
145
+
146
+ /*---------------------------------------------------FUNCTIONS-------------------------------------------------*/
147
+ genericOperators:
148
+ operatorID LPAREN (parameter (COMMA parameter)*)? RPAREN # callDataset
149
+ | EVAL LPAREN routineName LPAREN (varID|scalarItem)? (COMMA (varID|scalarItem))* RPAREN (LANGUAGE STRING_CONSTANT)? (RETURNS evalDatasetType)? RPAREN # evalAtom
150
+ | CAST LPAREN expr COMMA (basicScalarType|valueDomainName) (COMMA STRING_CONSTANT)? RPAREN # castExprDataset
151
+ ;
152
+
153
+ genericOperatorsComponent:
154
+ operatorID LPAREN (parameterComponent (COMMA parameterComponent)*)? RPAREN # callComponent
155
+ | CAST LPAREN exprComponent COMMA (basicScalarType|valueDomainName) (COMMA STRING_CONSTANT)? RPAREN # castExprComponent
156
+ | EVAL LPAREN routineName LPAREN (componentID|scalarItem)? (COMMA (componentID|scalarItem))* RPAREN (LANGUAGE STRING_CONSTANT)? (RETURNS outputParameterTypeComponent)? RPAREN # evalAtomComponent
157
+
158
+ ;
159
+
160
+
161
+ parameterComponent:
162
+ exprComponent
163
+ | OPTIONAL
164
+ ;
165
+
166
+ parameter:
167
+ expr
168
+ | OPTIONAL
169
+ ;
170
+
171
+ stringOperators:
172
+ op=(TRIM | LTRIM | RTRIM | UCASE | LCASE | LEN) LPAREN expr RPAREN # unaryStringFunction
173
+ | SUBSTR LPAREN expr (((COMMA startParameter=optionalExpr) (COMMA endParameter=optionalExpr))? | COMMA startParameter=optionalExpr ) RPAREN # substrAtom
174
+ | REPLACE LPAREN expr COMMA param=expr ( COMMA optionalExpr)? RPAREN # replaceAtom
175
+ | INSTR LPAREN expr COMMA pattern=expr ( COMMA startParameter=optionalExpr)? (COMMA occurrenceParameter=optionalExpr)? RPAREN # instrAtom
176
+ ;
177
+
178
+ stringOperatorsComponent:
179
+ op=(TRIM | LTRIM | RTRIM | UCASE | LCASE | LEN) LPAREN exprComponent RPAREN # unaryStringFunctionComponent
180
+ | SUBSTR LPAREN exprComponent (((COMMA startParameter=optionalExprComponent) (COMMA endParameter=optionalExprComponent))? | COMMA startParameter=optionalExprComponent ) RPAREN # substrAtomComponent
181
+ | REPLACE LPAREN exprComponent COMMA param=exprComponent ( COMMA optionalExprComponent)? RPAREN # replaceAtomComponent
182
+ | INSTR LPAREN exprComponent COMMA pattern=exprComponent ( COMMA startParameter=optionalExprComponent)? (COMMA occurrenceParameter=optionalExprComponent)? RPAREN # instrAtomComponent
183
+ ;
184
+
185
+ numericOperators:
186
+ op=(CEIL | FLOOR | ABS | EXP | LN | SQRT) LPAREN expr RPAREN # unaryNumeric
187
+ | op=(ROUND | TRUNC) LPAREN expr (COMMA optionalExpr)? RPAREN # unaryWithOptionalNumeric
188
+ | op=(MOD | POWER | LOG | RANDOM) LPAREN left=expr COMMA right=expr RPAREN # binaryNumeric
189
+ ;
190
+
191
+ numericOperatorsComponent:
192
+ op=(CEIL | FLOOR | ABS | EXP | LN | SQRT) LPAREN exprComponent RPAREN # unaryNumericComponent
193
+ | op=(ROUND | TRUNC) LPAREN exprComponent (COMMA optionalExprComponent)? RPAREN # unaryWithOptionalNumericComponent
194
+ | op=(MOD | POWER | LOG | RANDOM) LPAREN left=exprComponent COMMA right=exprComponent RPAREN # binaryNumericComponent
195
+ ;
196
+
197
+ comparisonOperators:
198
+ BETWEEN LPAREN op=expr COMMA from_=expr COMMA to_=expr RPAREN # betweenAtom
199
+ | CHARSET_MATCH LPAREN op=expr COMMA pattern=expr RPAREN # charsetMatchAtom
200
+ | ISNULL LPAREN expr RPAREN # isNullAtom
201
+ | EXISTS_IN LPAREN left=expr COMMA right=expr (COMMA retainType)? RPAREN # existInAtom
202
+ ;
203
+
204
+ comparisonOperatorsComponent:
205
+ BETWEEN LPAREN op=exprComponent COMMA from_=exprComponent COMMA to_=exprComponent RPAREN # betweenAtomComponent
206
+ | CHARSET_MATCH LPAREN op=exprComponent COMMA pattern=exprComponent RPAREN # charsetMatchAtomComponent
207
+ | ISNULL LPAREN exprComponent RPAREN # isNullAtomComponent
208
+ ;
209
+
210
+ timeOperators:
211
+ PERIOD_INDICATOR LPAREN expr? RPAREN # periodAtom
212
+ | FILL_TIME_SERIES LPAREN expr (COMMA (SINGLE|ALL))? RPAREN # fillTimeAtom
213
+ | op=(FLOW_TO_STOCK | STOCK_TO_FLOW) LPAREN expr RPAREN # flowAtom
214
+ | TIMESHIFT LPAREN expr COMMA signedInteger RPAREN # timeShiftAtom
215
+ | TIME_AGG LPAREN periodIndTo=STRING_CONSTANT (COMMA periodIndFrom=(STRING_CONSTANT| OPTIONAL ))? (COMMA op=optionalExpr)? (COMMA (FIRST|LAST))? RPAREN # timeAggAtom
216
+ | CURRENT_DATE LPAREN RPAREN # currentDateAtom
217
+ | DATEDIFF LPAREN dateFrom=expr COMMA dateTo=expr RPAREN # dateDiffAtom
218
+ | DATEADD LPAREN op=expr COMMA shiftNumber=expr COMMA periodInd=expr RPAREN # dateAddAtom
219
+ | YEAR_OP LPAREN expr RPAREN # yearAtom
220
+ | MONTH_OP LPAREN expr RPAREN # monthAtom
221
+ | DAYOFMONTH LPAREN expr RPAREN # dayOfMonthAtom
222
+ | DAYOFYEAR LPAREN expr RPAREN # dayOfYearAtom
223
+ | DAYTOYEAR LPAREN expr RPAREN # dayToYearAtom
224
+ | DAYTOMONTH LPAREN expr RPAREN # dayToMonthAtom
225
+ | YEARTODAY LPAREN expr RPAREN # yearToDayAtom
226
+ | MONTHTODAY LPAREN expr RPAREN # monthToDayAtom
227
+ ;
228
+
229
+ timeOperatorsComponent:
230
+ PERIOD_INDICATOR LPAREN exprComponent? RPAREN # periodAtomComponent
231
+ | FILL_TIME_SERIES LPAREN exprComponent (COMMA (SINGLE|ALL))? RPAREN # fillTimeAtomComponent
232
+ | op=(FLOW_TO_STOCK | STOCK_TO_FLOW) LPAREN exprComponent RPAREN # flowAtomComponent
233
+ | TIMESHIFT LPAREN exprComponent COMMA signedInteger RPAREN # timeShiftAtomComponent
234
+ | TIME_AGG LPAREN periodIndTo=STRING_CONSTANT (COMMA periodIndFrom=(STRING_CONSTANT| OPTIONAL ))? (COMMA op=optionalExprComponent)? (COMMA (FIRST|LAST))? RPAREN # timeAggAtomComponent
235
+ | CURRENT_DATE LPAREN RPAREN # currentDateAtomComponent
236
+ | DATEDIFF LPAREN dateFrom=exprComponent COMMA dateTo=exprComponent RPAREN # dateDiffAtomComponent
237
+ | DATEADD LPAREN op=exprComponent COMMA shiftNumber=exprComponent COMMA periodInd=exprComponent RPAREN # dateAddAtomComponent
238
+ | YEAR_OP LPAREN exprComponent RPAREN # yearAtomComponent
239
+ | MONTH_OP LPAREN exprComponent RPAREN # monthAtomComponent
240
+ | DAYOFMONTH LPAREN exprComponent RPAREN # dayOfMonthAtomComponent
241
+ | DAYOFYEAR LPAREN exprComponent RPAREN # dayOfYearAtomComponent
242
+ | DAYTOYEAR LPAREN exprComponent RPAREN # dayToYearAtomComponent
243
+ | DAYTOMONTH LPAREN exprComponent RPAREN # dayToMonthAtomComponent
244
+ | YEARTODAY LPAREN exprComponent RPAREN # yearToDayAtomComponent
245
+ | MONTHTODAY LPAREN exprComponent RPAREN # monthToDayAtomComponent
246
+ ;
247
+
248
+ setOperators:
249
+ UNION LPAREN left=expr (COMMA expr)+ RPAREN # unionAtom
250
+ | INTERSECT LPAREN left=expr (COMMA expr)+ RPAREN # intersectAtom
251
+ | op=(SETDIFF|SYMDIFF) LPAREN left=expr COMMA right=expr RPAREN # setOrSYmDiffAtom
252
+ ;
253
+ /* hierarchy */
254
+ hierarchyOperators:
255
+ HIERARCHY LPAREN op=expr COMMA hrName=IDENTIFIER (conditionClause)? (RULE ruleComponent=componentID)? (validationMode)? (inputModeHierarchy)? outputModeHierarchy? RPAREN
256
+ ;
257
+
258
+ validationOperators:
259
+ CHECK_DATAPOINT LPAREN op=expr COMMA dpName=IDENTIFIER (COMPONENTS componentID (COMMA componentID)*)? validationOutput? RPAREN # validateDPruleset
260
+ | CHECK_HIERARCHY LPAREN op=expr COMMA hrName=IDENTIFIER conditionClause? (RULE componentID)? validationMode? inputMode? validationOutput? RPAREN # validateHRruleset
261
+ | CHECK LPAREN op=expr (codeErr=erCode)? (levelCode=erLevel)? imbalanceExpr? output=(INVALID|ALL)? RPAREN # validationSimple
262
+ ;
263
+
264
+ conditionalOperators:
265
+ NVL LPAREN left=expr COMMA right = expr RPAREN # nvlAtom
266
+ ;
267
+
268
+ conditionalOperatorsComponent:
269
+ NVL LPAREN left=exprComponent COMMA right = exprComponent RPAREN # nvlAtomComponent
270
+ ;
271
+
272
+ aggrOperators:
273
+ op =(SUM
274
+ | AVG
275
+ | COUNT
276
+ | MEDIAN
277
+ | MIN
278
+ | MAX
279
+ | STDDEV_POP
280
+ | STDDEV_SAMP
281
+ | VAR_POP
282
+ | VAR_SAMP) LPAREN exprComponent RPAREN # aggrComp
283
+ | COUNT LPAREN RPAREN # countAggrComp
284
+
285
+ ;
286
+
287
+
288
+ aggrOperatorsGrouping:
289
+ op =(SUM
290
+ | AVG
291
+ | COUNT
292
+ | MEDIAN
293
+ | MIN
294
+ | MAX
295
+ | STDDEV_POP
296
+ | STDDEV_SAMP
297
+ | VAR_POP
298
+ | VAR_SAMP) LPAREN expr (groupingClause havingClause?)? RPAREN #aggrDataset
299
+
300
+ ;
301
+
302
+ anFunction:
303
+ op = ( SUM
304
+ | AVG
305
+ | COUNT
306
+ | MEDIAN
307
+ | MIN
308
+ | MAX
309
+ | STDDEV_POP
310
+ | STDDEV_SAMP
311
+ | VAR_POP
312
+ | VAR_SAMP
313
+ | FIRST_VALUE
314
+ | LAST_VALUE)
315
+ LPAREN expr OVER LPAREN (partition=partitionByClause? orderBy=orderByClause? windowing=windowingClause?)RPAREN RPAREN #anSimpleFunction
316
+ | op=(LAG |LEAD) LPAREN expr (COMMA offset=signedInteger(COMMA defaultValue=scalarItem)?)? OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # lagOrLeadAn
317
+ | op=RATIO_TO_REPORT LPAREN expr OVER LPAREN (partition=partitionByClause) RPAREN RPAREN # ratioToReportAn
318
+ ;
319
+
320
+ anFunctionComponent:
321
+ op = ( SUM
322
+ | AVG
323
+ | COUNT
324
+ | MEDIAN
325
+ | MIN
326
+ | MAX
327
+ | STDDEV_POP
328
+ | STDDEV_SAMP
329
+ | VAR_POP
330
+ | VAR_SAMP
331
+ | FIRST_VALUE
332
+ | LAST_VALUE)
333
+ LPAREN exprComponent OVER LPAREN (partition=partitionByClause? orderBy=orderByClause? windowing=windowingClause?)RPAREN RPAREN #anSimpleFunctionComponent
334
+ | op=(LAG |LEAD) LPAREN exprComponent (COMMA offet=signedInteger(defaultValue=scalarItem)?)? OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # lagOrLeadAnComponent
335
+ | op=RANK LPAREN OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # rankAnComponent
336
+ | op=RATIO_TO_REPORT LPAREN exprComponent OVER LPAREN (partition=partitionByClause) RPAREN RPAREN # ratioToReportAnComponent
337
+ ;
338
+ /*---------------------------------------------------END FUNCTIONS-------------------------------------------------*/
339
+
340
+ /*-------------------------------------------------CLAUSE EXPRESSION------------------------------------------------*/
341
+ /*RENAME CLAUSE */
342
+ renameClauseItem:
343
+ fromName=componentID TO toName=componentID
344
+ ;
345
+
346
+ /*END RENAME CLAUSE*/
347
+
348
+ /*AGGR CLAUSE*/
349
+ aggregateClause:
350
+ aggrFunctionClause (COMMA aggrFunctionClause)*
351
+ ;
352
+
353
+ aggrFunctionClause:
354
+ (componentRole)? componentID ASSIGN aggrOperators
355
+ ;
356
+ /*END AGGR CLAUSE*/
357
+
358
+ /*CALC CLAUSE*/
359
+ calcClauseItem:
360
+ (componentRole)? componentID ASSIGN exprComponent
361
+ ;
362
+ /*END CALC CLAUSE*/
363
+
364
+ /*SUBSPACE CLAUSE*/
365
+ subspaceClauseItem:
366
+ componentID EQ (scalarItem | varID)
367
+ ;
368
+
369
+ scalarItem:
370
+ constant #simpleScalar
371
+ | CAST LPAREN constant COMMA (basicScalarType) (COMMA STRING_CONSTANT)? RPAREN #scalarWithCast
372
+ ;
373
+ /*END SUBSPACE CLAUSE*/
374
+ /*----------------------------------------------END CLAUSE EXPRESSION--------------------------------------*/
375
+
376
+ /*---------------------------------------------JOIN CLAUSE EXPRESSION---------------------------------------*/
377
+
378
+ joinClauseWithoutUsing:
379
+ joinClauseItem (COMMA joinClauseItem)*
380
+ ;
381
+
382
+ joinClause:
383
+ joinClauseItem (COMMA joinClauseItem)* (USING componentID (COMMA componentID)*)?
384
+ ;
385
+
386
+ joinClauseItem:
387
+ expr (AS alias)?
388
+ ;
389
+
390
+ joinBody:
391
+ filterClause? (calcClause|joinApplyClause|aggrClause)? (keepOrDropClause)? renameClause?
392
+ ;
393
+
394
+ /* JOIN APPLY CLAUSE*/
395
+ joinApplyClause:
396
+ APPLY expr
397
+ ;
398
+ /* END JOIN APPLY CLAUSE*/
399
+
400
+ /*---------------------------------------------END JOIN CLAUSE EXPRESSION---------------------------------------*/
401
+
402
+ /*-----------------------------------------ANALYTIC CLAUSE -----------------------------------------------*/
403
+
404
+ partitionByClause:
405
+ PARTITION BY componentID (COMMA componentID)*
406
+ ;
407
+
408
+ orderByClause:
409
+ ORDER BY orderByItem (COMMA orderByItem)*
410
+ ;
411
+
412
+ orderByItem:
413
+ componentID (ASC|DESC)?
414
+ ;
415
+
416
+ windowingClause:
417
+ ((DATA POINTS)|RANGE) BETWEEN from_=limitClauseItem AND to_=limitClauseItem
418
+ ;
419
+
420
+ signedInteger:
421
+ INTEGER_CONSTANT
422
+ ;
423
+
424
+ limitClauseItem:
425
+ INTEGER_CONSTANT PRECEDING
426
+ | INTEGER_CONSTANT FOLLOWING
427
+ | CURRENT DATA POINT
428
+ | UNBOUNDED PRECEDING
429
+ | UNBOUNDED FOLLOWING
430
+ ;
431
+
432
+ /*--------------------------------------------END ANALYTIC CLAUSE -----------------------------------------------*/
433
+ /* ------------------------------------------------------------ GROUPING CLAUSE ------------------------------------*/
434
+ groupingClause:
435
+ GROUP op=(BY | EXCEPT) componentID (COMMA componentID)* # groupByOrExcept
436
+ | GROUP ALL exprComponent # groupAll
437
+ ;
438
+
439
+ havingClause:
440
+ HAVING exprComponent
441
+ ;
442
+ /*-------------------------------------------END GROUPING CLAUSE-----------------------------------------------------*/
443
+
444
+ /*------------------------------------------------DEFINE OPERATOR ---------------------------------------------------*/
445
+
446
+ parameterItem:
447
+ varID inputParameterType (DEFAULT scalarItem)?
448
+ ;
449
+
450
+ outputParameterType:
451
+ scalarType
452
+ | datasetType
453
+ | componentType
454
+ ;
455
+
456
+ outputParameterTypeComponent:
457
+ componentType
458
+ |scalarType
459
+ ;
460
+
461
+ inputParameterType:
462
+ scalarType
463
+ | datasetType
464
+ | scalarSetType
465
+ | rulesetType
466
+ | componentType
467
+ ;
468
+
469
+ rulesetType:
470
+ RULESET
471
+ | dpRuleset
472
+ | hrRuleset
473
+ ;
474
+
475
+ scalarType:
476
+ (basicScalarType|valueDomainName)scalarTypeConstraint?((NOT)? NULL_CONSTANT)?
477
+ ;
478
+
479
+ componentType:
480
+ componentRole ( LT scalarType MT )?
481
+ ;
482
+
483
+ datasetType:
484
+ DATASET ( GLPAREN compConstraint (COMMA compConstraint)* GRPAREN )?
485
+
486
+ ;
487
+
488
+ evalDatasetType:
489
+ datasetType
490
+ | scalarType
491
+ ;
492
+
493
+ scalarSetType:
494
+ SET ( LT scalarType MT )?
495
+ ;
496
+
497
+ dpRuleset:
498
+ DATAPOINT # dataPoint
499
+ | DATAPOINT_ON_VD (GLPAREN valueDomainName (MUL valueDomainName)* GRPAREN )? # dataPointVd
500
+ | DATAPOINT_ON_VAR (GLPAREN varID (MUL varID)* GRPAREN )? # dataPointVar
501
+ ;
502
+
503
+ hrRuleset:
504
+ HIERARCHICAL # hrRulesetType
505
+ | HIERARCHICAL_ON_VD ( GLPAREN vdName=IDENTIFIER (LPAREN valueDomainName (MUL valueDomainName)* RPAREN)? GRPAREN )? # hrRulesetVdType
506
+ | HIERARCHICAL_ON_VAR ( GLPAREN varName=varID (LPAREN varID (MUL varID)* RPAREN)? GRPAREN )? # hrRulesetVarType
507
+ ;
508
+
509
+ valueDomainName:
510
+ IDENTIFIER
511
+ ;
512
+
513
+ rulesetID:
514
+ IDENTIFIER
515
+ ;
516
+
517
+ rulesetSignature:
518
+ (VALUE_DOMAIN|VARIABLE) signature (COMMA signature)*
519
+ ;
520
+
521
+ signature:
522
+ varID (AS alias)?
523
+ ;
524
+
525
+ ruleClauseDatapoint:
526
+ ruleItemDatapoint ( EOL ruleItemDatapoint)*
527
+ ;
528
+
529
+ ruleItemDatapoint:
530
+ (ruleName=IDENTIFIER COLON )? ( WHEN antecedentContiditon=exprComponent THEN )? consequentCondition=exprComponent (erCode)? (erLevel)?
531
+ ;
532
+
533
+ ruleClauseHierarchical:
534
+ ruleItemHierarchical ( EOL ruleItemHierarchical)*
535
+ ;
536
+
537
+ ruleItemHierarchical:
538
+ (ruleName=IDENTIFIER COLON )? codeItemRelation (erCode)? (erLevel)?
539
+ ;
540
+
541
+ hierRuleSignature:
542
+ (VALUE_DOMAIN|VARIABLE) (CONDITION valueDomainSignature)? RULE IDENTIFIER
543
+ ;
544
+
545
+ valueDomainSignature:
546
+ signature (COMMA signature)*
547
+ ;
548
+
549
+ codeItemRelation:
550
+ ( WHEN exprComponent THEN )? codetemRef=valueDomainValue comparisonOperand? codeItemRelationClause (codeItemRelationClause)*
551
+ ;
552
+
553
+ codeItemRelationClause:
554
+ (opAdd=( PLUS | MINUS ))? rightCodeItem=valueDomainValue ( QLPAREN rightCondition=exprComponent QRPAREN )?
555
+ ;
556
+
557
+ valueDomainValue:
558
+ IDENTIFIER
559
+ | INTEGER_CONSTANT
560
+ | NUMBER_CONSTANT
561
+ ;
562
+
563
+ scalarTypeConstraint:
564
+ QLPAREN exprComponent QRPAREN # conditionConstraint
565
+ | GLPAREN scalarItem (COMMA scalarItem)* GRPAREN # rangeConstraint
566
+ ;
567
+
568
+
569
+ compConstraint:
570
+ componentType (componentID|multModifier)
571
+ ;
572
+
573
+ multModifier:
574
+ OPTIONAL ( PLUS | MUL )?
575
+ ;
576
+
577
+ /*--------------------------------------------END DEFINE OPERATOR ---------------------------------------------------*/
578
+
579
+
580
+ /*------------------------------------------VALIDATION OPERATOR ---------------------------------------------------*/
581
+ validationOutput:
582
+ INVALID|ALL_MEASURES|ALL
583
+ ;
584
+
585
+ validationMode:
586
+ NON_NULL|NON_ZERO|PARTIAL_NULL|PARTIAL_ZERO|ALWAYS_NULL|ALWAYS_ZERO
587
+ ;
588
+
589
+ conditionClause:
590
+ CONDITION componentID (COMMA componentID)*
591
+ ;
592
+
593
+ inputMode:
594
+ DATASET|DATASET_PRIORITY
595
+ ;
596
+
597
+ imbalanceExpr:
598
+ IMBALANCE expr
599
+ ;
600
+
601
+ inputModeHierarchy:
602
+ RULE|DATASET|RULE_PRIORITY
603
+ ;
604
+
605
+ outputModeHierarchy:
606
+ COMPUTED|ALL
607
+ ;
608
+ /*--------------------------------------END VALIDATION OPERATOR ---------------------------------------------------*/
609
+ alias:
610
+ IDENTIFIER
611
+ ;
612
+
613
+ varID:
614
+ IDENTIFIER
615
+ ;
616
+
617
+ simpleComponentId:
618
+ IDENTIFIER
619
+ ;
620
+
621
+ componentID:
622
+ IDENTIFIER (MEMBERSHIP IDENTIFIER)?
623
+ ;
624
+
625
+ lists:
626
+ GLPAREN scalarItem (COMMA scalarItem)* GRPAREN
627
+ ;
628
+
629
+ erCode:
630
+ ERRORCODE constant
631
+ ;
632
+
633
+ erLevel:
634
+ ERRORLEVEL constant
635
+ ;
636
+
637
+ comparisonOperand:
638
+ MT
639
+ | ME
640
+ | LE
641
+ | LT
642
+ | EQ
643
+ | NEQ
644
+ ;
645
+
646
+ /* Conditional */
647
+ optionalExpr:
648
+ expr
649
+ | OPTIONAL
650
+ ;
651
+
652
+ optionalExprComponent:
653
+ exprComponent
654
+ | OPTIONAL
655
+ ;
656
+ /* Role name*/
657
+ componentRole:
658
+ MEASURE
659
+ | COMPONENT
660
+ | DIMENSION
661
+ | ATTRIBUTE
662
+ | viralAttribute
663
+ ;
664
+
665
+ viralAttribute:
666
+ VIRAL ATTRIBUTE
667
+ ;
668
+
669
+ valueDomainID:
670
+ IDENTIFIER
671
+ ;
672
+
673
+ operatorID:
674
+ IDENTIFIER
675
+ ;
676
+
677
+ routineName:
678
+ IDENTIFIER
679
+ ;
680
+
681
+ constant:
682
+ INTEGER_CONSTANT
683
+ | NUMBER_CONSTANT
684
+ | BOOLEAN_CONSTANT
685
+ | STRING_CONSTANT
686
+ | NULL_CONSTANT
687
+ ;
688
+
689
+ basicScalarType:
690
+ STRING
691
+ | INTEGER
692
+ | NUMBER
693
+ | BOOLEAN
694
+ | DATE
695
+ | TIME
696
+ | TIME_PERIOD
697
+ | DURATION
698
+ | SCALAR
699
+
700
+ ;
701
+
702
+ retainType:
703
+ BOOLEAN_CONSTANT
704
+ | ALL
705
+ ;