@haste-health/fhirpath 0.12.2

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.
@@ -0,0 +1,361 @@
1
+ import { EmbeddedActionsParser } from "chevrotain";
2
+ import FPLexer, { ADDITIVE_OPERATION, AND_OPERATION, BOOLEAN, COMMA, DATE, DATETIME, DATETIME_PRECISION, DELIMINATED_IDENTIFIER, DOT, EQUALITY_OPERATION, IDENTIFIER, IMPLIES_OPERATION, INDEX, LEFT_BRACKET, LEFT_PARAN, MEMBERSHIP_OPERATION, MULTIPLICATIVE_OPERATION, NULL, NUMBER, OR_OPERATION, PERCENTAGE, PLURAL_DATETIME_PRECISION, RIGHT_BRACKET, RIGHT_PARAN, STRING, THIS, TIME, TOTAL, TYPE_OPERATION, UNION_OPERATION, allTokens, } from "./lexer.js";
3
+ class FPParser extends EmbeddedActionsParser {
4
+ constructor() {
5
+ super(allTokens);
6
+ this.performSelfAnalysis();
7
+ }
8
+ expression = this.RULE("expression", () => {
9
+ const output = this.SUBRULE(this.impliesOperation);
10
+ return output;
11
+ });
12
+ _expression = this.RULE("_expression", () => {
13
+ const term = this.SUBRULE(this.term);
14
+ const children = this.SUBRULE(this.expressionInner) ?? [];
15
+ // Grammar recording requires this check.
16
+ // @ts-ignore
17
+ if (Array.isArray(children))
18
+ children.unshift(term);
19
+ return {
20
+ type: "expression",
21
+ expression: children,
22
+ };
23
+ });
24
+ expressionInner = this.RULE("expressionInner", () => {
25
+ const properties = [];
26
+ this.MANY(() => this.OR([
27
+ {
28
+ // DOT OPERATION
29
+ ALT: () => {
30
+ const dotRes = this.SUBRULE(this.dotAccess);
31
+ properties.push(dotRes);
32
+ },
33
+ },
34
+ {
35
+ ALT: () => {
36
+ const indexForm = this.SUBRULE(this.indexAccess);
37
+ properties.push(indexForm);
38
+ },
39
+ },
40
+ ]));
41
+ return properties;
42
+ });
43
+ dotAccess = this.RULE("invocationExpression", () => {
44
+ this.CONSUME(DOT);
45
+ const invocation = this.SUBRULE(this.invocation);
46
+ return invocation;
47
+ });
48
+ indexAccess = this.RULE("indexExpression", () => {
49
+ this.CONSUME(LEFT_BRACKET);
50
+ const index = this.SUBRULE(this.expression);
51
+ this.CONSUME(RIGHT_BRACKET);
52
+ return { type: "indexed", index };
53
+ });
54
+ operation(operatorToken, nested) {
55
+ let operationAST = this.SUBRULE1(nested);
56
+ this.MANY(() => {
57
+ const operator = this.CONSUME2(operatorToken);
58
+ const rightSide = this.SUBRULE2(nested);
59
+ operationAST = {
60
+ type: "operation",
61
+ operator: operator.image,
62
+ left: operationAST,
63
+ right: rightSide,
64
+ };
65
+ });
66
+ return operationAST;
67
+ }
68
+ impliesOperation = this.RULE("impliesOperation", () => {
69
+ return this.operation(IMPLIES_OPERATION, this.orOperation);
70
+ });
71
+ orOperation = this.RULE("orOperation", () => {
72
+ return this.operation(OR_OPERATION, this.andOperation);
73
+ });
74
+ andOperation = this.RULE("andOperation", () => {
75
+ return this.operation(AND_OPERATION, this.membershipOperation);
76
+ });
77
+ membershipOperation = this.RULE("membershipOperation", () => {
78
+ return this.operation(MEMBERSHIP_OPERATION, this.equalityOperation);
79
+ });
80
+ equalityOperation = this.RULE("equalityOperation", () => {
81
+ return this.operation(EQUALITY_OPERATION, this.unionOperation);
82
+ });
83
+ unionOperation = this.RULE("unionOperation", () => {
84
+ return this.operation(UNION_OPERATION, this.typeOperation);
85
+ });
86
+ typeOperation = this.RULE("typeOperation", () => {
87
+ return this.operation(TYPE_OPERATION, this.additiveOperation);
88
+ });
89
+ additiveOperation = this.RULE("additiveOperation", () => {
90
+ return this.operation(ADDITIVE_OPERATION, this.multiplicativeOperation);
91
+ });
92
+ multiplicativeOperation = this.RULE("multiplicativeOperation", () => {
93
+ return this.operation(MULTIPLICATIVE_OPERATION, this._expression);
94
+ });
95
+ term = this.RULE("term", () => {
96
+ return this.OR([
97
+ { ALT: () => this.SUBRULE(this.literal) },
98
+ { ALT: () => this.SUBRULE(this.invocation) },
99
+ {
100
+ ALT: () => this.SUBRULE(this.externalConstant),
101
+ },
102
+ {
103
+ ALT: () => {
104
+ this.CONSUME(LEFT_PARAN);
105
+ const expression = this.SUBRULE(this.expression);
106
+ this.CONSUME(RIGHT_PARAN);
107
+ return expression;
108
+ },
109
+ },
110
+ ]);
111
+ });
112
+ literal = this.RULE("literal", () => {
113
+ return this.OR([
114
+ {
115
+ ALT: () => {
116
+ this.CONSUME(NULL);
117
+ return {
118
+ type: "literal",
119
+ literalType: "null",
120
+ value: null,
121
+ };
122
+ },
123
+ },
124
+ {
125
+ ALT: () => {
126
+ const boolToken = this.CONSUME(BOOLEAN);
127
+ return {
128
+ type: "literal",
129
+ literalType: "boolean",
130
+ value: boolToken.image === "true",
131
+ };
132
+ },
133
+ },
134
+ {
135
+ ALT: () => {
136
+ const string = this.CONSUME(STRING);
137
+ return {
138
+ type: "literal",
139
+ literalType: "string",
140
+ // Remove the parans
141
+ value: string.image.slice(1, -1),
142
+ };
143
+ },
144
+ },
145
+ {
146
+ ALT: () => {
147
+ const numberToken = this.CONSUME(NUMBER);
148
+ return {
149
+ type: "literal",
150
+ literalType: "number",
151
+ value: parseFloat(numberToken.image),
152
+ };
153
+ },
154
+ },
155
+ {
156
+ ALT: () => {
157
+ const datetime = this.CONSUME(DATETIME);
158
+ return {
159
+ type: "literal",
160
+ literalType: "datetime",
161
+ // Remove the @
162
+ value: datetime.image.slice(1),
163
+ };
164
+ },
165
+ },
166
+ {
167
+ ALT: () => {
168
+ const date = this.CONSUME(DATE);
169
+ return {
170
+ type: "literal",
171
+ literalType: "date",
172
+ // Remove the @
173
+ value: date.image.slice(1),
174
+ };
175
+ },
176
+ },
177
+ {
178
+ ALT: () => {
179
+ const time = this.CONSUME(TIME);
180
+ return {
181
+ type: "literal",
182
+ literalType: "time",
183
+ // Remove the @T
184
+ value: time.image.slice(2),
185
+ };
186
+ },
187
+ },
188
+ // TODO Quantity
189
+ ]);
190
+ });
191
+ identifier = this.RULE("identifier", () => {
192
+ return this.OR([
193
+ {
194
+ ALT: () => {
195
+ const identifier = this.CONSUME(IDENTIFIER);
196
+ return { type: "identifier", value: identifier.image };
197
+ },
198
+ },
199
+ {
200
+ ALT: () => {
201
+ const deliminatedIdentifier = this.CONSUME(DELIMINATED_IDENTIFIER);
202
+ return {
203
+ type: "identifier",
204
+ value: deliminatedIdentifier.image.slice(1, -1),
205
+ };
206
+ },
207
+ },
208
+ // Handle keywords being used as identifier.
209
+ {
210
+ ALT: () => {
211
+ const impliesOperator = this.CONSUME2(IMPLIES_OPERATION);
212
+ return {
213
+ type: "identifier",
214
+ value: impliesOperator.image,
215
+ };
216
+ },
217
+ },
218
+ {
219
+ ALT: () => {
220
+ const orOperator = this.CONSUME2(OR_OPERATION);
221
+ return {
222
+ type: "identifier",
223
+ value: orOperator.image,
224
+ };
225
+ },
226
+ },
227
+ {
228
+ ALT: () => {
229
+ const andOperator = this.CONSUME2(AND_OPERATION);
230
+ return {
231
+ type: "identifier",
232
+ value: andOperator.image,
233
+ };
234
+ },
235
+ },
236
+ {
237
+ ALT: () => {
238
+ const memOperator = this.CONSUME2(MEMBERSHIP_OPERATION);
239
+ return {
240
+ type: "identifier",
241
+ value: memOperator.image,
242
+ };
243
+ },
244
+ },
245
+ {
246
+ ALT: () => {
247
+ const typeOperator = this.CONSUME2(TYPE_OPERATION);
248
+ return {
249
+ type: "identifier",
250
+ value: typeOperator.image,
251
+ };
252
+ },
253
+ },
254
+ {
255
+ ALT: () => {
256
+ const multOperator = this.CONSUME2(MULTIPLICATIVE_OPERATION);
257
+ return {
258
+ type: "identifier",
259
+ value: multOperator.image,
260
+ };
261
+ },
262
+ },
263
+ {
264
+ ALT: () => {
265
+ const multOperator = this.CONSUME2(DATETIME_PRECISION);
266
+ return {
267
+ type: "identifier",
268
+ value: multOperator.image,
269
+ };
270
+ },
271
+ },
272
+ {
273
+ ALT: () => {
274
+ const multOperator = this.CONSUME2(PLURAL_DATETIME_PRECISION);
275
+ return {
276
+ type: "identifier",
277
+ value: multOperator.image,
278
+ };
279
+ },
280
+ },
281
+ ]);
282
+ });
283
+ invocation = this.RULE("invocation", () => {
284
+ return this.OR([
285
+ { ALT: () => this.SUBRULE(this._function) },
286
+ { ALT: () => this.SUBRULE(this.identifier) },
287
+ {
288
+ ALT: () => {
289
+ this.CONSUME(THIS);
290
+ return { type: "this" };
291
+ },
292
+ },
293
+ {
294
+ ALT: () => {
295
+ this.CONSUME(INDEX);
296
+ return { type: "index" };
297
+ },
298
+ },
299
+ {
300
+ ALT: () => {
301
+ this.CONSUME(TOTAL);
302
+ return { type: "total" };
303
+ },
304
+ },
305
+ ]);
306
+ });
307
+ externalConstant = this.RULE("externalConstant", () => {
308
+ this.CONSUME(PERCENTAGE);
309
+ return this.OR([
310
+ {
311
+ ALT: () => {
312
+ const string = this.CONSUME(STRING);
313
+ return {
314
+ type: "variable",
315
+ value: string.image.slice(1, -1),
316
+ };
317
+ },
318
+ },
319
+ {
320
+ ALT: () => {
321
+ const identifier = this.CONSUME(IDENTIFIER);
322
+ return { type: "variable", value: identifier.image };
323
+ },
324
+ },
325
+ ]);
326
+ });
327
+ _function = this.RULE("function", () => {
328
+ const functionName = this.SUBRULE(this.identifier);
329
+ this.CONSUME(LEFT_PARAN);
330
+ const parameters = [];
331
+ this.MANY_SEP({
332
+ SEP: COMMA,
333
+ DEF: () => {
334
+ const expression = this.SUBRULE(this.expression);
335
+ parameters.push(expression);
336
+ },
337
+ });
338
+ this.CONSUME(RIGHT_PARAN);
339
+ return {
340
+ type: "function",
341
+ functionName: functionName.value,
342
+ parameters,
343
+ };
344
+ });
345
+ }
346
+ // reuse the same parser instance.
347
+ const parser = new FPParser();
348
+ export default function parse(expression) {
349
+ const lexResult = FPLexer.tokenize(expression);
350
+ // setting a new input will RESET the parser instance's state.
351
+ parser.input = lexResult.tokens;
352
+ // any top level rule may be used as an entry point
353
+ const ast = parser.expression();
354
+ if (parser.errors.length > 0) {
355
+ console.log(JSON.stringify(lexResult, undefined, 2));
356
+ console.error(ast, parser.errors);
357
+ throw new Error(`Failed to parse expression '${expression}'`);
358
+ }
359
+ return ast;
360
+ }
361
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parserv2/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import * as chevrotain from "chevrotain";
2
+ export declare const IDENTIFIER: chevrotain.TokenType;
3
+ export declare const DELIMINATED_IDENTIFIER: chevrotain.TokenType;
4
+ export declare const IMPLIES_OPERATION: chevrotain.TokenType;
5
+ export declare const OR_OPERATION: chevrotain.TokenType;
6
+ export declare const AND_OPERATION: chevrotain.TokenType;
7
+ export declare const MEMBERSHIP_OPERATION: chevrotain.TokenType;
8
+ export declare const EQUALITY_OPERATION: chevrotain.TokenType;
9
+ export declare const UNION_OPERATION: chevrotain.TokenType;
10
+ export declare const TYPE_OPERATION: chevrotain.TokenType;
11
+ export declare const ADDITIVE_OPERATION: chevrotain.TokenType;
12
+ export declare const MULTIPLICATIVE_OPERATION: chevrotain.TokenType;
13
+ export declare const COMMA: chevrotain.TokenType;
14
+ export declare const NUMBER: chevrotain.TokenType;
15
+ export declare const STRING: chevrotain.TokenType;
16
+ export declare const BOOLEAN: chevrotain.TokenType;
17
+ export declare const NULL: chevrotain.TokenType;
18
+ export declare const WHITESPACE: chevrotain.TokenType;
19
+ export declare const DATETIME_PRECISION: chevrotain.TokenType;
20
+ export declare const PLURAL_DATETIME_PRECISION: chevrotain.TokenType;
21
+ export declare const TIME: chevrotain.TokenType;
22
+ export declare const DATE: chevrotain.TokenType;
23
+ export declare const DATETIME: chevrotain.TokenType;
24
+ export declare const THIS: chevrotain.TokenType;
25
+ export declare const INDEX: chevrotain.TokenType;
26
+ export declare const TOTAL: chevrotain.TokenType;
27
+ export declare const PERCENTAGE: chevrotain.TokenType;
28
+ export declare const LEFT_PARAN: chevrotain.TokenType;
29
+ export declare const RIGHT_PARAN: chevrotain.TokenType;
30
+ export declare const LEFT_BRACKET: chevrotain.TokenType;
31
+ export declare const RIGHT_BRACKET: chevrotain.TokenType;
32
+ export declare const DOT: chevrotain.TokenType;
33
+ export declare const allTokens: chevrotain.TokenType[];
34
+ declare const SelectLexer: chevrotain.Lexer;
35
+ export default SelectLexer;
@@ -0,0 +1,190 @@
1
+ import * as chevrotain from "chevrotain";
2
+ export const IDENTIFIER = chevrotain.createToken({
3
+ name: "Identifier",
4
+ pattern: /[A-Za-z_][A-Za-z0-9_]*/,
5
+ });
6
+ export const DELIMINATED_IDENTIFIER = chevrotain.createToken({
7
+ name: "DeliminatedIdentifier",
8
+ pattern: /`[^`]+`/,
9
+ });
10
+ // Operators
11
+ // // Implies Operation
12
+ export const IMPLIES_OPERATION = chevrotain.createToken({
13
+ name: "ImpliesOperation",
14
+ pattern: /implies/,
15
+ longer_alt: IDENTIFIER,
16
+ });
17
+ // // Or Operation
18
+ export const OR_OPERATION = chevrotain.createToken({
19
+ name: "OrOperation",
20
+ pattern: /or|xor/,
21
+ longer_alt: IDENTIFIER,
22
+ });
23
+ // // And Operation
24
+ export const AND_OPERATION = chevrotain.createToken({
25
+ name: "AndOperation",
26
+ pattern: /and/,
27
+ longer_alt: IDENTIFIER,
28
+ });
29
+ // // Membership operations
30
+ export const MEMBERSHIP_OPERATION = chevrotain.createToken({
31
+ name: "MembershipOperation",
32
+ pattern: /in|contains/,
33
+ longer_alt: IDENTIFIER,
34
+ });
35
+ // // Equality operations
36
+ // $('<=' / '<' / '>' / '>=' / '=' / '~' / '!=' / '!~')
37
+ export const EQUALITY_OPERATION = chevrotain.createToken({
38
+ name: "EqualityOperation",
39
+ pattern: /<=|<|>|>=|=|~|!=|!~/,
40
+ });
41
+ // // Union operation
42
+ // $("|")
43
+ export const UNION_OPERATION = chevrotain.createToken({
44
+ name: "UnionOperation",
45
+ pattern: /\|/,
46
+ });
47
+ // // Type operations
48
+ // $("is" / "as")
49
+ export const TYPE_OPERATION = chevrotain.createToken({
50
+ name: "TypeOperation",
51
+ pattern: /is|as/,
52
+ longer_alt: IDENTIFIER,
53
+ });
54
+ // // Additive operations
55
+ // ('+' / '-' / '&')
56
+ export const ADDITIVE_OPERATION = chevrotain.createToken({
57
+ name: "AdditiveOperation",
58
+ pattern: /\+|-|&/,
59
+ });
60
+ // // Multiplicative operations
61
+ // $('*' / '/' / 'div' / 'mod')
62
+ export const MULTIPLICATIVE_OPERATION = chevrotain.createToken({
63
+ name: "MultiplicativeOperation",
64
+ pattern: /\*|\/|div|mod/,
65
+ longer_alt: IDENTIFIER,
66
+ });
67
+ export const COMMA = chevrotain.createToken({ name: "Comma", pattern: /,/ });
68
+ export const NUMBER = chevrotain.createToken({
69
+ name: "Number",
70
+ pattern: /[0-9]+(\.[0-9]+)?/,
71
+ });
72
+ export const STRING = chevrotain.createToken({
73
+ name: "String",
74
+ pattern: /'[^']*'/,
75
+ });
76
+ export const BOOLEAN = chevrotain.createToken({
77
+ name: "Boolean",
78
+ pattern: /true|false/,
79
+ longer_alt: IDENTIFIER,
80
+ });
81
+ export const NULL = chevrotain.createToken({
82
+ name: "Null",
83
+ pattern: /{}/,
84
+ });
85
+ export const WHITESPACE = chevrotain.createToken({
86
+ name: "WhiteSpace",
87
+ pattern: /\s+/,
88
+ group: chevrotain.Lexer.SKIPPED,
89
+ });
90
+ export const DATETIME_PRECISION = chevrotain.createToken({
91
+ name: "DateTimePrecision",
92
+ pattern: /year|month|week|day|hour|minute|second|millisecond/,
93
+ longer_alt: IDENTIFIER,
94
+ });
95
+ export const PLURAL_DATETIME_PRECISION = chevrotain.createToken({
96
+ name: "PluralDateTimePrecision",
97
+ pattern: /years|months|weeks|days|hours|minutes|seconds|milliseconds/,
98
+ longer_alt: IDENTIFIER,
99
+ });
100
+ const DATE_FORMAT = "[0-9][0-9][0-9][0-9](-[0-9][0-9](-[0-9][0-9])?)?";
101
+ const TIME_FORMAT = "[0-9][0-9](:[0-9][0-9](:[0-9][0-9](\\.[0-9]+)?)?)?";
102
+ const TIMEZONE_FORMAT = "(Z|(\\+|-)[0-9][0-9]:[0-9][0-9])";
103
+ export const TIME = chevrotain.createToken({
104
+ name: "TIME",
105
+ pattern: new RegExp(`@T${TIME_FORMAT}`),
106
+ });
107
+ export const DATE = chevrotain.createToken({
108
+ name: "DATE",
109
+ pattern: new RegExp(`@${DATE_FORMAT}`),
110
+ });
111
+ export const DATETIME = chevrotain.createToken({
112
+ name: "DATETIME",
113
+ pattern: new RegExp(`@${DATE_FORMAT}(T${TIME_FORMAT}(${TIMEZONE_FORMAT})?)?`),
114
+ });
115
+ export const THIS = chevrotain.createToken({
116
+ name: "THIS",
117
+ pattern: /\$this/,
118
+ });
119
+ export const INDEX = chevrotain.createToken({
120
+ name: "INDEX",
121
+ pattern: /\$index/,
122
+ });
123
+ export const TOTAL = chevrotain.createToken({
124
+ name: "TOTAL",
125
+ pattern: /\$total/,
126
+ });
127
+ export const PERCENTAGE = chevrotain.createToken({
128
+ name: "TOTAL",
129
+ pattern: /%/,
130
+ });
131
+ export const LEFT_PARAN = chevrotain.createToken({
132
+ name: "LEFT_PARAN",
133
+ pattern: /\(/,
134
+ });
135
+ export const RIGHT_PARAN = chevrotain.createToken({
136
+ name: "RIGHT_PARAN",
137
+ pattern: /\)/,
138
+ });
139
+ export const LEFT_BRACKET = chevrotain.createToken({
140
+ name: "LEFT_PARAN",
141
+ pattern: /\[/,
142
+ });
143
+ export const RIGHT_BRACKET = chevrotain.createToken({
144
+ name: "RIGHT_PARAN",
145
+ pattern: /\]/,
146
+ });
147
+ export const DOT = chevrotain.createToken({
148
+ name: "DOT",
149
+ pattern: /\./,
150
+ });
151
+ // note we are placing WhiteSpace first as it is very common thus it will speed up the lexer.
152
+ export const allTokens = [
153
+ DELIMINATED_IDENTIFIER,
154
+ WHITESPACE,
155
+ COMMA,
156
+ PERCENTAGE,
157
+ LEFT_PARAN,
158
+ RIGHT_PARAN,
159
+ LEFT_BRACKET,
160
+ RIGHT_BRACKET,
161
+ DOT,
162
+ // "keywords" appear before the Identifier
163
+ IMPLIES_OPERATION,
164
+ OR_OPERATION,
165
+ AND_OPERATION,
166
+ MEMBERSHIP_OPERATION,
167
+ EQUALITY_OPERATION,
168
+ UNION_OPERATION,
169
+ TYPE_OPERATION,
170
+ ADDITIVE_OPERATION,
171
+ MULTIPLICATIVE_OPERATION,
172
+ DATETIME,
173
+ DATE,
174
+ TIME,
175
+ BOOLEAN,
176
+ DATETIME_PRECISION,
177
+ PLURAL_DATETIME_PRECISION,
178
+ THIS,
179
+ TOTAL,
180
+ INDEX,
181
+ // After Operators for keywords.
182
+ IDENTIFIER,
183
+ // Literals
184
+ NULL,
185
+ NUMBER,
186
+ STRING,
187
+ ];
188
+ const SelectLexer = new chevrotain.Lexer(allTokens);
189
+ export default SelectLexer;
190
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/parserv2/lexer.ts"],"names":[],"mappings":"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"}