@smile-digital-health/crl 1.0.0 → 1.1.1

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.
@@ -1,9 +1,9 @@
1
1
  import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
2
2
  import { AbstractParseTreeVisitor } from "antlr4ts/tree/AbstractParseTreeVisitor";
3
- import { CrlContext, DecisionStatementContext, DecisionBodyContext, WhenBlockContext, BlockBodyContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, TerminologySystemCodeContext, ActivityStatementContext, ConceptStatementContext, InferredFromLineContext, InferredBodyContext, InferredFromExpressionContext, InformalOrContext, InformalAndContext, InformalNotContext, AtomContext, WhenWithBodyContext, WhenSingleActionContext, NestedWhenBlockContext, BlockActionContext, BlockStatementContext } from "../grammar/generated/antlr/CRLParser";
3
+ import { CrlContext, DecisionStatementContext, DecisionBodyContext, WhenBlockContext, BlockBodyContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, ActivityStatementContext, ConceptStatementContext, InferredFromBodyContext, InferredFromExpressionContext, InformalOrContext, InformalAndContext, InformalNotContext, AtomContext, WhenWithBodyContext, WhenSingleActionContext, NestedWhenBlockContext, BlockActionContext, BlockStatementContext } from "../grammar/generated/antlr/CRLParser";
4
4
  import { CRLParserVisitor } from "../grammar/generated/antlr/CRLParserVisitor";
5
5
  import type { CRLError } from "../types/errors";
6
- import { ASTNode, Decision, DecisionBody, WhenBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystemCode, Activity, Concept, InferredFromDefinition, ConceptReference, InformalAnd, InformalOr, NotExpression, GroupExpression, InferredFromConcept } from "./types";
6
+ import { ASTNode, Decision, DecisionBody, WhenBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystem, TerminologyCode, Activity, ActivityBody, ActivityRequest, ActivityWith, ActivityBecause, Concept, ConceptReference, InformalAnd, InformalOr, NotExpression, GroupExpression, InferredFromConcept } from "./types";
7
7
  import type { CRL } from "./types";
8
8
  type InformalNode = GroupExpression | ConceptReference | InformalAnd | NotExpression | InformalOr;
9
9
  export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> implements CRLParserVisitor<ASTNode> {
@@ -26,17 +26,20 @@ export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> imp
26
26
  visitUseStatement(ctx: UseStatementContext): UseDecision;
27
27
  visitTerminologyStatement(ctx: TerminologyStatementContext): Terminology;
28
28
  visitTerminologyValueset(ctx: TerminologyValuesetContext): TerminologyValueset;
29
- visitTerminologySystemCode(ctx: TerminologySystemCodeContext): TerminologySystemCode;
30
- private parseWithClause;
31
- private parseRationaleClause;
29
+ visitTerminologySystem(ctx: import("../grammar/generated/antlr/CRLParser").TerminologySystemContext): TerminologySystem;
30
+ visitTerminologyCode(ctx: import("../grammar/generated/antlr/CRLParser").TerminologyCodeContext): TerminologyCode;
32
31
  visitActivityStatement(ctx: ActivityStatementContext): Activity;
32
+ visitActivityBody(ctx: import("../grammar/generated/antlr/CRLParser").ActivityBodyContext): ActivityBody;
33
+ visitActivityRequest(ctx: import("../grammar/generated/antlr/CRLParser").ActivityRequestContext): ActivityRequest;
34
+ visitActivityWith(ctx: import("../grammar/generated/antlr/CRLParser").ActivityWithContext): ActivityWith;
35
+ visitActivityBecause(ctx: import("../grammar/generated/antlr/CRLParser").ActivityBecauseContext): ActivityBecause;
33
36
  private parseConceptTypes;
37
+ private parseMeta;
34
38
  private parseEvidence;
35
39
  private parseConceptDefinition;
36
40
  visitConceptStatement(ctx: ConceptStatementContext): Concept;
37
- visitInferredFromLine(ctx: InferredFromLineContext): InferredFromDefinition;
38
- visitDefinitionConcept(ctx: InferredBodyContext): InferredFromConcept;
39
- visitDefinitionLogic(ctx: InferredBodyContext): GroupExpression | InferredFromConcept;
41
+ visitDefinitionConcept(ctx: InferredFromBodyContext): InferredFromConcept;
42
+ visitDefinitionLogic(ctx: InferredFromBodyContext): GroupExpression | InferredFromConcept;
40
43
  visitInferredFromExpression(ctx: InferredFromExpressionContext): InformalNode;
41
44
  visitInformalOr(ctx: InformalOrContext): InformalOr;
42
45
  visitInformalAnd(ctx: InformalAndContext): InformalAnd | NotExpression | GroupExpression | ConceptReference;
@@ -139,24 +139,34 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
139
139
  }
140
140
  visitTerminologyStatement(ctx) {
141
141
  const name = ctx.terminologyIdentifier().text.slice(1, -1);
142
- let definition;
143
- if (ctx.terminologyValueset()) {
144
- definition = this.visit(ctx.terminologyValueset());
145
- }
146
- else if (ctx.terminologySystemCode()) {
147
- definition = this.visit(ctx.terminologySystemCode());
148
- }
149
- else if (ctx.terminologyUnknown()) {
150
- definition = {
151
- type: "TerminologyUnknown",
152
- value: "",
153
- location: getLocation(ctx),
154
- };
142
+ const body = [];
143
+ const terminologyBody = ctx.terminologyBody();
144
+ if (terminologyBody) {
145
+ for (const line of terminologyBody.terminologyLine()) {
146
+ if (line.terminologyValueset) {
147
+ const valuesetCtx = line.terminologyValueset();
148
+ if (valuesetCtx) {
149
+ body.push(this.visitTerminologyValueset(valuesetCtx));
150
+ }
151
+ }
152
+ if (line.terminologySystemCode) {
153
+ const systemCodeCtx = line.terminologySystemCode();
154
+ if (systemCodeCtx) {
155
+ const systemCtx = systemCodeCtx.terminologySystem();
156
+ if (systemCtx) {
157
+ body.push(this.visitTerminologySystem(systemCtx));
158
+ }
159
+ for (const codeCtx of systemCodeCtx.terminologyCode()) {
160
+ body.push(this.visitTerminologyCode(codeCtx));
161
+ }
162
+ }
163
+ }
164
+ }
155
165
  }
156
166
  return {
157
167
  type: "Terminology",
158
168
  name,
159
- definition: definition,
169
+ body,
160
170
  location: getLocation(ctx),
161
171
  };
162
172
  }
@@ -164,64 +174,87 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
164
174
  const valuesetName = ctx.backtickString().text.slice(1, -1);
165
175
  return { type: "TerminologyValueset", valuesetName, location: getLocation(ctx) };
166
176
  }
167
- visitTerminologySystemCode(ctx) {
168
- let system = "";
169
- let code = "";
170
- if (ctx.backtickString && ctx.backtickString().length === 2) {
171
- const systemNode = ctx.backtickString(0);
172
- const codeNode = ctx.backtickString(1);
173
- if (systemNode?.text)
174
- system = systemNode.text.slice(1, -1);
175
- if (codeNode?.text)
176
- code = codeNode.text.slice(1, -1);
177
- }
178
- return { type: "TerminologySystemCode", system, code, location: getLocation(ctx) };
177
+ visitTerminologySystem(ctx) {
178
+ const system = ctx.backtickString().text.slice(1, -1);
179
+ return { type: "TerminologySystem", system, location: getLocation(ctx) };
179
180
  }
180
- parseWithClause(ctx) {
181
- let terminologyReference;
182
- let activityTypeValue;
183
- if (ctx.WITH()) {
184
- if (ctx.terminologyReference()) {
185
- terminologyReference = ctx.terminologyReference().text.slice(1, -1);
181
+ visitTerminologyCode(ctx) {
182
+ const code = ctx.backtickString().text.slice(1, -1);
183
+ return { type: "TerminologyCode", code, location: getLocation(ctx) };
184
+ }
185
+ visitActivityStatement(ctx) {
186
+ const name = ctx.activityIdentifier().text.slice(1, -1);
187
+ const body = this.visitActivityBody(ctx.activityBody());
188
+ return {
189
+ type: "Activity",
190
+ name,
191
+ body: body,
192
+ location: getLocation(ctx),
193
+ };
194
+ }
195
+ visitActivityBody(ctx) {
196
+ const request = this.visitActivityRequest(ctx.activityRequest());
197
+ let withClause;
198
+ let becauseClause;
199
+ if (ctx.activityWith) {
200
+ const withCtx = ctx.activityWith();
201
+ if (withCtx) {
202
+ withClause = this.visitActivityWith(withCtx);
186
203
  }
187
- else if (ctx.activityTypeValue()) {
188
- const atv = ctx.activityTypeValue();
189
- if (atv?.backtickString) {
190
- const backtickCtx = atv.backtickString();
191
- if (backtickCtx?.text !== undefined) {
192
- activityTypeValue = backtickCtx.text.slice(1, -1);
193
- }
194
- }
204
+ }
205
+ if (ctx.activityBecause) {
206
+ const becauseCtx = ctx.activityBecause();
207
+ if (becauseCtx) {
208
+ becauseClause = this.visitActivityBecause(becauseCtx);
195
209
  }
196
210
  }
197
- return { terminologyReference, activityTypeValue };
211
+ return {
212
+ type: "ActivityBody",
213
+ request: request,
214
+ ...(withClause ? { withClause } : {}),
215
+ ...(becauseClause ? { becauseClause } : {}),
216
+ location: getLocation(ctx),
217
+ };
198
218
  }
199
- parseRationaleClause(ctx) {
200
- if (ctx.rationale) {
201
- const rationaleCtx = ctx.rationale();
202
- if (rationaleCtx?.backtickString) {
203
- const backtickCtx = rationaleCtx.backtickString();
219
+ visitActivityRequest(ctx) {
220
+ const activityType = ctx.ACTIVITY_TYPE().text;
221
+ const doNotPerform = ctx.doNotPerform ? ctx.doNotPerform() != null : false;
222
+ return {
223
+ type: "ActivityRequest",
224
+ activityType,
225
+ ...(doNotPerform ? { doNotPerform } : {}),
226
+ location: getLocation(ctx),
227
+ };
228
+ }
229
+ visitActivityWith(ctx) {
230
+ let terminologyReference;
231
+ let activityTypeValue;
232
+ if (ctx.terminologyReference) {
233
+ const ref = ctx.terminologyReference();
234
+ if (ref)
235
+ terminologyReference = ref.text.slice(1, -1);
236
+ }
237
+ if (ctx.activityTypeValue) {
238
+ const atv = ctx.activityTypeValue();
239
+ if (atv?.backtickString) {
240
+ const backtickCtx = atv.backtickString();
204
241
  if (backtickCtx?.text !== undefined) {
205
- return backtickCtx.text.slice(1, -1);
242
+ activityTypeValue = backtickCtx.text.slice(1, -1);
206
243
  }
207
244
  }
208
245
  }
209
- return undefined;
246
+ return {
247
+ type: "ActivityWith",
248
+ ...(terminologyReference ? { terminologyReference } : {}),
249
+ ...(activityTypeValue ? { activityTypeValue } : {}),
250
+ location: getLocation(ctx),
251
+ };
210
252
  }
211
- visitActivityStatement(ctx) {
212
- const name = ctx.activityIdentifier().text.slice(1, -1);
213
- const request = ctx.ACTIVITY_TYPE().text;
214
- const { terminologyReference, activityTypeValue } = this.parseWithClause(ctx);
215
- const rationale = this.parseRationaleClause(ctx);
216
- const doNotPerform = ctx.doNotPerform?.() != null;
253
+ visitActivityBecause(ctx) {
254
+ const rationale = ctx.rationale().backtickString().text.slice(1, -1);
217
255
  return {
218
- type: "Activity",
219
- name,
220
- request,
221
- terminologyReference,
222
- activityTypeValue,
256
+ type: "ActivityBecause",
223
257
  rationale,
224
- doNotPerform,
225
258
  location: getLocation(ctx),
226
259
  };
227
260
  }
@@ -258,6 +291,23 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
258
291
  valueType: valueTypeToken.text,
259
292
  };
260
293
  }
294
+ parseMeta(bodyCtx) {
295
+ const metaLines = bodyCtx.metaLine?.() ?? [];
296
+ const metas = [];
297
+ for (const metaCtx of metaLines) {
298
+ const backtickCtx = metaCtx?.backtickString?.();
299
+ if (backtickCtx?.text !== undefined) {
300
+ metas.push(backtickCtx.text.slice(1, -1));
301
+ }
302
+ else if (backtickCtx?.BACKTICK_STRING) {
303
+ const token = backtickCtx.BACKTICK_STRING();
304
+ if (token?.text !== undefined) {
305
+ metas.push(token.text.slice(1, -1));
306
+ }
307
+ }
308
+ }
309
+ return metas;
310
+ }
261
311
  parseEvidence(bodyCtx) {
262
312
  if (bodyCtx.evidenceLine?.()) {
263
313
  const evidenceCtx = bodyCtx.evidenceLine?.();
@@ -292,11 +342,11 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
292
342
  location: getLocation(bodyCtx.codedFromLine()),
293
343
  };
294
344
  }
295
- else if (bodyCtx.inferredFromLine?.()) {
296
- const infCtx = bodyCtx.inferredFromLine();
345
+ else if (bodyCtx.inferredFromBody?.()) {
346
+ const infCtx = bodyCtx.inferredFromBody();
297
347
  if (!infCtx) {
298
348
  this.reportError("AstError", ctx, {
299
- message: "ConceptStatement: inferredFromLine() unexpectedly returned undefined",
349
+ message: "ConceptStatement: inferredFromBody() unexpectedly returned undefined",
300
350
  });
301
351
  return null;
302
352
  }
@@ -304,7 +354,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
304
354
  }
305
355
  else {
306
356
  this.reportError("AstError", ctx, {
307
- message: "ConceptStatement must have either codedFromLine or inferredFromLine",
357
+ message: "ConceptStatement must have either codedFromLine or inferredFromBody",
308
358
  });
309
359
  return null;
310
360
  }
@@ -323,6 +373,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
323
373
  return null;
324
374
  }
325
375
  const { conceptType, valueType } = types;
376
+ const meta = this.parseMeta(bodyCtx);
326
377
  const evidence = this.parseEvidence(bodyCtx);
327
378
  const definition = this.parseConceptDefinition(bodyCtx, ctx);
328
379
  if (!definition) {
@@ -333,31 +384,27 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
333
384
  name,
334
385
  conceptType,
335
386
  valueType,
336
- evidence,
387
+ ...(meta.length > 0 ? { meta } : {}),
388
+ ...(evidence ? { evidence } : {}),
337
389
  definition,
338
390
  location: getLocation(ctx),
339
391
  };
340
392
  }
341
- visitInferredFromLine(ctx) {
342
- const defCtx = ctx.inferredBody();
343
- const body = this.visit(defCtx);
344
- return { type: "InferredFromDefinition", body, location: getLocation(ctx) };
345
- }
346
393
  visitDefinitionConcept(ctx) {
347
394
  const refCtx = ctx.getRuleContext(0, CRLParser_1.InferredFromConceptReferenceContext);
348
- let pat = undefined;
349
- const patternCtx = refCtx?.patternStatement?.();
350
- if (patternCtx?.patternName?.().backtickString) {
351
- const backtickCtx = patternCtx.patternName().backtickString();
352
- if (backtickCtx?.text !== undefined) {
353
- pat = backtickCtx.text.slice(1, -1);
354
- }
355
- }
356
395
  const concept = refCtx?.conceptReference().text.slice(1, -1) ?? "";
396
+ const patternStmts = refCtx?.patternStatement?.();
397
+ let patterns = [];
398
+ if (patternStmts && patternStmts.length > 0) {
399
+ patterns = patternStmts.map((patCtx) => {
400
+ const backtickCtx = patCtx.patternName().backtickString();
401
+ return backtickCtx.text.slice(1, -1);
402
+ });
403
+ }
357
404
  return {
358
405
  type: "InferredFromDefinitionConcept",
359
- pattern: pat,
360
406
  concept,
407
+ ...(patterns.length > 0 ? { patterns } : {}),
361
408
  location: getLocation(ctx),
362
409
  };
363
410
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
@@ -63,34 +63,53 @@ export interface UseDecision extends ASTNode {
63
63
  export interface Terminology extends ASTNode {
64
64
  type: "Terminology";
65
65
  name: string;
66
- definition: TerminologyDefinition;
66
+ body: TerminologyBodyLine[];
67
67
  location: Location;
68
68
  }
69
- export type TerminologyDefinition = TerminologyValueset | TerminologyUnknown | TerminologySystemCode;
69
+ export type TerminologyBodyLine = TerminologyValueset | TerminologySystem | TerminologyCode;
70
70
  export interface TerminologyValueset extends ASTNode {
71
71
  type: "TerminologyValueset";
72
72
  valuesetName: string;
73
73
  location: Location;
74
74
  }
75
- export interface TerminologyUnknown extends ASTNode {
76
- type: "TerminologyUnknown";
77
- value: string;
75
+ export interface TerminologySystem extends ASTNode {
76
+ type: "TerminologySystem";
77
+ system: string;
78
78
  location: Location;
79
79
  }
80
- export interface TerminologySystemCode extends ASTNode {
81
- type: "TerminologySystemCode";
82
- system: string;
80
+ export interface TerminologyCode extends ASTNode {
81
+ type: "TerminologyCode";
83
82
  code: string;
84
83
  location: Location;
85
84
  }
86
85
  export interface Activity extends ASTNode {
87
86
  type: "Activity";
88
87
  name: string;
89
- request: ActivityType;
88
+ body: ActivityBody;
89
+ location: Location;
90
+ }
91
+ export interface ActivityBody extends ASTNode {
92
+ type: "ActivityBody";
93
+ request: ActivityRequest;
94
+ withClause?: ActivityWith;
95
+ becauseClause?: ActivityBecause;
96
+ location: Location;
97
+ }
98
+ export interface ActivityRequest extends ASTNode {
99
+ type: "ActivityRequest";
100
+ activityType: ActivityType;
101
+ doNotPerform?: boolean;
102
+ location: Location;
103
+ }
104
+ export interface ActivityWith extends ASTNode {
105
+ type: "ActivityWith";
90
106
  terminologyReference?: string;
91
107
  activityTypeValue?: string;
92
- rationale?: string;
93
- doNotPerform?: boolean;
108
+ location: Location;
109
+ }
110
+ export interface ActivityBecause extends ASTNode {
111
+ type: "ActivityBecause";
112
+ rationale: string;
94
113
  location: Location;
95
114
  }
96
115
  export interface Concept extends ASTNode {
@@ -99,7 +118,7 @@ export interface Concept extends ASTNode {
99
118
  conceptType: ConceptType;
100
119
  valueType: ConceptValueType;
101
120
  definition: ConceptDefinition;
102
- meta?: string;
121
+ meta?: string[];
103
122
  evidence?: string;
104
123
  location: Location;
105
124
  }
@@ -133,7 +152,7 @@ export interface GroupExpression extends ASTNode {
133
152
  export interface InferredFromConcept extends ASTNode {
134
153
  type: "InferredFromDefinitionConcept";
135
154
  concept: string;
136
- pattern?: string;
155
+ patterns?: string[];
137
156
  }
138
157
  export interface InferredFromDefinition extends ASTNode {
139
158
  type: "InferredFromDefinition";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":";;;AAwNA,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":";;;AA4OA,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA"}
@@ -14,49 +14,48 @@ export declare class CRLLexer extends Lexer {
14
14
  static readonly INFERRED_FROM = 8;
15
15
  static readonly CODED_FROM = 9;
16
16
  static readonly APPLY_PATTERN = 10;
17
- static readonly IS_SYSTEM = 11;
18
- static readonly AND_CODE = 12;
19
- static readonly IS_VALUESET = 13;
20
- static readonly IS_UNKNOWN_BACKTICK = 14;
21
- static readonly ALL_BLOCK = 15;
22
- static readonly ANY_BLOCK = 16;
23
- static readonly ACTIVITY = 17;
24
- static readonly AND = 18;
25
- static readonly BECAUSE = 19;
26
- static readonly CONCEPT = 20;
27
- static readonly DECISION = 21;
28
- static readonly NOT = 22;
29
- static readonly OR = 23;
30
- static readonly REQUEST = 24;
31
- static readonly TERMINOLOGY = 25;
32
- static readonly THEN = 26;
33
- static readonly WHEN = 27;
34
- static readonly WITH = 28;
35
- static readonly COLON = 29;
36
- static readonly DOT = 30;
37
- static readonly DASH = 31;
38
- static readonly LPAREN = 32;
39
- static readonly RPAREN = 33;
40
- static readonly HEADER = 34;
41
- static readonly QUOTED_STRING = 35;
42
- static readonly BACKTICK_STRING = 36;
43
- static readonly WS = 37;
44
- static readonly COMMENT = 38;
45
- static readonly COMMENT_BLOCK = 39;
46
- static readonly ERROR = 40;
47
- static readonly DO_NOT_PERFORM_DO = 41;
48
- static readonly DO_NOT_PERFORM_NOT = 42;
49
- static readonly DO_NOT_PERFORM_PERFORM = 43;
50
- static readonly ACTIVITY_TYPE = 44;
51
- static readonly ACTIVITY_WS = 45;
52
- static readonly ACTIVITY_COMMENT_BLOCK = 46;
53
- static readonly CONCEPT_TYPE = 47;
54
- static readonly CONCEPT_WS = 48;
55
- static readonly CONCEPT_COMMENT_BLOCK = 49;
56
- static readonly CONCEPT_VALUE_TYPE = 50;
57
- static readonly VALUE_TYPE_WS = 51;
58
- static readonly VALUE_TYPE_COMMENT_BLOCK = 52;
59
- static readonly DEFAULT_ErrorChar = 53;
17
+ static readonly CODE_IS = 11;
18
+ static readonly SYSTEM_IS = 12;
19
+ static readonly VALUESET_IS = 13;
20
+ static readonly ALL_BLOCK = 14;
21
+ static readonly ANY_BLOCK = 15;
22
+ static readonly ACTIVITY = 16;
23
+ static readonly AND = 17;
24
+ static readonly BECAUSE = 18;
25
+ static readonly CONCEPT = 19;
26
+ static readonly DECISION = 20;
27
+ static readonly NOT = 21;
28
+ static readonly OR = 22;
29
+ static readonly REQUEST = 23;
30
+ static readonly TERMINOLOGY = 24;
31
+ static readonly THEN = 25;
32
+ static readonly WHEN = 26;
33
+ static readonly WITH = 27;
34
+ static readonly COLON = 28;
35
+ static readonly DOT = 29;
36
+ static readonly DASH = 30;
37
+ static readonly LPAREN = 31;
38
+ static readonly RPAREN = 32;
39
+ static readonly HEADER = 33;
40
+ static readonly QUOTED_STRING = 34;
41
+ static readonly BACKTICK_STRING = 35;
42
+ static readonly WS = 36;
43
+ static readonly COMMENT = 37;
44
+ static readonly COMMENT_BLOCK = 38;
45
+ static readonly ERROR = 39;
46
+ static readonly DO_NOT_PERFORM_DO = 40;
47
+ static readonly DO_NOT_PERFORM_NOT = 41;
48
+ static readonly DO_NOT_PERFORM_PERFORM = 42;
49
+ static readonly ACTIVITY_TYPE = 43;
50
+ static readonly ACTIVITY_WS = 44;
51
+ static readonly ACTIVITY_COMMENT_BLOCK = 45;
52
+ static readonly CONCEPT_TYPE = 46;
53
+ static readonly CONCEPT_WS = 47;
54
+ static readonly CONCEPT_COMMENT_BLOCK = 48;
55
+ static readonly CONCEPT_VALUE_TYPE = 49;
56
+ static readonly VALUE_TYPE_WS = 50;
57
+ static readonly VALUE_TYPE_COMMENT_BLOCK = 51;
58
+ static readonly DEFAULT_ErrorChar = 52;
60
59
  static readonly ACTIVITY_MODE = 1;
61
60
  static readonly CONCEPT_MODE = 2;
62
61
  static readonly VALUE_TYPE_MODE = 3;