@freelog/freelog-cg-collection 1.0.13 → 1.0.15
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.
- package/CollectionPolicyCustomVisitor.js +174 -93
- package/dist/helper/PolicyHelper.d.ts +1 -1
- package/dist/helper/PolicyHelper.js +38 -3
- package/package.json +1 -1
- package/resources/images/scope.png +0 -0
- package/resources/zhaojn.json +429 -995
- package/resources/zhaojn.sc +18 -31
- package/src/helper/PolicyHelper.ts +37 -2
- package/test/helper/PolicyHelperTest.test.ts +16 -5
- package/test/helper/QueryEchoServiceLabels.ts +10 -0
|
@@ -14,14 +14,22 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
14
14
|
this.audienceSection = {conditions: []};
|
|
15
15
|
// 全局定义(变量)声明
|
|
16
16
|
this.varDeclarationList = [];
|
|
17
|
-
this.varDeclarationMap = new Map();
|
|
18
17
|
// 状态机
|
|
19
18
|
this.stateMachine = [];
|
|
20
19
|
|
|
20
|
+
this.currentAssignmentClauseObj = null;
|
|
21
|
+
this.currentBuildInFunctionObj = null;
|
|
21
22
|
this.currentState = null;
|
|
22
23
|
this.currentStateObj = null;
|
|
23
24
|
this.currentEventElem = null;
|
|
24
|
-
this.parseState = {
|
|
25
|
+
this.parseState = {
|
|
26
|
+
inFsmState: 0,
|
|
27
|
+
inFsmEvent: 0,
|
|
28
|
+
inContextArgsSectionAtEvent: 0,
|
|
29
|
+
inActionSection: 0,
|
|
30
|
+
atAssignmentClause: 0,
|
|
31
|
+
atBuildInFunction: 0
|
|
32
|
+
};
|
|
25
33
|
|
|
26
34
|
this.expHelper = new ExpHelper();
|
|
27
35
|
this.functionHelper = new FunctionHelper();
|
|
@@ -42,6 +50,65 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
42
50
|
return this.generateVarValueTypeList(this.varDeclarationList);
|
|
43
51
|
}
|
|
44
52
|
|
|
53
|
+
checkVarDeclarationEnable(varName) {
|
|
54
|
+
if (system_keywords.varList.indexOf(varName) !== -1) {
|
|
55
|
+
throw new Error(`不能和系统关键字同名 --- ${varName}`);
|
|
56
|
+
}
|
|
57
|
+
if (this.varDeclarationList.find(vd => vd["varName"] === varName) != null) {
|
|
58
|
+
throw new Error(`不能重复定义同名的全局变量 --- ${varName}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
* 绘制当前符号表
|
|
64
|
+
*/
|
|
65
|
+
drawSymbolTable() {
|
|
66
|
+
let variables = [];
|
|
67
|
+
for (let c of context_variables) {
|
|
68
|
+
variables.push({name: c, scope: "context"});
|
|
69
|
+
}
|
|
70
|
+
if (this.parseState.inFsmState === 1 || this.parseState.inFsmEvent === 1) {
|
|
71
|
+
for (let v of this.varDeclarationList) {
|
|
72
|
+
variables.push({name: v["varName"], type: v["varValueType"], scope: "global"});
|
|
73
|
+
}
|
|
74
|
+
for (let s of this.currentStateObj["stateContextArgs"]) {
|
|
75
|
+
variables.push({name: s, scope: "fsm"});
|
|
76
|
+
}
|
|
77
|
+
for (let a of this.currentStateObj["assignments"]) {
|
|
78
|
+
if (a["type"] === "varInitial") {
|
|
79
|
+
variables.push({name: a["varName"], type: a["varValueType"], scope: "fsm"});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (this.parseState.inContextArgsSectionAtEvent || this.parseState.inActionSection) {
|
|
84
|
+
for (let p of this.currentEventElem["config_params"]) {
|
|
85
|
+
variables.push({
|
|
86
|
+
name: p["name"],
|
|
87
|
+
type: p["type"],
|
|
88
|
+
regex: p["type"] === "argsGroup" ? `^\\$event\\.${p["name"]}(\\.[0-9A-Za-z_]+)*$` : `^\\$event\\.${p["name"]}$`,
|
|
89
|
+
scope: "event"
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return variables;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* 符号表包含某个变量
|
|
99
|
+
* @param varName 变量名
|
|
100
|
+
* @returns {boolean}
|
|
101
|
+
*/
|
|
102
|
+
symbolTableHas(varName) {
|
|
103
|
+
return this.drawSymbolTable().find(s => {
|
|
104
|
+
if (s["scope"] !== "event") {
|
|
105
|
+
return s["name"] === varName;
|
|
106
|
+
} else {
|
|
107
|
+
return varName.match(s["regex"]) != null;
|
|
108
|
+
}
|
|
109
|
+
}) != null;
|
|
110
|
+
}
|
|
111
|
+
|
|
45
112
|
visitAudience_clause(ctx) {
|
|
46
113
|
this.audienceSection["audiences"] = ctx.audience().map(elem => elem.getText());
|
|
47
114
|
|
|
@@ -74,14 +141,8 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
74
141
|
varValueObj: this.visitAssignment_clause(ctx.assignment_clause())
|
|
75
142
|
};
|
|
76
143
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
if (this.varDeclarationMap.has(varElem.varName)) {
|
|
81
|
-
throw new Error(`不能重复定义同名的全局变量 --- ${varElem.varName}`);
|
|
82
|
-
} else {
|
|
83
|
-
this.varDeclarationMap.set(varElem.varName, varElem);
|
|
84
|
-
}
|
|
144
|
+
this.checkVarDeclarationEnable(varElem.varName);
|
|
145
|
+
|
|
85
146
|
varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
|
|
86
147
|
console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
|
|
87
148
|
|
|
@@ -99,14 +160,8 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
99
160
|
varValueObj: this.visitAssignment_clause(ctx.assignment_clause())
|
|
100
161
|
};
|
|
101
162
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
if (this.varDeclarationMap.has(varElem.varName)) {
|
|
106
|
-
throw new Error(`不能重复定义同名的全局变量 --- ${varElem.varName}`);
|
|
107
|
-
} else {
|
|
108
|
-
this.varDeclarationMap.set(varElem.varName, varElem);
|
|
109
|
-
}
|
|
163
|
+
this.checkVarDeclarationEnable(varElem.varName);
|
|
164
|
+
|
|
110
165
|
varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
|
|
111
166
|
console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
|
|
112
167
|
|
|
@@ -132,20 +187,17 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
132
187
|
}
|
|
133
188
|
varElem["paramList"] = paramList;
|
|
134
189
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
if (this.varDeclarationMap.has(varElem.varName)) {
|
|
139
|
-
throw new Error(`不能重复定义同名的全局变量 --- ${varElem.varName}`);
|
|
140
|
-
} else {
|
|
141
|
-
this.varDeclarationMap.set(varElem.varName, varElem);
|
|
142
|
-
}
|
|
190
|
+
this.checkVarDeclarationEnable(varElem.varName);
|
|
191
|
+
|
|
143
192
|
this.varDeclarationList.push(varElem);
|
|
144
193
|
|
|
145
194
|
return varElem;
|
|
146
195
|
}
|
|
147
196
|
|
|
148
197
|
visitState_definition(ctx) {
|
|
198
|
+
console.debug(`^^ ${ctx.state_name().getText()}`)
|
|
199
|
+
|
|
200
|
+
this.parseState.inFsmState = 1;
|
|
149
201
|
this.currentState = ctx.state_name().getText();
|
|
150
202
|
this.currentStateObj = {stateName: this.currentState, assignments: [], events: []};
|
|
151
203
|
if (ctx.service_state_section() != null) {
|
|
@@ -159,8 +211,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
159
211
|
this.stateMachine.push(this.currentStateObj);
|
|
160
212
|
|
|
161
213
|
let result = super.visitState_definition(ctx);
|
|
162
|
-
this.
|
|
163
|
-
this.currentStateObj = null;
|
|
214
|
+
this.parseState.inFsmState = 0;
|
|
164
215
|
return result;
|
|
165
216
|
}
|
|
166
217
|
|
|
@@ -188,24 +239,22 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
188
239
|
varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
|
|
189
240
|
};
|
|
190
241
|
|
|
191
|
-
|
|
192
|
-
// throw new Error(`全局变量不可以被再次赋值 --- ${assignmentElem.varName}`);
|
|
193
|
-
// }
|
|
194
|
-
if (this.currentStateObj["assignments"].find(elem => {
|
|
195
|
-
return elem.varName === assignmentElem.varName;
|
|
196
|
-
}) == null) {
|
|
242
|
+
if (this.currentStateObj["assignments"].find(elem => elem.varName === assignmentElem.varName) == null) {
|
|
197
243
|
throw new Error(`该局部变量未声明 --- ${assignmentElem.varName}`);
|
|
198
244
|
}
|
|
199
245
|
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
200
246
|
assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
201
|
-
|
|
202
|
-
let varValueTypeListTmp = [...varValueTypeList].reverse();
|
|
203
|
-
let varValueTypeObj = varValueTypeListTmp.find(elem => {
|
|
204
|
-
return elem.varName === assignmentElem.varName;
|
|
205
|
-
});
|
|
247
|
+
let varValueTypeObj = [...varValueTypeList].reverse().find(elem => elem.varName === assignmentElem.varName);
|
|
206
248
|
if (assignmentElem["varValueType"] !== varValueTypeObj.varValueType) {
|
|
207
249
|
throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
|
|
208
250
|
}
|
|
251
|
+
if (this.currentAssignmentClauseObj != null && this.currentAssignmentClauseObj["variableChainList"] != null) {
|
|
252
|
+
for (let vc of this.currentAssignmentClauseObj["variableChainList"]) {
|
|
253
|
+
if (!this.symbolTableHas(vc)) {
|
|
254
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${assignmentElem.content}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
209
258
|
|
|
210
259
|
this.currentStateObj["assignments"].push(assignmentElem);
|
|
211
260
|
|
|
@@ -221,7 +270,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
221
270
|
varValueObj: this.visitAssignment_clause(ctx.assignment_clause())
|
|
222
271
|
};
|
|
223
272
|
|
|
224
|
-
if (this.
|
|
273
|
+
if (this.varDeclarationList.find(vd => vd["varName"] === assignmentElem.varName) != null) {
|
|
225
274
|
throw new Error(`局部变量不可以和全局变量同名 --- ${assignmentElem.varName}`);
|
|
226
275
|
}
|
|
227
276
|
if (this.currentStateObj["stateContextArgs"].indexOf(assignmentElem.varName) !== -1) {
|
|
@@ -232,10 +281,18 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
232
281
|
}) != null) {
|
|
233
282
|
throw new Error(`该局部变量已声明 --- ${assignmentElem.varName}`);
|
|
234
283
|
}
|
|
284
|
+
if (this.currentAssignmentClauseObj != null && this.currentAssignmentClauseObj["variableChainList"] != null) {
|
|
285
|
+
for (let vc of this.currentAssignmentClauseObj["variableChainList"]) {
|
|
286
|
+
if (!this.symbolTableHas(vc)) {
|
|
287
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${assignmentElem.content}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
235
292
|
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
236
293
|
assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
237
294
|
|
|
238
|
-
console.debug(
|
|
295
|
+
console.debug(`${ctx.getText()} --> ${assignmentElem["varValueType"]}`);
|
|
239
296
|
|
|
240
297
|
this.currentStateObj["assignments"].push(assignmentElem);
|
|
241
298
|
|
|
@@ -244,14 +301,18 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
244
301
|
|
|
245
302
|
visitEventNormal(ctx) {
|
|
246
303
|
console.debug(`>> ${ctx.event().getText()}`);
|
|
304
|
+
this.parseState.inFsmEvent = 1;
|
|
247
305
|
|
|
248
306
|
let builtInFunctionResult = this.visitBuilt_in_function(ctx.event().built_in_function());
|
|
249
307
|
this.currentEventElem = {
|
|
250
308
|
type: "normal",
|
|
251
309
|
content: ctx.getText(),
|
|
310
|
+
config_params: [],
|
|
252
311
|
eventName: builtInFunctionResult["funcName"],
|
|
312
|
+
variableChainList: builtInFunctionResult["variableChainList"],
|
|
253
313
|
eventParamList: builtInFunctionResult["paramList"],
|
|
254
314
|
toState: ctx.state_name().getText(),
|
|
315
|
+
stateContextArgs: [],
|
|
255
316
|
actions: []
|
|
256
317
|
};
|
|
257
318
|
if (ctx.event().event_path() != null) {
|
|
@@ -269,7 +330,6 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
269
330
|
}
|
|
270
331
|
return suitable;
|
|
271
332
|
});
|
|
272
|
-
let event_configParamList = [];
|
|
273
333
|
if (event_config != null) {
|
|
274
334
|
try {
|
|
275
335
|
if (!this.functionHelper.argsMatch(this.currentEventElem["eventParamList"], event_config["paramList"], this.getVarDeclarationValueTypeList())) {
|
|
@@ -279,38 +339,16 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
279
339
|
console.debug(`参数验证错误 ----- ${ctx.event().getText()}`);
|
|
280
340
|
throw e;
|
|
281
341
|
}
|
|
282
|
-
|
|
342
|
+
this.currentEventElem["config_params"] = event_config["paramList"];
|
|
343
|
+
}
|
|
344
|
+
for (let vc of this.currentEventElem["variableChainList"]) {
|
|
345
|
+
if (!this.symbolTableHas(vc)) {
|
|
346
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${this.currentEventElem["content"]}`);
|
|
347
|
+
}
|
|
283
348
|
}
|
|
284
349
|
|
|
285
350
|
if (ctx.state_context_args_section_at_event() != null) {
|
|
286
|
-
this.
|
|
287
|
-
this.parseState.inContextArgsSectionAtEvent = 1;
|
|
288
|
-
let paramElem = {
|
|
289
|
-
paramName: elem.sc_args_at_event_param_name().getText(),
|
|
290
|
-
paramValue: elem.sc_args_at_event_param_value().assignment_clause().getText(),
|
|
291
|
-
paramValueObj: this.visitAssignment_clause(elem.sc_args_at_event_param_value().assignment_clause()),
|
|
292
|
-
content: elem.getText()
|
|
293
|
-
};
|
|
294
|
-
this.parseState.inContextArgsSectionAtEvent = 0;
|
|
295
|
-
|
|
296
|
-
if (paramElem["paramValueObj"]["expType"] === "variableChain"
|
|
297
|
-
&& context_variables.indexOf(paramElem["paramValue"]) === -1
|
|
298
|
-
&& !this.varDeclarationMap.has(paramElem["paramValue"])
|
|
299
|
-
&& this.currentStateObj["stateContextArgs"].indexOf(paramElem["paramValue"]) === -1
|
|
300
|
-
&& this.currentStateObj["assignments"].find(assignment => assignment.varName === paramElem["paramValue"]) == null
|
|
301
|
-
&& event_configParamList.find(event_configParam => {
|
|
302
|
-
if (event_configParam["type"] === "argsGroup") {
|
|
303
|
-
return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}(\\.[0-9A-Za-z_]+)*$`) != null
|
|
304
|
-
} else {
|
|
305
|
-
return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}$`) != null;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
) == null) {
|
|
309
|
-
throw new Error(`该环境参数未声明 --- ${paramElem["content"]}`);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
return paramElem;
|
|
313
|
-
});
|
|
351
|
+
this.visitState_context_args_section_at_event(ctx.state_context_args_section_at_event());
|
|
314
352
|
}
|
|
315
353
|
|
|
316
354
|
if (ctx.action_section() != null) {
|
|
@@ -320,7 +358,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
320
358
|
this.currentStateObj["events"].push(this.currentEventElem);
|
|
321
359
|
|
|
322
360
|
let result = this.currentEventElem;
|
|
323
|
-
this.
|
|
361
|
+
this.parseState.inFsmEvent = 0;
|
|
324
362
|
return result;
|
|
325
363
|
}
|
|
326
364
|
|
|
@@ -331,16 +369,36 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
331
369
|
|
|
332
370
|
this.currentStateObj["events"].push(this.currentEventElem);
|
|
333
371
|
|
|
334
|
-
|
|
335
|
-
|
|
372
|
+
return this.currentEventElem;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
visitState_context_args_section_at_event(ctx) {
|
|
376
|
+
this.parseState.inContextArgsSectionAtEvent = 1;
|
|
377
|
+
this.currentEventElem["stateContextArgs"] = ctx.sc_args_at_event_param().map(elem => {
|
|
378
|
+
let paramElem = {
|
|
379
|
+
paramName: elem.sc_args_at_event_param_name().getText(),
|
|
380
|
+
paramValue: elem.sc_args_at_event_param_value().assignment_clause().getText(),
|
|
381
|
+
paramValueObj: this.visitAssignment_clause(elem.sc_args_at_event_param_value().assignment_clause()),
|
|
382
|
+
content: elem.getText()
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
for (let vc of this.currentAssignmentClauseObj["variableChainList"]) {
|
|
386
|
+
if (!this.symbolTableHas(vc)) {
|
|
387
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${this.currentEventElem["content"]}`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return paramElem;
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
let result = super.visitState_context_args_section_at_event(ctx);
|
|
395
|
+
this.parseState.inContextArgsSectionAtEvent = 0;
|
|
336
396
|
return result;
|
|
337
397
|
}
|
|
338
398
|
|
|
339
399
|
visitAction_section(ctx) {
|
|
340
400
|
this.parseState.inActionSection = 1;
|
|
341
401
|
|
|
342
|
-
this.currentEventElem["actions"] = [];
|
|
343
|
-
|
|
344
402
|
let result = super.visitAction_section(ctx);
|
|
345
403
|
this.parseState.inActionSection = 0;
|
|
346
404
|
return result;
|
|
@@ -350,6 +408,11 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
350
408
|
let actionElem = {
|
|
351
409
|
type: "functionCall", content: ctx.getText(), actionObj: this.visitFunction_call(ctx.function_call())
|
|
352
410
|
};
|
|
411
|
+
for (let vc of actionElem["actionObj"]["variableChainList"]) {
|
|
412
|
+
if (!this.symbolTableHas(vc)) {
|
|
413
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${actionElem["content"]}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
353
416
|
|
|
354
417
|
this.currentEventElem["actions"].push(actionElem);
|
|
355
418
|
|
|
@@ -366,7 +429,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
366
429
|
varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
|
|
367
430
|
};
|
|
368
431
|
|
|
369
|
-
if (this.
|
|
432
|
+
if (this.varDeclarationList.find(vd => vd["varName"] === actionObj.varName) != null) {
|
|
370
433
|
throw new Error(`全局变量不可以被再次赋值 --- ${actionObj.varName}`);
|
|
371
434
|
}
|
|
372
435
|
if (this.currentStateObj["assignments"].find(elem => {
|
|
@@ -376,14 +439,15 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
376
439
|
}
|
|
377
440
|
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
378
441
|
actionObj["varValueType"] = this.expHelper.guessBaseTypeByExpType(actionObj["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
379
|
-
|
|
380
|
-
let varValueTypeListTmp = [...varValueTypeList].reverse();
|
|
381
|
-
let varValueTypeObj = varValueTypeListTmp.find(elem => {
|
|
382
|
-
return elem.varName === actionObj.varName;
|
|
383
|
-
});
|
|
442
|
+
let varValueTypeObj = [...varValueTypeList].reverse().find(elem => elem.varName === actionObj.varName);
|
|
384
443
|
if (actionObj["varValueType"] !== varValueTypeObj.varValueType) {
|
|
385
444
|
throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
|
|
386
445
|
}
|
|
446
|
+
for (let vc of this.currentAssignmentClauseObj["variableChainList"]) {
|
|
447
|
+
if (!this.symbolTableHas(vc)) {
|
|
448
|
+
throw new Error(`存在无效的变量引用 --- ${vc} | ${this.currentEventElem["content"]}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
387
451
|
|
|
388
452
|
actionElem["actionObj"] = actionObj;
|
|
389
453
|
this.currentEventElem["actions"].push(actionElem);
|
|
@@ -392,19 +456,26 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
392
456
|
}
|
|
393
457
|
|
|
394
458
|
visitAssignment_clause(ctx) {
|
|
459
|
+
this.parseState.atAssignmentClause++;
|
|
460
|
+
this.currentAssignmentClauseObj = {variableChainList: []};
|
|
461
|
+
let result = null;
|
|
462
|
+
|
|
395
463
|
if (ctx.expression() != null) {
|
|
396
|
-
|
|
464
|
+
result = this.visitExpression(ctx.expression());
|
|
397
465
|
} else if (ctx.boolean_expression() != null) {
|
|
398
|
-
|
|
466
|
+
result = this.visitBoolean_expression(ctx.boolean_expression());
|
|
399
467
|
} else if (ctx.condition_expression() != null) {
|
|
400
|
-
|
|
468
|
+
result = this.visitCondition_expression(ctx.condition_expression());
|
|
401
469
|
} else if (ctx.args_group_expression() != null) {
|
|
402
|
-
|
|
470
|
+
result = this.visitArgs_group_expression(ctx.args_group_expression());
|
|
403
471
|
} else if (ctx.collection_expression() != null) {
|
|
404
|
-
|
|
472
|
+
result = this.visitCollection_expression(ctx.collection_expression());
|
|
405
473
|
} else {
|
|
406
|
-
|
|
474
|
+
result = super.visitAssignment_clause(ctx);
|
|
407
475
|
}
|
|
476
|
+
|
|
477
|
+
this.parseState.atAssignmentClause--;
|
|
478
|
+
return result;
|
|
408
479
|
}
|
|
409
480
|
|
|
410
481
|
visitExpression_collection_clause(ctx) {
|
|
@@ -530,6 +601,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
530
601
|
|
|
531
602
|
visitBoolean_expression_clause(ctx) {
|
|
532
603
|
let result = null;
|
|
604
|
+
|
|
533
605
|
if (ctx.boolean_atom() != null) {
|
|
534
606
|
result = this.visitExpBooleanSingle(ctx);
|
|
535
607
|
} else if (ctx.boolean_op_collection() != null) {
|
|
@@ -712,7 +784,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
712
784
|
}
|
|
713
785
|
|
|
714
786
|
visitFunction_call(ctx) {
|
|
715
|
-
console.debug(
|
|
787
|
+
console.debug(`| ${this.parseState.inFsmState}-${this.parseState.inFsmEvent}-${this.parseState.inContextArgsSectionAtEvent}-${this.parseState.inActionSection} | >> ${ctx.getText()}`);
|
|
716
788
|
|
|
717
789
|
let result = this.visitBuilt_in_function(ctx.built_in_function());
|
|
718
790
|
result["expType"] = "functionCall";
|
|
@@ -736,15 +808,17 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
736
808
|
}
|
|
737
809
|
|
|
738
810
|
visitBuilt_in_function(ctx) {
|
|
739
|
-
|
|
811
|
+
this.parseState.atBuildInFunction++;
|
|
812
|
+
this.currentBuildInFunctionObj = {funcName: ctx.funcname().getText(), variableChainList: []};
|
|
740
813
|
|
|
741
814
|
if (ctx.expression_param_list() != null) {
|
|
742
|
-
|
|
815
|
+
this.currentBuildInFunctionObj["paramList"] = this.visitExpression_param_list(ctx.expression_param_list());
|
|
743
816
|
} else {
|
|
744
|
-
|
|
817
|
+
this.currentBuildInFunctionObj["paramList"] = [];
|
|
745
818
|
}
|
|
746
819
|
|
|
747
|
-
|
|
820
|
+
this.parseState.atBuildInFunction--;
|
|
821
|
+
return this.currentBuildInFunctionObj;
|
|
748
822
|
}
|
|
749
823
|
|
|
750
824
|
visitScientific(ctx) {
|
|
@@ -776,6 +850,13 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
776
850
|
varType = "context";
|
|
777
851
|
}
|
|
778
852
|
|
|
853
|
+
if (this.parseState.atAssignmentClause > 0) {
|
|
854
|
+
this.currentAssignmentClauseObj["variableChainList"].push(content);
|
|
855
|
+
}
|
|
856
|
+
if (this.parseState.atBuildInFunction > 0) {
|
|
857
|
+
this.currentBuildInFunctionObj["variableChainList"].push(content);
|
|
858
|
+
}
|
|
859
|
+
|
|
779
860
|
return {expType: "variableChain", varType: varType, content: content};
|
|
780
861
|
}
|
|
781
862
|
}
|
|
@@ -14,7 +14,7 @@ export declare class PolicyHelper implements VarContextCapable<any>, Calculator,
|
|
|
14
14
|
protected functionHelper: FunctionHelper;
|
|
15
15
|
private audienceInfo;
|
|
16
16
|
constructor(policyInfo: PolicyInfo);
|
|
17
|
-
init(varContextCapable: VarContextCapable<any
|
|
17
|
+
init(varContextCapable: VarContextCapable<any>, checkConditions: boolean): void;
|
|
18
18
|
setVarGlobal(varName: string, varValue: any): void;
|
|
19
19
|
setVarGlobalList(varGlobalList: any[]): void;
|
|
20
20
|
getVarGlobal(varName: string): any;
|
|
@@ -16,7 +16,7 @@ class PolicyHelper {
|
|
|
16
16
|
this.audienceInfo = {};
|
|
17
17
|
}
|
|
18
18
|
// 在合约签约的时候,可签约条件和全局申明的变量是已经计算完毕的,在这里做这件事
|
|
19
|
-
init(varContextCapable) {
|
|
19
|
+
init(varContextCapable, checkConditions) {
|
|
20
20
|
let varDeclarationList = this.policyInfo.varDeclarationList;
|
|
21
21
|
for (let varDeclaration of varDeclarationList) {
|
|
22
22
|
if (varDeclaration.type == "varGlobal") {
|
|
@@ -36,7 +36,42 @@ class PolicyHelper {
|
|
|
36
36
|
this.audienceInfo["audiences"] = this.policyInfo.audienceSection.audiences;
|
|
37
37
|
this.audienceInfo["condition"] = {};
|
|
38
38
|
for (let c of this.policyInfo.audienceSection.conditions) {
|
|
39
|
-
|
|
39
|
+
let ev = this.getExpValue(c.paramValueObj, varContextCapable);
|
|
40
|
+
if (c.paramName == "echoSubject" && ev["expType"] != "entity") {
|
|
41
|
+
throw new Error(`【echoSubject】类型错误!`);
|
|
42
|
+
}
|
|
43
|
+
if (c.paramName == "labels") {
|
|
44
|
+
if (!Array.isArray(ev)) {
|
|
45
|
+
throw new Error(`【labels】类型错误!`);
|
|
46
|
+
}
|
|
47
|
+
if (ev.find(elem => typeof elem != "string") != null) {
|
|
48
|
+
throw new Error(`【labels】元素错误!`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (c.paramName == "exps") {
|
|
52
|
+
if (!Array.isArray(ev)) {
|
|
53
|
+
throw new Error(`【exps】类型错误!`);
|
|
54
|
+
}
|
|
55
|
+
if (ev.find(elem => [true, false].indexOf(elem) == -1) != null) {
|
|
56
|
+
throw new Error(`【exps】元素错误!`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
this.audienceInfo["condition"][c.paramName] = ev;
|
|
60
|
+
}
|
|
61
|
+
if (checkConditions) {
|
|
62
|
+
if (this.audienceInfo["condition"]["exps"] != null) {
|
|
63
|
+
if (this.audienceInfo["condition"]["exps"].indexOf(false) != -1) {
|
|
64
|
+
throw new Error(`【exps】验证失败!`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (this.audienceInfo["condition"]["echoSubject"] != null && this.audienceInfo["condition"]["labels"] != null) {
|
|
68
|
+
let echoSubject = this.audienceInfo["condition"]["echoSubject"];
|
|
69
|
+
let contractLicensee = this.getVarContext("contract.licensee");
|
|
70
|
+
let labels = this.invoke("Query.EchoService.Labels", [echoSubject, contractLicensee]);
|
|
71
|
+
if (labels.filter(label => this.audienceInfo["condition"]["labels"].indexOf(label) != -1).length != this.audienceInfo["condition"]["labels"].length) {
|
|
72
|
+
throw new Error(`【echoSubject】【labels】验证失败!`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
40
75
|
}
|
|
41
76
|
for (let varDeclaration of varDeclarationList) {
|
|
42
77
|
if (varDeclaration.type == "varGlobal") {
|
|
@@ -105,4 +140,4 @@ class PolicyHelper {
|
|
|
105
140
|
}
|
|
106
141
|
}
|
|
107
142
|
exports.PolicyHelper = PolicyHelper;
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5SGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlci9Qb2xpY3lIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQXNDO0FBRXRDLHFEQUFnRDtBQU1oRCxNQUFhLFlBQVk7SUFnQnJCLFlBQVksVUFBc0I7UUFWMUIsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQVd6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwrQkFBYyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsSUFBSSxDQUFDLGlCQUF5QyxFQUFFLGVBQXdCO1FBQ3BFLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQztRQUM1RCxLQUFLLElBQUksY0FBYyxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFDRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUks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
|
package/package.json
CHANGED
|
Binary file
|