@cloudpss/expression 0.6.0-alpha.1 → 0.6.0-alpha.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.
Files changed (154) hide show
  1. package/dist/analyze.d.ts +6 -3
  2. package/dist/analyze.d.ts.map +1 -1
  3. package/dist/analyze.js +67 -33
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/definitions/argument.d.ts +2 -10
  6. package/dist/definitions/argument.d.ts.map +1 -1
  7. package/dist/definitions/constraint.d.ts +2 -2
  8. package/dist/definitions/constraint.d.ts.map +1 -1
  9. package/dist/definitions/constraint.js +1 -1
  10. package/dist/definitions/constraint.js.map +1 -1
  11. package/dist/definitions/parameter-decoration.d.ts +3 -3
  12. package/dist/definitions/parameter-decoration.d.ts.map +1 -1
  13. package/dist/definitions/parameter-decoration.js +0 -7
  14. package/dist/definitions/parameter-decoration.js.map +1 -1
  15. package/dist/definitions/parameter-group.d.ts +0 -4
  16. package/dist/definitions/parameter-group.d.ts.map +1 -1
  17. package/dist/definitions/parameter-group.js +5 -17
  18. package/dist/definitions/parameter-group.js.map +1 -1
  19. package/dist/definitions/parameter.d.ts +47 -40
  20. package/dist/definitions/parameter.d.ts.map +1 -1
  21. package/dist/definitions/parameter.js +9 -21
  22. package/dist/definitions/parameter.js.map +1 -1
  23. package/dist/definitions/utils.d.ts +19 -0
  24. package/dist/definitions/utils.d.ts.map +1 -0
  25. package/dist/definitions/utils.js +177 -0
  26. package/dist/definitions/utils.js.map +1 -0
  27. package/dist/definitions/variable.d.ts +0 -2
  28. package/dist/definitions/variable.d.ts.map +1 -1
  29. package/dist/definitions/variable.js +1 -5
  30. package/dist/definitions/variable.js.map +1 -1
  31. package/dist/definitions.d.ts +1 -0
  32. package/dist/definitions.d.ts.map +1 -1
  33. package/dist/definitions.js +1 -0
  34. package/dist/definitions.js.map +1 -1
  35. package/dist/eval.d.ts +3 -5
  36. package/dist/eval.d.ts.map +1 -1
  37. package/dist/eval.js +12 -20
  38. package/dist/eval.js.map +1 -1
  39. package/dist/expression.d.ts +10 -4
  40. package/dist/expression.d.ts.map +1 -1
  41. package/dist/expression.js +4 -4
  42. package/dist/expression.js.map +1 -1
  43. package/dist/index.d.ts +3 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/interface.d.ts +30 -0
  48. package/dist/interface.d.ts.map +1 -0
  49. package/dist/interface.js +6 -0
  50. package/dist/interface.js.map +1 -0
  51. package/dist/main.d.ts +41 -28
  52. package/dist/main.d.ts.map +1 -1
  53. package/dist/main.js +145 -141
  54. package/dist/main.js.map +1 -1
  55. package/dist/migrate.d.ts +3 -2
  56. package/dist/migrate.d.ts.map +1 -1
  57. package/dist/migrate.js +25 -3
  58. package/dist/migrate.js.map +1 -1
  59. package/dist/migrator/access.d.ts.map +1 -1
  60. package/dist/migrator/access.js +44 -24
  61. package/dist/migrator/access.js.map +1 -1
  62. package/dist/migrator/call.d.ts.map +1 -1
  63. package/dist/migrator/call.js +254 -217
  64. package/dist/migrator/call.js.map +1 -1
  65. package/dist/migrator/concat.d.ts.map +1 -1
  66. package/dist/migrator/concat.js +15 -2
  67. package/dist/migrator/concat.js.map +1 -1
  68. package/dist/migrator/interface.d.ts +3 -1
  69. package/dist/migrator/interface.d.ts.map +1 -1
  70. package/dist/migrator/interface.js.map +1 -1
  71. package/dist/migrator/node.js +1 -1
  72. package/dist/migrator/node.js.map +1 -1
  73. package/dist/migrator/operator.d.ts.map +1 -1
  74. package/dist/migrator/operator.js +43 -29
  75. package/dist/migrator/operator.js.map +1 -1
  76. package/dist/migrator/state.d.ts +2 -2
  77. package/dist/migrator/state.d.ts.map +1 -1
  78. package/dist/migrator/state.js +1 -2
  79. package/dist/migrator/state.js.map +1 -1
  80. package/dist/migrator/symbol.d.ts.map +1 -1
  81. package/dist/migrator/symbol.js +13 -0
  82. package/dist/migrator/symbol.js.map +1 -1
  83. package/dist/migrator/to-type.d.ts.map +1 -1
  84. package/dist/migrator/to-type.js +20 -3
  85. package/dist/migrator/to-type.js.map +1 -1
  86. package/dist/migrator/utils.d.ts +4 -0
  87. package/dist/migrator/utils.d.ts.map +1 -1
  88. package/dist/migrator/utils.js +25 -0
  89. package/dist/migrator/utils.js.map +1 -1
  90. package/dist/parser.d.ts +2 -2
  91. package/dist/parser.d.ts.map +1 -1
  92. package/dist/parser.js +25 -8
  93. package/dist/parser.js.map +1 -1
  94. package/dist/re-exports.d.ts +4 -0
  95. package/dist/re-exports.d.ts.map +1 -0
  96. package/dist/re-exports.js +3 -0
  97. package/dist/re-exports.js.map +1 -0
  98. package/dist/scope.d.ts +13 -16
  99. package/dist/scope.d.ts.map +1 -1
  100. package/dist/scope.js +56 -49
  101. package/dist/scope.js.map +1 -1
  102. package/dist/type.d.ts +14 -5
  103. package/dist/type.d.ts.map +1 -1
  104. package/dist/type.js +35 -11
  105. package/dist/type.js.map +1 -1
  106. package/package.json +7 -4
  107. package/src/analyze.ts +77 -37
  108. package/src/definitions/argument.ts +2 -12
  109. package/src/definitions/constraint.ts +3 -3
  110. package/src/definitions/parameter-decoration.ts +3 -9
  111. package/src/definitions/parameter-group.ts +4 -19
  112. package/src/definitions/parameter.ts +62 -61
  113. package/src/definitions/utils.ts +175 -0
  114. package/src/definitions/variable.ts +1 -6
  115. package/src/definitions.ts +1 -0
  116. package/src/eval.ts +13 -26
  117. package/src/expression.ts +14 -6
  118. package/src/index.ts +3 -1
  119. package/src/interface.ts +35 -0
  120. package/src/main.ts +213 -194
  121. package/src/migrate.ts +30 -6
  122. package/src/migrator/access.ts +49 -32
  123. package/src/migrator/call.ts +246 -203
  124. package/src/migrator/concat.ts +15 -2
  125. package/src/migrator/interface.ts +3 -1
  126. package/src/migrator/node.ts +1 -1
  127. package/src/migrator/operator.ts +47 -33
  128. package/src/migrator/state.ts +2 -2
  129. package/src/migrator/symbol.ts +13 -0
  130. package/src/migrator/to-type.ts +22 -3
  131. package/src/migrator/utils.ts +29 -0
  132. package/src/parser.ts +27 -8
  133. package/src/re-exports.ts +28 -0
  134. package/src/scope.ts +75 -61
  135. package/src/type.ts +32 -11
  136. package/tests/analyze.ts +40 -6
  137. package/tests/compile.ts +65 -0
  138. package/tests/condition.ts +13 -5
  139. package/tests/definition.ts +205 -18
  140. package/tests/eval-complex.ts +7 -10
  141. package/tests/eval.ts +59 -12
  142. package/tests/import.ts +18 -4
  143. package/tests/main.ts +9 -0
  144. package/tests/migrate.ts +202 -0
  145. package/tests/scope.ts +3 -3
  146. package/tests/template.ts +36 -0
  147. package/dist/context.d.ts +0 -41
  148. package/dist/context.d.ts.map +0 -1
  149. package/dist/context.js +0 -18
  150. package/dist/context.js.map +0 -1
  151. package/jest.config.js +0 -3
  152. package/src/context.ts +0 -54
  153. package/tests/tsconfig.json +0 -3
  154. package/tsconfig.json +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/migrator/access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/migrator/access.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/migrator/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEhB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA4CxC,aAAa;AACb,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAoVhG"}
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/migrator/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEhB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA6RxC,aAAa;AACb,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CA8IhG"}
@@ -1,5 +1,5 @@
1
1
  import { isAccessorNode, isArrayNode, isConstantNode, isObjectNode, isOperatorNode, } from 'mathjs';
2
- import { constantValue, equalText, symbolName } from './utils.js';
2
+ import { constantValue, equalText, globalFnName, len, symbolName } from './utils.js';
3
3
  import { migrateAtomic, migrateExpr, migrateNode } from './node.js';
4
4
  import { concat } from './concat.js';
5
5
  import { toNumber, toString } from './to-type.js';
@@ -37,232 +37,266 @@ function call(state, node, done) {
37
37
  code: `${fnRet.code}(${argList.map((a) => a.code).join(', ')})`,
38
38
  };
39
39
  }
40
- /** 转换 AST */
41
- export function migrateCall(state, node, options) {
42
- const { fn, args } = node;
43
- const fnName = symbolName(fn);
44
- if (fnName && !state.locals.has(fnName)) {
45
- const openE = options.format !== 'no-paren' ? '(' : '';
46
- const closeE = options.format !== 'no-paren' ? ')' : '';
47
- if (EXACT_UNARY_FUNCTION.has(fnName) && args.length === 1) {
48
- const arg = migrateAtomic(state, args[0]);
49
- return {
50
- type: EXACT_UNARY_FUNCTION.get(fnName),
51
- code: `${fnName}(${arg.code})`,
52
- };
53
- }
54
- else if (fnName === 're' || fnName === 'im') {
55
- const m = migrateAtomic(state, args[0]);
56
- state.err(`不支持复数`);
57
- return {
58
- type: 'number',
59
- code: `/* ${fnName} */(${m.code})`,
60
- };
61
- }
62
- else if (fnName === 'date' && args.length === 1) {
63
- return {
64
- type: 'number',
65
- code: `to_timestamp(${migrateAtomic(state, args[0]).code})`,
66
- };
67
- }
68
- else if (fnName === 'inv' && args.length === 1) {
69
- const arg = migrateAtomic(state, args[0]);
70
- return {
71
- type: arg.type,
72
- code: `matrix.invert(${arg.code})`,
73
- };
74
- }
75
- else if (fnName === 'transpose' && args.length === 1) {
76
- const arg = migrateAtomic(state, args[0]);
77
- return {
78
- type: arg.type,
79
- code: `matrix.transpose(${arg.code})`,
80
- };
81
- }
82
- else if (fnName === 'diag' && (args.length === 1 || args.length === 2)) {
83
- const a = args.map((a) => migrateAtomic(state, a).code).join(', ');
84
- return {
85
- type: 'array',
86
- code: `matrix.diagonal(${a})`,
87
- };
40
+ /** 函数调用 */
41
+ function migrateFunctionCall(state, node, fnName, args, options) {
42
+ const openE = options.format !== 'no-paren' ? '(' : '';
43
+ const closeE = options.format !== 'no-paren' ? ')' : '';
44
+ const g = (fnName) => globalFnName(state, fnName);
45
+ if (EXACT_UNARY_FUNCTION.has(fnName) && args.length === 1) {
46
+ const arg = migrateAtomic(state, args[0]);
47
+ return {
48
+ type: EXACT_UNARY_FUNCTION.get(fnName),
49
+ code: `${fnName}(${arg.code})`,
50
+ };
51
+ }
52
+ else if (fnName === 're' || fnName === 'im') {
53
+ const m = migrateAtomic(state, args[0]);
54
+ state.err(`不支持复数`);
55
+ return {
56
+ type: 'number',
57
+ code: `/* ${fnName} */(${m.code})`,
58
+ };
59
+ }
60
+ else if (fnName === 'date' && args.length === 1) {
61
+ return {
62
+ type: 'number',
63
+ code: `${g('to_timestamp')}(${migrateAtomic(state, args[0]).code})`,
64
+ };
65
+ }
66
+ else if (fnName === 'size' && args.length === 1) {
67
+ const arg = migrateAtomic(state, args[0]);
68
+ return {
69
+ type: arg.type,
70
+ code: `${g('matrix')}.size(${arg.code})`,
71
+ };
72
+ }
73
+ else if (fnName === 'inv' && args.length === 1) {
74
+ const arg = migrateAtomic(state, args[0]);
75
+ return {
76
+ type: arg.type,
77
+ code: `${g('matrix')}.invert(${arg.code})`,
78
+ };
79
+ }
80
+ else if (fnName === 'count' && args.length === 1) {
81
+ const arg = migrateAtomic(state, args[0]);
82
+ if (arg.type !== 'string') {
83
+ state.warn(`函数行为可能不一致: count`);
88
84
  }
89
- else if (fnName === 'zeros' || fnName === 'ones' || fnName === 'identity') {
85
+ return len(state, arg);
86
+ }
87
+ else if (fnName === 'transpose' && args.length === 1) {
88
+ const arg = migrateAtomic(state, args[0]);
89
+ return {
90
+ type: arg.type,
91
+ code: `${g('matrix')}.transpose(${arg.code})`,
92
+ };
93
+ }
94
+ else if (fnName === 'diag' && (args.length === 1 || args.length === 2)) {
95
+ const a = args.map((a) => migrateAtomic(state, a).code).join(', ');
96
+ return {
97
+ type: 'array',
98
+ code: `${g('matrix')}.diagonal(${a})`,
99
+ };
100
+ }
101
+ else if (fnName === 'zeros' || fnName === 'ones' || fnName === 'identity') {
102
+ return {
103
+ type: 'array',
104
+ code: `${g('matrix')}.${fnName}(${args.map((a) => migrateAtomic(state, a).code).join(', ')})`,
105
+ };
106
+ }
107
+ else if (fnName === 'concat') {
108
+ const results = args.map((a) => migrateAtomic(state, a));
109
+ if (results.some((r) => r.type === 'string'))
110
+ return concat(state, results);
111
+ if (results.some((r) => r.type === 'array')) {
112
+ state.warn(`矩阵连接时结果可能不一致`);
90
113
  return {
91
114
  type: 'array',
92
- code: `matrix.${fnName}(${args.map((a) => migrateAtomic(state, a).code).join(', ')})`,
115
+ code: `${g('flatten')}([` + results.map((r) => r.code).join(', ') + `])`,
93
116
  };
94
117
  }
95
- else if (fnName === 'concat') {
96
- const results = args.map((a) => migrateAtomic(state, a));
97
- if (results.some((r) => r.type === 'string'))
98
- return concat(state, results);
99
- }
100
- else if (fnName === 'numeric' && args.length === 1) {
101
- return toNumber(state, args[0]);
102
- }
103
- else if (fnName === 'flatten' && args.length === 1) {
118
+ }
119
+ else if (fnName === 'numeric' && args.length === 1) {
120
+ return toNumber(state, args[0]);
121
+ }
122
+ else if (fnName === 'flatten' && args.length === 1) {
123
+ return {
124
+ type: 'array',
125
+ code: `${g('flatten')}(${migrateAtomic(state, args[0]).code})`,
126
+ };
127
+ }
128
+ else if (fnName === 'norm' && args.length === 1) {
129
+ if (isArrayNode(args[0])) {
104
130
  return {
105
- type: 'array',
106
- code: `flatten(${migrateAtomic(state, args[0]).code})`,
131
+ type: 'number',
132
+ code: `${g('hypot')}(${args[0].items.map((a) => migrateAtomic(state, a).code).join(', ')})`,
107
133
  };
108
134
  }
109
- else if (fnName === 'norm' && args.length === 1) {
110
- if (isArrayNode(args[0])) {
135
+ return {
136
+ type: 'number',
137
+ code: `${g('hypot')}(${migrateAtomic(state, args[0]).code})`,
138
+ };
139
+ }
140
+ else if (fnName === 'equalText' && args.length === 2) {
141
+ const p = equalText(state, '==', args[0], args[1]);
142
+ return {
143
+ type: p.type,
144
+ code: `${openE}${p.code}${closeE}`,
145
+ };
146
+ }
147
+ else if (fnName === 'toJson' && args.length === 1) {
148
+ return {
149
+ type: 'string',
150
+ code: `${g('to_json')}(${migrateAtomic(state, args[0]).code})`,
151
+ };
152
+ }
153
+ else if (fnName === 'fromJson' && args.length === 1) {
154
+ return {
155
+ code: `${g('from_json')}(${migrateAtomic(state, args[0]).code})`,
156
+ };
157
+ }
158
+ else if (fnName === 'is' && args.length === 2 && isConstantNode(args[1])) {
159
+ const t = String(args[1].value);
160
+ switch (t) {
161
+ case 'number':
162
+ case 'string':
163
+ case 'boolean':
111
164
  return {
112
- type: 'number',
113
- code: `hypot(${args[0].items.map((a) => migrateAtomic(state, a).code).join(', ')})`,
165
+ type: 'boolean',
166
+ code: `${openE}type(${migrateAtomic(state, args[0]).code}) == '${t}'${closeE}`,
114
167
  };
115
- }
116
- return {
117
- type: 'number',
118
- code: `hypot(${migrateAtomic(state, args[0]).code})`,
119
- };
120
- }
121
- else if (fnName === 'equalText' && args.length === 2) {
122
- const p = equalText(state, '==', args[0], args[1]);
123
- return {
124
- type: p.type,
125
- code: `${openE}${p.code}${closeE}`,
126
- };
127
- }
128
- else if (fnName === 'toJson' && args.length === 1) {
129
- return {
130
- type: 'string',
131
- code: `to_json(${migrateAtomic(state, args[0]).code})`,
132
- };
133
- }
134
- else if (fnName === 'fromJson' && args.length === 1) {
135
- return {
136
- code: `from_json(${migrateAtomic(state, args[0]).code})`,
137
- };
138
- }
139
- else if (fnName === 'is' && args.length === 2 && isConstantNode(args[1])) {
140
- const t = String(args[1].value);
141
- switch (t) {
142
- case 'number':
143
- case 'string':
144
- case 'boolean':
145
- return {
146
- type: 'boolean',
147
- code: `${openE}type(${migrateAtomic(state, args[0]).code}) == '${t}'${closeE}`,
148
- };
149
- case 'null':
150
- case 'undefined':
151
- return {
152
- type: 'boolean',
153
- code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'nil'${closeE}`,
154
- };
155
- case 'Array':
156
- case 'array':
157
- state.warn(`'type' 与 'is' 结果可能不同`);
158
- return {
159
- type: 'boolean',
160
- code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'array'${closeE}`,
161
- };
162
- case 'Object':
163
- case 'object':
164
- state.warn(`'type' 与 'is' 结果可能不同`);
168
+ case 'null':
169
+ case 'undefined':
170
+ return {
171
+ type: 'boolean',
172
+ code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'nil'${closeE}`,
173
+ };
174
+ case 'Array':
175
+ case 'array':
176
+ state.warn(`'type' 与 'is' 结果可能不同`);
177
+ return {
178
+ type: 'boolean',
179
+ code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'array'${closeE}`,
180
+ };
181
+ case 'Object':
182
+ case 'object': {
183
+ const arg0 = migrateAtomic(state, args[0]);
184
+ if (arg0.code.endsWith('.value.rt_state')) {
165
185
  return {
166
186
  type: 'boolean',
167
- code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'record'${closeE}`,
187
+ code: `${openE}!!${arg0.code}${closeE}`,
168
188
  };
169
- case 'Function':
170
- case 'function': {
171
- if (symbolName(args[0]) === 'service' && !state.locals.has('service')) {
172
- return {
173
- type: 'boolean',
174
- code: `${openE}type(service) == 'extern'${closeE}`,
175
- };
176
- }
177
- state.warn(`'type' 'is' 结果可能不同`);
189
+ }
190
+ state.warn(`'type' 'is' 结果可能不同`);
191
+ return {
192
+ type: 'boolean',
193
+ code: `${openE}type(${arg0.code}) == 'record'${closeE}`,
194
+ };
195
+ }
196
+ case 'Function':
197
+ case 'function': {
198
+ if (symbolName(args[0]) === 'service' && !state.locals.has('service')) {
178
199
  return {
179
200
  type: 'boolean',
180
- code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'function'${closeE}`,
201
+ code: `${openE}type(service) == 'extern'${closeE}`,
181
202
  };
182
203
  }
204
+ state.warn(`'type' 与 'is' 结果可能不同`);
205
+ return {
206
+ type: 'boolean',
207
+ code: `${openE}type(${migrateAtomic(state, args[0]).code}) == 'function'${closeE}`,
208
+ };
183
209
  }
184
210
  }
185
- else if (fnName === 'typeOf' && args.length === 1) {
186
- state.warn(`'type' 'typeOf' 结果可能不同`);
187
- return {
188
- type: 'string',
189
- code: `type(${migrateAtomic(state, args[0]).code})`,
190
- };
191
- }
192
- else if (fnName === 'format' && args.length === 1) {
193
- return toString(state, args[0]);
194
- }
195
- else if (fnName === 'print' && args.length === 1) {
196
- state.loose();
197
- return toString(state, args[0]);
198
- }
199
- else if (fnName === 'print' &&
200
- args.length === 2 &&
201
- isConstantNode(args[0]) &&
202
- (isObjectNode(args[1]) || isArrayNode(args[1]))) {
203
- const template = String(args[0].value);
204
- const values = isObjectNode(args[1])
205
- ? args[1].properties
206
- : args[1].items;
207
- return {
208
- type: 'string',
209
- code: '`' +
210
- template.replaceAll(/`|\$([\w.]+)/g, (original, key) => {
211
- if (original === '`')
212
- return '\\`';
213
- const keys = key.split('.').map((part) => {
214
- const nPart = Number.parseInt(part);
215
- if (!Number.isNaN(nPart) && part.length > 0 && nPart >= 1) {
216
- return nPart - 1;
217
- }
218
- else {
219
- return part;
220
- }
221
- });
222
- const value = values[keys.shift()];
223
- if (value == null)
224
- return original.replaceAll('$', String.raw `\$`);
225
- if (!keys.length) {
226
- return `$(${migrateAtomic(state, value).code})`;
211
+ }
212
+ else if (fnName === 'typeOf' && args.length === 1) {
213
+ state.warn(`'type' 与 'typeOf' 结果可能不同`);
214
+ return {
215
+ type: 'string',
216
+ code: `type(${migrateAtomic(state, args[0]).code})`,
217
+ };
218
+ }
219
+ else if (fnName === 'format' && args.length === 1) {
220
+ return toString(state, args[0]);
221
+ }
222
+ else if (fnName === 'print' && args.length === 1) {
223
+ state.loose();
224
+ return toString(state, args[0]);
225
+ }
226
+ else if (fnName === 'print' &&
227
+ args.length === 2 &&
228
+ isConstantNode(args[0]) &&
229
+ (isObjectNode(args[1]) || isArrayNode(args[1]))) {
230
+ const template = String(args[0].value);
231
+ const values = isObjectNode(args[1])
232
+ ? args[1].properties
233
+ : args[1].items;
234
+ return {
235
+ type: 'string',
236
+ code: '`' +
237
+ template.replaceAll(/`|\$([\w.]+)/g, (original, key) => {
238
+ if (original === '`')
239
+ return '\\`';
240
+ const keys = key.split('.').map((part) => {
241
+ const nPart = Number.parseInt(part);
242
+ if (!Number.isNaN(nPart) && part.length > 0 && nPart >= 1) {
243
+ return nPart - 1;
227
244
  }
228
- return `$(${migrateNode(state, value, { format: 'paren' }).code}.${keys.join('.')})`;
229
- }) +
230
- '`',
231
- };
232
- }
233
- else if (fnName === 'string' && args.length === 1) {
234
- const inner = migrateAtomic(state, args[0]);
235
- return {
236
- type: 'string',
237
- code: `to_string(${inner.code})`,
238
- };
245
+ else {
246
+ return part;
247
+ }
248
+ });
249
+ const value = values[keys.shift()];
250
+ if (value == null)
251
+ return original.replaceAll('$', String.raw `\$`);
252
+ if (!keys.length) {
253
+ return `$(${migrateAtomic(state, value).code})`;
254
+ }
255
+ return `$(${migrateNode(state, value, { format: 'paren' }).code}.${keys.join('.')})`;
256
+ }) +
257
+ '`',
258
+ };
259
+ }
260
+ else if (fnName === 'string' && args.length === 1) {
261
+ const inner = migrateAtomic(state, args[0]);
262
+ return {
263
+ type: 'string',
264
+ code: `${g('to_string')}(${inner.code})`,
265
+ };
266
+ }
267
+ else if (fnName === 'sum' &&
268
+ args.length === 1 &&
269
+ isArrayNode(args[0]) &&
270
+ args[0].items.length === 1 &&
271
+ isOperatorNode(args[0].items[0]) &&
272
+ ['>=', '>', '<=', '<', '==', '!='].includes(args[0].items[0].op) &&
273
+ typeof constantValue(args[0].items[0].args[1]) === 'number') {
274
+ // sum([a > v])
275
+ const a = migrateAtomic(state, args[0].items[0].args[0]);
276
+ const v = migrateAtomic(state, args[0].items[0].args[1]);
277
+ return {
278
+ type: 'number',
279
+ code: `${g('sum')}(${g('map')}(${a.code}, fn { it ${args[0].items[0].op} ${v.code} }))`,
280
+ };
281
+ }
282
+ return call(state, node, (fn, args) => {
283
+ const fun = state.globals.get(fnName);
284
+ if (typeof fun === 'function') {
285
+ if (args.some((a) => a.type !== 'number' && a.type !== 'boolean' && a.type !== 'string')) {
286
+ state.warn(`函数行为可能不一致: ${fnName}`);
287
+ }
239
288
  }
240
- else if (fnName === 'sum' &&
241
- args.length === 1 &&
242
- isArrayNode(args[0]) &&
243
- args[0].items.length === 1 &&
244
- isOperatorNode(args[0].items[0]) &&
245
- ['>=', '>', '<=', '<', '==', '!='].includes(args[0].items[0].op) &&
246
- typeof constantValue(args[0].items[0].args[1]) === 'number') {
247
- // sum([a > v])
248
- const a = migrateAtomic(state, args[0].items[0].args[0]);
249
- const v = migrateAtomic(state, args[0].items[0].args[1]);
250
- return {
251
- type: 'number',
252
- code: `sum(map(${a.code}, fn { it ${args[0].items[0].op} ${v.code} }))`,
253
- };
289
+ else {
290
+ state.err(`不支持的函数: ${fnName}`);
254
291
  }
255
- return call(state, node, (fn, args) => {
256
- const fun = state.globals.get(fnName);
257
- if (typeof fun === 'function') {
258
- if (args.some((a) => a.type !== 'number' && a.type !== 'boolean' && a.type !== 'string')) {
259
- state.warn(`函数行为可能不一致: ${fnName}`);
260
- }
261
- }
262
- else {
263
- state.err(`不支持的函数: ${fnName}`);
264
- }
265
- });
292
+ });
293
+ }
294
+ /** 转换 AST */
295
+ export function migrateCall(state, node, options) {
296
+ const { fn, args } = node;
297
+ const fnName = symbolName(fn);
298
+ if (fnName && !state.locals.has(fnName)) {
299
+ return migrateFunctionCall(state, node, fnName, args, options);
266
300
  }
267
301
  if (isAccessorNode(fn) &&
268
302
  fn.index.dimensions.length === 1 &&
@@ -270,10 +304,11 @@ export function migrateCall(state, node, options) {
270
304
  typeof fn.index.dimensions[0].value == 'string') {
271
305
  const thisArg = migrateExpr(state, fn.object);
272
306
  const fnName = String(fn.index.dimensions[0].value);
307
+ const g = (fnName) => globalFnName(state, fnName);
273
308
  if (fnName === 'toString' && args.length === 0) {
274
309
  return {
275
310
  type: 'string',
276
- code: `${thisArg.code}::to_string()`,
311
+ code: `${thisArg.code}::${g('to_string')}()`,
277
312
  };
278
313
  }
279
314
  else if (fnName === 'includes' && args.length === 1) {
@@ -286,7 +321,7 @@ export function migrateCall(state, node, options) {
286
321
  if (thisArg.type === 'string') {
287
322
  return {
288
323
  type: 'boolean',
289
- code: `${thisArg.code}::contains(${migrateAtomic(state, args[0]).code})`,
324
+ code: `${thisArg.code}::${g('contains')}(${migrateAtomic(state, args[0]).code})`,
290
325
  };
291
326
  }
292
327
  state.helper(`fn @@includes(it, el) { match it::type() { case 'string' { it::contains(el) } case 'array' { el in it } case _ { false } } }`);
@@ -298,30 +333,30 @@ export function migrateCall(state, node, options) {
298
333
  else if ((fnName === 'map' || fnName === 'filter') && args.length === 1) {
299
334
  return {
300
335
  type: 'array',
301
- code: `${thisArg.code}::${fnName}(${migrateAtomic(state, args[0]).code})`,
336
+ code: `${thisArg.code}::${g(fnName)}(${migrateAtomic(state, args[0]).code})`,
302
337
  };
303
338
  }
304
339
  else if (fnName === 'find' && args.length === 1) {
305
340
  return {
306
- code: `${thisArg.code}::find(${migrateAtomic(state, args[0]).code}).1`,
341
+ code: `${thisArg.code}::${g('find')}(${migrateAtomic(state, args[0]).code}).1`,
307
342
  };
308
343
  }
309
344
  else if (fnName === 'findIndex' && args.length === 1) {
310
345
  return {
311
346
  type: 'number',
312
- code: `(${thisArg.code}::find(${migrateAtomic(state, args[0]).code}).0 ?? -1)`,
347
+ code: `(${thisArg.code}::${g('find')}(${migrateAtomic(state, args[0]).code}).0 ?? -1)`,
313
348
  };
314
349
  }
315
350
  else if (fnName === 'flatMap' && args.length === 1) {
316
351
  return {
317
352
  type: 'array',
318
- code: `${thisArg.code}::map(${migrateAtomic(state, args[0]).code})::flatten()`,
353
+ code: `${thisArg.code}::${g('map')}(${migrateAtomic(state, args[0]).code})::flatten()`,
319
354
  };
320
355
  }
321
356
  else if (fnName === 'reverse' && args.length === 0) {
322
357
  return {
323
358
  type: 'array',
324
- code: `${thisArg.code}::reverse()`,
359
+ code: `${thisArg.code}::${g('reverse')}()`,
325
360
  };
326
361
  }
327
362
  else if ((fnName === 'replaceAll' || fnName === 'replace') && args.length === 2) {
@@ -330,13 +365,13 @@ export function migrateCall(state, node, options) {
330
365
  }
331
366
  return {
332
367
  type: 'string',
333
- code: `${thisArg.code}::replace(${migrateAtomic(state, args[0]).code}, ${migrateAtomic(state, args[1]).code})`,
368
+ code: `${thisArg.code}::${g('replace')}(${migrateAtomic(state, args[0]).code}, ${migrateAtomic(state, args[1]).code})`,
334
369
  };
335
370
  }
336
371
  else if (fnName === 'split' && args.length === 1) {
337
372
  return {
338
373
  type: 'array',
339
- code: `${thisArg.code}::split(${migrateAtomic(state, args[0]).code})`,
374
+ code: `${thisArg.code}::${g('split')}(${migrateAtomic(state, args[0]).code})`,
340
375
  };
341
376
  }
342
377
  else if (fnName === 'concat') {
@@ -349,7 +384,9 @@ export function migrateCall(state, node, options) {
349
384
  }
350
385
  return {
351
386
  type: 'array',
352
- code: `flatten([` + [fn.object, ...args].map((a) => migrateAtomic(state, a).code).join(', ') + `])`,
387
+ code: `${g('flatten')}([` +
388
+ [fn.object, ...args].map((a) => migrateAtomic(state, a).code).join(', ') +
389
+ `])`,
353
390
  };
354
391
  }
355
392
  else if (fnName === 'toFixed' &&
@@ -357,7 +394,7 @@ export function migrateCall(state, node, options) {
357
394
  const digits = constantValue(args[0]) ?? 0;
358
395
  return {
359
396
  type: 'string',
360
- code: `${thisArg.code}::format('.${digits}')`,
397
+ code: `${thisArg.code}::${g('format')}('.${digits}')`,
361
398
  };
362
399
  }
363
400
  else if (isArrayNode(fn.object) && fnName === 'join' && args.length <= 1) {
@@ -391,7 +428,7 @@ export function migrateCall(state, node, options) {
391
428
  else if (thisArg.type === 'extern') {
392
429
  const argList = args.map((a) => migrateAtomic(state, a).code);
393
430
  return {
394
- code: `${thisArg.code}(${argList.join(', ')})`,
431
+ code: `${thisArg.code}.${fnName}(${argList.join(', ')})`,
395
432
  };
396
433
  }
397
434
  state.err(`不支持的方法: ${fnName}`);