@freelog/freelog-cg-collection 1.0.9 → 1.0.11
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 +165 -50
- package/dist/helper/ExpHelper.d.ts +5 -1
- package/dist/helper/ExpHelper.js +27 -5
- package/dist/helper/FunctionHelper.d.ts +6 -0
- package/dist/helper/FunctionHelper.js +27 -3
- package/dist/model/policy/ActionInfo.d.ts +1 -0
- package/dist/model/policy/EventInfo.d.ts +4 -0
- package/dist/model/policy/PolicyInfo.d.ts +6 -0
- package/dist/model/policy/VarDeclarationInfo.d.ts +1 -0
- package/gen/CollectionPolicyLexer.js +552 -566
- package/gen/CollectionPolicyListener.js +27 -9
- package/gen/CollectionPolicyParser.js +1203 -955
- package/gen/CollectionPolicyVisitor.js +18 -6
- package/gen/LexToken.js +554 -568
- package/index.js +2 -2
- package/indexTest.js +1 -1
- package/package.json +1 -1
- package/resources/context_config/context_variables.json +19 -0
- package/resources/context_config/event_configs.json +5 -0
- package/resources/context_config/function_configs.json +32 -6
- package/resources/context_config/service_state_configs.json +11 -0
- package/resources/zhaojn.json +1053 -188
- package/resources/zhaojn.sc +36 -14
- package/src/helper/ExpHelper.ts +28 -6
- package/src/helper/FunctionHelper.ts +31 -5
- package/src/model/policy/ActionInfo.ts +1 -0
- package/src/model/policy/EventInfo.ts +4 -0
- package/src/model/policy/PolicyInfo.ts +6 -0
- package/src/model/policy/VarDeclarationInfo.ts +1 -0
|
@@ -2,12 +2,14 @@ const {CollectionPolicyVisitor} = require("./gen/CollectionPolicyVisitor");
|
|
|
2
2
|
const {ExpHelper} = require("./dist/helper/ExpHelper");
|
|
3
3
|
const {FunctionHelper} = require("./dist/helper/FunctionHelper");
|
|
4
4
|
const system_keywords = require("./resources/context_config/system_keywords.json");
|
|
5
|
-
const
|
|
5
|
+
const context_variables = require("./resources/context_config/context_variables.json");
|
|
6
|
+
const service_state_configs = require("./resources/context_config/service_state_configs.json");
|
|
6
7
|
const event_configs = require("./resources/context_config/event_configs.json");
|
|
7
8
|
|
|
8
9
|
class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
9
|
-
constructor() {
|
|
10
|
+
constructor(serviceName) {
|
|
10
11
|
super();
|
|
12
|
+
this.serviceName = serviceName;
|
|
11
13
|
// 签约条件
|
|
12
14
|
this.audienceSection = {};
|
|
13
15
|
// 全局定义(变量)声明
|
|
@@ -19,10 +21,25 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
19
21
|
this.currentState = null;
|
|
20
22
|
this.currentStateObj = null;
|
|
21
23
|
this.currentEventElem = null;
|
|
24
|
+
this.parseState = {inContextArgsSectionAtEvent: 0, inActionSection: 0};
|
|
22
25
|
|
|
23
26
|
this.expHelper = new ExpHelper();
|
|
24
27
|
this.functionHelper = new FunctionHelper();
|
|
25
28
|
this.functionHelper.setExpHelper(this.expHelper);
|
|
29
|
+
this.expHelper.setFunctionHelper(this.functionHelper);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
generateVarValueTypeList(varValueList) {
|
|
33
|
+
let varValueListTmp = [...varValueList].reverse();
|
|
34
|
+
return varValueListTmp.map(vv => {
|
|
35
|
+
return {
|
|
36
|
+
varName: vv["varName"], varValueType: vv["varValueType"]
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
getVarDeclarationValueTypeList() {
|
|
42
|
+
return this.generateVarValueTypeList(this.varDeclarationList);
|
|
26
43
|
}
|
|
27
44
|
|
|
28
45
|
visitAudience_clause(ctx) {
|
|
@@ -36,9 +53,11 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
36
53
|
let conditions = this.visitExpression_param_list(ctx.expression_param_list());
|
|
37
54
|
for (let condition of conditions) {
|
|
38
55
|
if (condition["paramName"] == null) {
|
|
39
|
-
throw new Error(`参数名不可为空 ${condition}`);
|
|
56
|
+
throw new Error(`参数名不可为空 ${condition["content"]}`);
|
|
57
|
+
}
|
|
58
|
+
if (["echoSubject", "labels", "exps"].indexOf(condition["paramName"]) === -1) {
|
|
59
|
+
throw new Error(`无效的参数名 ${condition["content"]}`);
|
|
40
60
|
}
|
|
41
|
-
console.log(condition);
|
|
42
61
|
}
|
|
43
62
|
this.audienceSection["conditions"] = conditions;
|
|
44
63
|
} else {
|
|
@@ -65,6 +84,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
65
84
|
} else {
|
|
66
85
|
this.varDeclarationMap.set(varElem.varName, varElem);
|
|
67
86
|
}
|
|
87
|
+
varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
|
|
88
|
+
console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
|
|
89
|
+
|
|
68
90
|
this.varDeclarationList.push(varElem);
|
|
69
91
|
|
|
70
92
|
return varElem;
|
|
@@ -87,6 +109,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
87
109
|
} else {
|
|
88
110
|
this.varDeclarationMap.set(varElem.varName, varElem);
|
|
89
111
|
}
|
|
112
|
+
varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
|
|
113
|
+
console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
|
|
114
|
+
|
|
90
115
|
this.varDeclarationList.push(varElem);
|
|
91
116
|
|
|
92
117
|
return varElem;
|
|
@@ -125,9 +150,35 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
125
150
|
visitState_definition(ctx) {
|
|
126
151
|
this.currentState = ctx.state_name().getText();
|
|
127
152
|
this.currentStateObj = {stateName: this.currentState, assignments: [], events: []};
|
|
153
|
+
if (ctx.service_state_section() != null) {
|
|
154
|
+
this.currentStateObj["serviceStateSection"] = this.visitService_state_section(ctx.service_state_section());
|
|
155
|
+
}
|
|
156
|
+
if (ctx.state_context_args_section() != null) {
|
|
157
|
+
this.currentStateObj["stateContextArgs"] = ctx.state_context_args_section().ID().map(i => i.getText());
|
|
158
|
+
} else {
|
|
159
|
+
this.currentStateObj["stateContextArgs"] = [];
|
|
160
|
+
}
|
|
128
161
|
this.stateMachine.push(this.currentStateObj);
|
|
129
162
|
|
|
130
|
-
|
|
163
|
+
let result = super.visitState_definition(ctx);
|
|
164
|
+
this.currentState = null;
|
|
165
|
+
this.currentStateObj = null;
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
visitService_state_section(ctx) {
|
|
170
|
+
let serviceStateSection = {};
|
|
171
|
+
if (ctx.service_state() != null) {
|
|
172
|
+
serviceStateSection["serviceState"] = ctx.service_state().getText();
|
|
173
|
+
if (service_state_configs[this.serviceName].indexOf(serviceStateSection["serviceState"]) === -1) {
|
|
174
|
+
throw new Error(`该颜色态颜色不被允许 --- ${serviceStateSection["serviceState"]}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (ctx.service_state_collection() != null) {
|
|
178
|
+
serviceStateSection["serviceStateCollection"] = ctx.service_state_collection().ID().map(i => i.getText());
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return serviceStateSection;
|
|
131
182
|
}
|
|
132
183
|
|
|
133
184
|
visitFsmVarAssignment(ctx) {
|
|
@@ -136,7 +187,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
136
187
|
content: ctx.getText(),
|
|
137
188
|
varName: ctx.variable_assignment().ID().getText(),
|
|
138
189
|
varValue: ctx.variable_assignment().assignment_clause().getText(),
|
|
139
|
-
varValueObj:
|
|
190
|
+
varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
|
|
140
191
|
};
|
|
141
192
|
|
|
142
193
|
if (this.varDeclarationMap.has(assignmentElem.varName)) {
|
|
@@ -147,6 +198,17 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
147
198
|
}) == null) {
|
|
148
199
|
throw new Error(`该局部变量未声明 --- ${assignmentElem.varName}`);
|
|
149
200
|
}
|
|
201
|
+
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
202
|
+
assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
203
|
+
console.debug(`| ${this.currentState} | ${ctx.getText()} --> ${assignmentElem["varValueType"]}`);
|
|
204
|
+
let varValueTypeListTmp = [...varValueTypeList].reverse();
|
|
205
|
+
let varValueTypeObj = varValueTypeListTmp.find(elem => {
|
|
206
|
+
return elem.varName === assignmentElem.varName;
|
|
207
|
+
});
|
|
208
|
+
if (assignmentElem["varValueType"] !== varValueTypeObj.varValueType) {
|
|
209
|
+
throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
|
|
210
|
+
}
|
|
211
|
+
|
|
150
212
|
this.currentStateObj["assignments"].push(assignmentElem);
|
|
151
213
|
|
|
152
214
|
return assignmentElem;
|
|
@@ -158,7 +220,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
158
220
|
content: ctx.getText(),
|
|
159
221
|
varName: ctx.local_variable_name().getText(),
|
|
160
222
|
varValue: ctx.assignment_clause().getText(),
|
|
161
|
-
varValueObj:
|
|
223
|
+
varValueObj: this.visitAssignment_clause(ctx.assignment_clause())
|
|
162
224
|
};
|
|
163
225
|
|
|
164
226
|
if (this.varDeclarationMap.has(assignmentElem.varName)) {
|
|
@@ -169,14 +231,20 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
169
231
|
}) != null) {
|
|
170
232
|
throw new Error(`该局部变量已声明 --- ${assignmentElem.varName}`);
|
|
171
233
|
}
|
|
234
|
+
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
235
|
+
assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
236
|
+
|
|
237
|
+
console.debug(`| ${this.currentState} | ${ctx.getText()} --> ${assignmentElem["varValueType"]}`);
|
|
238
|
+
|
|
172
239
|
this.currentStateObj["assignments"].push(assignmentElem);
|
|
173
240
|
|
|
174
241
|
return assignmentElem;
|
|
175
242
|
}
|
|
176
243
|
|
|
177
244
|
visitEventNormal(ctx) {
|
|
178
|
-
|
|
245
|
+
console.debug(`>> ${ctx.event().getText()}`);
|
|
179
246
|
|
|
247
|
+
let builtInFunctionResult = this.visitBuilt_in_function(ctx.event().built_in_function());
|
|
180
248
|
this.currentEventElem = {
|
|
181
249
|
type: "normal",
|
|
182
250
|
content: ctx.getText(),
|
|
@@ -188,10 +256,6 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
188
256
|
if (ctx.event().event_path() != null) {
|
|
189
257
|
this.currentEventElem["eventPath"] = ctx.event().event_path().getText();
|
|
190
258
|
}
|
|
191
|
-
if (ctx.action_section() != null) {
|
|
192
|
-
this.visitAction_section(ctx.action_section());
|
|
193
|
-
}
|
|
194
|
-
|
|
195
259
|
let event_config = event_configs.find(ec => {
|
|
196
260
|
let suitable = true;
|
|
197
261
|
if (this.currentEventElem["eventPath"] != null) {
|
|
@@ -204,45 +268,86 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
204
268
|
}
|
|
205
269
|
return suitable;
|
|
206
270
|
});
|
|
271
|
+
let event_configParamList = [];
|
|
207
272
|
if (event_config != null) {
|
|
208
273
|
try {
|
|
209
|
-
if (!this.functionHelper.argsMatch(this.currentEventElem["eventParamList"], event_config["paramList"])) {
|
|
274
|
+
if (!this.functionHelper.argsMatch(this.currentEventElem["eventParamList"], event_config["paramList"], this.getVarDeclarationValueTypeList())) {
|
|
210
275
|
throw new Error(`参数列表错误 ----- ${ctx.event().getText()}`);
|
|
211
276
|
}
|
|
212
277
|
} catch (e) {
|
|
213
278
|
console.debug(`参数验证错误 ----- ${ctx.event().getText()}`);
|
|
214
279
|
throw e;
|
|
215
280
|
}
|
|
281
|
+
event_configParamList = event_config["paramList"];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (ctx.state_context_args_section_at_event() != null) {
|
|
285
|
+
this.currentEventElem["stateContextArgs"] = ctx.state_context_args_section_at_event().variable_assignment().map(elem => {
|
|
286
|
+
this.parseState.inContextArgsSectionAtEvent = 1;
|
|
287
|
+
let paramElem = {
|
|
288
|
+
paramName: elem.ID().getText(),
|
|
289
|
+
paramValue: elem.assignment_clause().getText(),
|
|
290
|
+
paramValueObj: this.visitAssignment_clause(elem.assignment_clause()),
|
|
291
|
+
content: elem.getText()
|
|
292
|
+
};
|
|
293
|
+
this.parseState.inContextArgsSectionAtEvent = 0;
|
|
294
|
+
|
|
295
|
+
if (paramElem["paramValueObj"]["expType"] === "variableChain"
|
|
296
|
+
&& context_variables.indexOf(paramElem["paramValue"]) === -1
|
|
297
|
+
&& !this.varDeclarationMap.has(paramElem["paramValue"])
|
|
298
|
+
&& this.currentStateObj["stateContextArgs"].find(sca => `contextArgs.${sca}` === paramElem["paramValue"]) == null
|
|
299
|
+
&& this.currentStateObj["assignments"].find(assignment => assignment.varName === paramElem["paramValue"]) == null
|
|
300
|
+
&& event_configParamList.find(event_configParam => {
|
|
301
|
+
if (event_configParam["type"] === "argsGroup") {
|
|
302
|
+
return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}(\\.[0-9A-Za-z_]+)*$`) != null
|
|
303
|
+
} else {
|
|
304
|
+
return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}$`) != null;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
) == null) {
|
|
308
|
+
throw new Error(`该环境参数未声明 --- ${paramElem["content"]}`);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return paramElem;
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (ctx.action_section() != null) {
|
|
316
|
+
this.visitAction_section(ctx.action_section());
|
|
216
317
|
}
|
|
217
318
|
|
|
218
319
|
this.currentStateObj["events"].push(this.currentEventElem);
|
|
219
320
|
|
|
220
|
-
|
|
321
|
+
let result = this.currentEventElem;
|
|
322
|
+
this.currentEventElem = null;
|
|
323
|
+
return result;
|
|
221
324
|
}
|
|
222
325
|
|
|
223
326
|
visitEventTerminate(ctx) {
|
|
224
327
|
this.currentEventElem = {
|
|
225
|
-
type: "terminate",
|
|
226
|
-
content: ctx.getText(),
|
|
227
|
-
eventName: ctx.TERMINATE().getText()
|
|
328
|
+
type: "terminate", content: ctx.getText(), eventName: ctx.TERMINATE().getText()
|
|
228
329
|
};
|
|
229
330
|
|
|
230
331
|
this.currentStateObj["events"].push(this.currentEventElem);
|
|
231
332
|
|
|
232
|
-
|
|
333
|
+
let result = this.currentEventElem;
|
|
334
|
+
this.currentEventElem = null;
|
|
335
|
+
return result;
|
|
233
336
|
}
|
|
234
337
|
|
|
235
338
|
visitAction_section(ctx) {
|
|
339
|
+
this.parseState.inActionSection = 1;
|
|
340
|
+
|
|
236
341
|
this.currentEventElem["actions"] = [];
|
|
237
342
|
|
|
238
|
-
|
|
343
|
+
let result = super.visitAction_section(ctx);
|
|
344
|
+
this.parseState.inActionSection = 0;
|
|
345
|
+
return result;
|
|
239
346
|
}
|
|
240
347
|
|
|
241
348
|
visitFsmActionFunctionCall(ctx) {
|
|
242
349
|
let actionElem = {
|
|
243
|
-
type: "functionCall",
|
|
244
|
-
content: ctx.getText(),
|
|
245
|
-
actionObj: this.visitFunction_call(ctx.function_call())
|
|
350
|
+
type: "functionCall", content: ctx.getText(), actionObj: this.visitFunction_call(ctx.function_call())
|
|
246
351
|
};
|
|
247
352
|
|
|
248
353
|
this.currentEventElem["actions"].push(actionElem);
|
|
@@ -252,15 +357,34 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
252
357
|
|
|
253
358
|
visitFsmActionVarAssignment(ctx) {
|
|
254
359
|
let actionElem = {
|
|
255
|
-
type: "varAssignment",
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
360
|
+
type: "varAssignment", content: ctx.getText(),
|
|
361
|
+
};
|
|
362
|
+
let actionObj = {
|
|
363
|
+
varName: ctx.variable_assignment().ID().getText(),
|
|
364
|
+
varValue: ctx.variable_assignment().assignment_clause().getText(),
|
|
365
|
+
varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
|
|
262
366
|
};
|
|
263
367
|
|
|
368
|
+
if (this.varDeclarationMap.has(actionObj.varName)) {
|
|
369
|
+
throw new Error(`全局变量不可以被再次赋值 --- ${actionObj.varName}`);
|
|
370
|
+
}
|
|
371
|
+
if (this.currentStateObj["assignments"].find(elem => {
|
|
372
|
+
return elem.varName === actionObj.varName;
|
|
373
|
+
}) == null) {
|
|
374
|
+
throw new Error(`该局部变量未声明 --- ${actionObj.varName}`);
|
|
375
|
+
}
|
|
376
|
+
let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
|
|
377
|
+
actionObj["varValueType"] = this.expHelper.guessBaseTypeByExpType(actionObj["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
|
|
378
|
+
console.debug(`actions -- ${ctx.getText()} --> ${actionObj["varValueType"]}`);
|
|
379
|
+
let varValueTypeListTmp = [...varValueTypeList].reverse();
|
|
380
|
+
let varValueTypeObj = varValueTypeListTmp.find(elem => {
|
|
381
|
+
return elem.varName === actionObj.varName;
|
|
382
|
+
});
|
|
383
|
+
if (actionObj["varValueType"] !== varValueTypeObj.varValueType) {
|
|
384
|
+
throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
actionElem["actionObj"] = actionObj;
|
|
264
388
|
this.currentEventElem["actions"].push(actionElem);
|
|
265
389
|
|
|
266
390
|
return actionElem;
|
|
@@ -342,9 +466,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
342
466
|
return this.visitAtom(ctx.atom());
|
|
343
467
|
} else if (ctx.signedSymbol != null) {
|
|
344
468
|
return {
|
|
345
|
-
expType: "expSigned",
|
|
346
|
-
var1: this.visitSigned_atom(ctx.signed_atom()),
|
|
347
|
-
symbol: ctx.signedSymbol.text
|
|
469
|
+
expType: "expSigned", var1: this.visitSigned_atom(ctx.signed_atom()), symbol: ctx.signedSymbol.text
|
|
348
470
|
};
|
|
349
471
|
} else {
|
|
350
472
|
return super.visitSigned_atom(ctx);
|
|
@@ -376,8 +498,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
376
498
|
|
|
377
499
|
if (ctx.LPAREN() != null) {
|
|
378
500
|
return {
|
|
379
|
-
expType: "expBooleanParen",
|
|
380
|
-
var1: this.visitBoolean_expression(ctx.boolean_expression(0))
|
|
501
|
+
expType: "expBooleanParen", var1: this.visitBoolean_expression(ctx.boolean_expression(0))
|
|
381
502
|
};
|
|
382
503
|
}
|
|
383
504
|
|
|
@@ -523,8 +644,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
523
644
|
|
|
524
645
|
visitArgs_group_expression(ctx) {
|
|
525
646
|
return {
|
|
526
|
-
expType: "expArgsGroup",
|
|
527
|
-
paramList: this.visitArgs_group_param_list(ctx.args_group_param_list())
|
|
647
|
+
expType: "expArgsGroup", paramList: this.visitArgs_group_param_list(ctx.args_group_param_list())
|
|
528
648
|
};
|
|
529
649
|
}
|
|
530
650
|
|
|
@@ -578,7 +698,8 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
578
698
|
ctx.expression_param().forEach(expParam => {
|
|
579
699
|
let paramElem = {
|
|
580
700
|
paramValue: expParam.assignment_clause().getText(),
|
|
581
|
-
paramValueObj: this.visitAssignment_clause(expParam.assignment_clause())
|
|
701
|
+
paramValueObj: this.visitAssignment_clause(expParam.assignment_clause()),
|
|
702
|
+
content: expParam.getText()
|
|
582
703
|
};
|
|
583
704
|
if (expParam.expression_param_name() != null) {
|
|
584
705
|
paramElem["paramName"] = expParam.expression_param_name().getText();
|
|
@@ -590,27 +711,18 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
590
711
|
}
|
|
591
712
|
|
|
592
713
|
visitFunction_call(ctx) {
|
|
714
|
+
console.debug(`>> ${ctx.getText()}`);
|
|
715
|
+
|
|
593
716
|
let result = this.visitBuilt_in_function(ctx.built_in_function());
|
|
594
717
|
result["expType"] = "functionCall";
|
|
595
718
|
if (ctx.variable_chain() != null) {
|
|
596
719
|
result["varChain"] = ctx.variable_chain().getText();
|
|
597
720
|
}
|
|
598
721
|
|
|
599
|
-
let function_config =
|
|
600
|
-
let suitable = true;
|
|
601
|
-
if (result["varChain"] != null) {
|
|
602
|
-
if (result["varChain"] !== fc["varChain"]) {
|
|
603
|
-
suitable = false;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
if (result["funcName"] !== fc["funcName"]) {
|
|
607
|
-
suitable = false;
|
|
608
|
-
}
|
|
609
|
-
return suitable;
|
|
610
|
-
});
|
|
722
|
+
let function_config = this.functionHelper.findFunctionConfig(result["varChain"], result["funcName"]);
|
|
611
723
|
if (function_config != null) {
|
|
612
724
|
try {
|
|
613
|
-
if (!this.functionHelper.argsMatch(result["paramList"], function_config["paramList"])) {
|
|
725
|
+
if (!this.functionHelper.argsMatch(result["paramList"], function_config["paramList"], this.getVarDeclarationValueTypeList())) {
|
|
614
726
|
throw new Error(`参数列表错误 ----- ${ctx.getText()}`);
|
|
615
727
|
}
|
|
616
728
|
} catch (e) {
|
|
@@ -655,6 +767,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
|
|
|
655
767
|
let content = ctx.getText();
|
|
656
768
|
|
|
657
769
|
if (ctx.variable().environment_event() != null) {
|
|
770
|
+
if (this.parseState.inContextArgsSectionAtEvent === 0 && this.parseState.inActionSection === 0) {
|
|
771
|
+
throw new Error(`该变量不能出现在除事件动作区以外的任何位置 -- ${ctx.getText()}`);
|
|
772
|
+
}
|
|
658
773
|
varType = "event";
|
|
659
774
|
} else if (content === "policy" || content === "contract") {
|
|
660
775
|
varType = "context";
|
|
@@ -4,9 +4,13 @@ import { Calculator } from "../interface/Calculator";
|
|
|
4
4
|
import { AssignmentClauseInfo } from "../model/AssignmentClauseInfo";
|
|
5
5
|
import { FunctionHelperAware } from "../interface/FunctionHelperAware";
|
|
6
6
|
export declare class ExpHelper implements Calculator, FunctionHelperAware {
|
|
7
|
+
private functionHelper;
|
|
7
8
|
private calculatorFactory;
|
|
8
9
|
constructor();
|
|
9
10
|
getExpValue(varObj: AssignmentClauseInfo, varContextCapable: VarContextCapable<any>): any;
|
|
10
11
|
setFunctionHelper(functionHelper: FunctionHelper): void;
|
|
11
|
-
guessBaseTypeByExpType(exp: AssignmentClauseInfo
|
|
12
|
+
guessBaseTypeByExpType(exp: AssignmentClauseInfo, varValueTypeList: {
|
|
13
|
+
varName: string;
|
|
14
|
+
varValueType: string;
|
|
15
|
+
}[]): string;
|
|
12
16
|
}
|
package/dist/helper/ExpHelper.js
CHANGED
|
@@ -17,12 +17,13 @@ class ExpHelper {
|
|
|
17
17
|
throw new Error("getExpValue fail [ExpHelper]...");
|
|
18
18
|
}
|
|
19
19
|
setFunctionHelper(functionHelper) {
|
|
20
|
+
this.functionHelper = functionHelper;
|
|
20
21
|
this.calculatorFactory.setFunctionHelper(functionHelper);
|
|
21
22
|
}
|
|
22
23
|
/*
|
|
23
24
|
* 类型推断
|
|
24
25
|
*/
|
|
25
|
-
guessBaseTypeByExpType(exp) {
|
|
26
|
+
guessBaseTypeByExpType(exp, varValueTypeList) {
|
|
26
27
|
switch (exp.expType) {
|
|
27
28
|
case "entity":
|
|
28
29
|
return "entity";
|
|
@@ -30,17 +31,38 @@ class ExpHelper {
|
|
|
30
31
|
return "number";
|
|
31
32
|
case "expParen":
|
|
32
33
|
let expParen = exp;
|
|
33
|
-
return this.guessBaseTypeByExpType(expParen.var1);
|
|
34
|
+
return this.guessBaseTypeByExpType(expParen.var1, varValueTypeList);
|
|
34
35
|
case "expSigned":
|
|
35
36
|
return "number";
|
|
36
37
|
case "functionCall":
|
|
37
|
-
|
|
38
|
+
let functionCallInfo = exp;
|
|
39
|
+
let function_config = this.functionHelper.findFunctionConfig(functionCallInfo.varChain, functionCallInfo.funcName);
|
|
40
|
+
if (function_config != null) {
|
|
41
|
+
return function_config["returnType"];
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return "any";
|
|
45
|
+
}
|
|
38
46
|
case "number":
|
|
39
47
|
return "number";
|
|
40
48
|
case "string":
|
|
41
49
|
return "string";
|
|
42
50
|
case "variableChain":
|
|
43
|
-
|
|
51
|
+
if (varValueTypeList != null) {
|
|
52
|
+
let variableChainInfo = exp;
|
|
53
|
+
let vvtTemp = varValueTypeList.find(vvt => {
|
|
54
|
+
return variableChainInfo.content == vvt["varName"];
|
|
55
|
+
});
|
|
56
|
+
if (vvtTemp != null) {
|
|
57
|
+
return vvtTemp["varValueType"];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return "any";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return "any";
|
|
65
|
+
}
|
|
44
66
|
case "expArgsGroup":
|
|
45
67
|
return "argsGroup";
|
|
46
68
|
case "boolean":
|
|
@@ -62,4 +84,4 @@ class ExpHelper {
|
|
|
62
84
|
}
|
|
63
85
|
}
|
|
64
86
|
exports.ExpHelper = ExpHelper;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlci9FeHBIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscUZBQWdGO0FBTWhGLE1BQWEsU0FBUztJQU1sQjtRQUNJLElBQUksY0FBYyxHQUFHLElBQUksbURBQXdCLEVBQUUsQ0FBQztRQUNwRCxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUE0QixFQUFFLGlCQUF5QztRQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUE4QjtRQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsR0FBeUIsRUFDekIsZ0JBQTZEO1FBQ2hGLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDVCxPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxVQUFVO2dCQUNYLElBQUksUUFBUSxHQUFhLEdBQWUsQ0FBQztnQkFDekMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssV0FBVztnQkFDWixPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLGNBQWM7Z0JBQ2YsSUFBSSxnQkFBZ0IsR0FBcUIsR0FBdUIsQ0FBQztnQkFDakUsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25ILElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMxQixPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDekMsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO1lBQ0wsS0FBSyxRQUFRO2dCQUNULE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssUUFBUTtnQkFDVCxPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLGVBQWU7Z0JBQ2hCLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzNCLElBQUksaUJBQWlCLEdBQXNCLEdBQXdCLENBQUM7b0JBQ3BFLElBQUksT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdEMsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN2RCxDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ25DLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixPQUFPLEtBQUssQ0FBQztvQkFDakIsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxLQUFLLGNBQWM7Z0JBQ2YsT0FBTyxXQUFXLENBQUM7WUFDdkIsS0FBSSxTQUFTO2dCQUNULE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssd0JBQXdCO2dCQUN6QixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLHFCQUFxQjtnQkFDdEIsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxtQkFBbUI7Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssaUJBQWlCO2dCQUNsQixPQUFPLFNBQVMsQ0FBQztZQUVyQixLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sT0FBTyxDQUFDO1lBRW5CLEtBQUssY0FBYztnQkFDZixPQUFPLE9BQU8sQ0FBQztRQUN2QixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBM0ZELDhCQTJGQyJ9
|
|
@@ -17,9 +17,15 @@ export declare class FunctionHelper implements FunctionInvoke, ExpHelperAware {
|
|
|
17
17
|
addExecutor(executorName: "Query" | "Kit" | "Time" | "fun" | "api", functionName: string, executor: FunctionInvoke): void;
|
|
18
18
|
setExpHelper(expHelper: ExpHelper): void;
|
|
19
19
|
argsMatch(paramList: {
|
|
20
|
+
paramValue: string;
|
|
20
21
|
paramValueObj: AssignmentClauseInfo;
|
|
21
22
|
}[], paramConfigList: {
|
|
22
23
|
name: string;
|
|
23
24
|
type: string;
|
|
25
|
+
optional?: boolean;
|
|
26
|
+
}[], varValueTypeList: {
|
|
27
|
+
varName: string;
|
|
28
|
+
varValueType: string;
|
|
24
29
|
}[]): boolean;
|
|
30
|
+
findFunctionConfig(varChain: string, funcName: string): any;
|
|
25
31
|
}
|
|
@@ -6,6 +6,7 @@ const KitFunctionExecutor_1 = require("../function-executor/KitFunctionExecutor"
|
|
|
6
6
|
const TimeFunctionExecutor_1 = require("../function-executor/TimeFunctionExecutor");
|
|
7
7
|
const FunFunctionExecutor_1 = require("../function-executor/FunFunctionExecutor");
|
|
8
8
|
const ApiFunctionExecutor_1 = require("../function-executor/ApiFunctionExecutor");
|
|
9
|
+
const function_configs = require("../../resources/context_config/function_configs.json");
|
|
9
10
|
class FunctionHelper {
|
|
10
11
|
constructor() {
|
|
11
12
|
this.funcExecutors = new Map();
|
|
@@ -73,20 +74,43 @@ class FunctionHelper {
|
|
|
73
74
|
/*
|
|
74
75
|
* 参数校验
|
|
75
76
|
*/
|
|
76
|
-
argsMatch(paramList, paramConfigList) {
|
|
77
|
+
argsMatch(paramList, paramConfigList, varValueTypeList) {
|
|
78
|
+
if (paramConfigList.length === 1) {
|
|
79
|
+
let paramConfig = paramConfigList[0];
|
|
80
|
+
if (paramConfig.optional != null && paramConfig.optional) {
|
|
81
|
+
if (paramList.length === 0) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
77
86
|
if (paramList.length != paramConfigList.length) {
|
|
78
87
|
return false;
|
|
79
88
|
}
|
|
80
89
|
for (let i = 0; i < paramList.length; i++) {
|
|
81
90
|
let param = paramList[i];
|
|
82
91
|
let paramConfig = paramConfigList[i];
|
|
83
|
-
let paramType = this.expHelper.guessBaseTypeByExpType(param.paramValueObj);
|
|
92
|
+
let paramType = this.expHelper.guessBaseTypeByExpType(param.paramValueObj, varValueTypeList);
|
|
93
|
+
console.debug(`args -- ${param.paramValue} --> ${paramType}`);
|
|
84
94
|
if (paramType != "any" && paramConfig.type != "any" && paramType != paramConfig.type) {
|
|
85
95
|
return false;
|
|
86
96
|
}
|
|
87
97
|
}
|
|
88
98
|
return true;
|
|
89
99
|
}
|
|
100
|
+
findFunctionConfig(varChain, funcName) {
|
|
101
|
+
return function_configs.find(fc => {
|
|
102
|
+
let suitable = true;
|
|
103
|
+
if (varChain != null) {
|
|
104
|
+
if (varChain !== fc["varChain"]) {
|
|
105
|
+
suitable = false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (funcName !== fc["funcName"]) {
|
|
109
|
+
suitable = false;
|
|
110
|
+
}
|
|
111
|
+
return suitable;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
90
114
|
}
|
|
91
115
|
exports.FunctionHelper = FunctionHelper;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25IZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVyL0Z1bmN0aW9uSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHNGQUFpRjtBQUNqRixrRkFBNkU7QUFDN0Usb0ZBQStFO0FBQy9FLGtGQUE2RTtBQUM3RSxrRkFBNkU7QUFLN0UsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQztBQUV6RixNQUFhLGNBQWM7SUFRdkI7UUFKUSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBSy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLDZDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksMkNBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLHlDQUFtQixFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFjO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBb0I7UUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELE9B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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AssignmentClauseInfo } from "../AssignmentClauseInfo";
|
|
2
|
+
import { ActionInfo } from "./ActionInfo";
|
|
2
3
|
export interface EventInfo {
|
|
3
4
|
type: "normal" | "terminate";
|
|
4
5
|
content: string;
|
|
@@ -11,4 +12,7 @@ export interface EventInfo {
|
|
|
11
12
|
paramValueObj: AssignmentClauseInfo;
|
|
12
13
|
}
|
|
13
14
|
];
|
|
15
|
+
toState: string;
|
|
16
|
+
stateContextArgs?: string[];
|
|
17
|
+
actions: ActionInfo[];
|
|
14
18
|
}
|
|
@@ -9,6 +9,7 @@ export interface PolicyInfo {
|
|
|
9
9
|
paramName?: string;
|
|
10
10
|
paramValue: string;
|
|
11
11
|
paramValueObj: AssignmentClauseInfo;
|
|
12
|
+
content: string;
|
|
12
13
|
}
|
|
13
14
|
];
|
|
14
15
|
};
|
|
@@ -18,6 +19,11 @@ export interface PolicyInfo {
|
|
|
18
19
|
stateName: string;
|
|
19
20
|
assignments: VarDeclarationInfo[];
|
|
20
21
|
events: EventInfo[];
|
|
22
|
+
serviceStateSection?: {
|
|
23
|
+
serviceState?: string;
|
|
24
|
+
serviceStateCollection?: string[];
|
|
25
|
+
};
|
|
26
|
+
stateContextArgs?: string[];
|
|
21
27
|
}
|
|
22
28
|
];
|
|
23
29
|
}
|