@cloudpss/expression 0.6.0-alpha.9 → 0.6.0

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 (157) hide show
  1. package/dist/analyze.d.ts +6 -3
  2. package/dist/analyze.d.ts.map +1 -1
  3. package/dist/analyze.js +13 -33
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/definitions/argument.d.ts +3 -11
  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-group.js +4 -4
  12. package/dist/definitions/parameter-group.js.map +1 -1
  13. package/dist/definitions/parameter.d.ts +22 -14
  14. package/dist/definitions/parameter.d.ts.map +1 -1
  15. package/dist/definitions/parameter.js +10 -1
  16. package/dist/definitions/parameter.js.map +1 -1
  17. package/dist/definitions/utils.d.ts +28 -0
  18. package/dist/definitions/utils.d.ts.map +1 -0
  19. package/dist/definitions/utils.js +272 -0
  20. package/dist/definitions/utils.js.map +1 -0
  21. package/dist/definitions/variable.js +1 -1
  22. package/dist/definitions/variable.js.map +1 -1
  23. package/dist/definitions.d.ts +1 -2
  24. package/dist/definitions.d.ts.map +1 -1
  25. package/dist/definitions.js +1 -1
  26. package/dist/definitions.js.map +1 -1
  27. package/dist/eval.d.ts +3 -5
  28. package/dist/eval.d.ts.map +1 -1
  29. package/dist/eval.js +12 -20
  30. package/dist/eval.js.map +1 -1
  31. package/dist/expression.d.ts +10 -4
  32. package/dist/expression.d.ts.map +1 -1
  33. package/dist/expression.js +6 -6
  34. package/dist/expression.js.map +1 -1
  35. package/dist/index.d.ts +3 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/interface.d.ts +30 -0
  40. package/dist/interface.d.ts.map +1 -0
  41. package/dist/interface.js +6 -0
  42. package/dist/interface.js.map +1 -0
  43. package/dist/main.d.ts +41 -28
  44. package/dist/main.d.ts.map +1 -1
  45. package/dist/main.js +165 -149
  46. package/dist/main.js.map +1 -1
  47. package/dist/migrate.d.ts +1 -1
  48. package/dist/migrate.d.ts.map +1 -1
  49. package/dist/migrate.js +25 -4
  50. package/dist/migrate.js.map +1 -1
  51. package/dist/migrator/access.d.ts.map +1 -1
  52. package/dist/migrator/access.js +64 -29
  53. package/dist/migrator/access.js.map +1 -1
  54. package/dist/migrator/call.d.ts.map +1 -1
  55. package/dist/migrator/call.js +298 -201
  56. package/dist/migrator/call.js.map +1 -1
  57. package/dist/migrator/concat.d.ts.map +1 -1
  58. package/dist/migrator/concat.js +15 -2
  59. package/dist/migrator/concat.js.map +1 -1
  60. package/dist/migrator/function.d.ts +6 -0
  61. package/dist/migrator/function.d.ts.map +1 -0
  62. package/dist/migrator/function.js +25 -0
  63. package/dist/migrator/function.js.map +1 -0
  64. package/dist/migrator/interface.d.ts +3 -1
  65. package/dist/migrator/interface.d.ts.map +1 -1
  66. package/dist/migrator/interface.js.map +1 -1
  67. package/dist/migrator/node.d.ts.map +1 -1
  68. package/dist/migrator/node.js +55 -7
  69. package/dist/migrator/node.js.map +1 -1
  70. package/dist/migrator/operator.d.ts.map +1 -1
  71. package/dist/migrator/operator.js +107 -60
  72. package/dist/migrator/operator.js.map +1 -1
  73. package/dist/migrator/serialize.d.ts +4 -0
  74. package/dist/migrator/serialize.d.ts.map +1 -0
  75. package/dist/migrator/serialize.js +21 -0
  76. package/dist/migrator/serialize.js.map +1 -0
  77. package/dist/migrator/special.d.ts.map +1 -1
  78. package/dist/migrator/special.js +31 -0
  79. package/dist/migrator/special.js.map +1 -1
  80. package/dist/migrator/state.d.ts +4 -4
  81. package/dist/migrator/state.d.ts.map +1 -1
  82. package/dist/migrator/state.js +29 -31
  83. package/dist/migrator/state.js.map +1 -1
  84. package/dist/migrator/symbol.d.ts.map +1 -1
  85. package/dist/migrator/symbol.js +34 -12
  86. package/dist/migrator/symbol.js.map +1 -1
  87. package/dist/migrator/to-type.d.ts.map +1 -1
  88. package/dist/migrator/to-type.js +21 -4
  89. package/dist/migrator/to-type.js.map +1 -1
  90. package/dist/migrator/utils.d.ts +6 -0
  91. package/dist/migrator/utils.d.ts.map +1 -1
  92. package/dist/migrator/utils.js +48 -1
  93. package/dist/migrator/utils.js.map +1 -1
  94. package/dist/parser.d.ts +2 -2
  95. package/dist/parser.d.ts.map +1 -1
  96. package/dist/parser.js +27 -8
  97. package/dist/parser.js.map +1 -1
  98. package/dist/re-exports.d.ts +4 -0
  99. package/dist/re-exports.d.ts.map +1 -0
  100. package/dist/re-exports.js +3 -0
  101. package/dist/re-exports.js.map +1 -0
  102. package/dist/scope.d.ts +16 -17
  103. package/dist/scope.d.ts.map +1 -1
  104. package/dist/scope.js +127 -66
  105. package/dist/scope.js.map +1 -1
  106. package/dist/type.d.ts +22 -10
  107. package/dist/type.d.ts.map +1 -1
  108. package/dist/type.js +21 -24
  109. package/dist/type.js.map +1 -1
  110. package/package.json +8 -5
  111. package/src/analyze.ts +20 -39
  112. package/src/definitions/argument.ts +3 -13
  113. package/src/definitions/constraint.ts +3 -3
  114. package/src/definitions/parameter-group.ts +4 -4
  115. package/src/definitions/parameter.ts +47 -24
  116. package/src/definitions/utils.ts +288 -0
  117. package/src/definitions/variable.ts +1 -1
  118. package/src/definitions.ts +1 -28
  119. package/src/eval.ts +16 -25
  120. package/src/expression.ts +16 -8
  121. package/src/index.ts +3 -1
  122. package/src/interface.ts +35 -0
  123. package/src/main.ts +232 -200
  124. package/src/migrate.ts +27 -4
  125. package/src/migrator/access.ts +67 -37
  126. package/src/migrator/call.ts +287 -190
  127. package/src/migrator/concat.ts +15 -2
  128. package/src/migrator/function.ts +27 -0
  129. package/src/migrator/interface.ts +3 -1
  130. package/src/migrator/node.ts +56 -6
  131. package/src/migrator/operator.ts +110 -64
  132. package/src/migrator/serialize.ts +21 -0
  133. package/src/migrator/special.ts +31 -0
  134. package/src/migrator/state.ts +31 -34
  135. package/src/migrator/symbol.ts +33 -12
  136. package/src/migrator/to-type.ts +23 -4
  137. package/src/migrator/utils.ts +48 -1
  138. package/src/parser.ts +33 -8
  139. package/src/re-exports.ts +47 -0
  140. package/src/scope.ts +146 -77
  141. package/src/type.ts +40 -25
  142. package/tests/analyze.ts +45 -6
  143. package/tests/compile.ts +65 -0
  144. package/tests/condition.ts +33 -17
  145. package/tests/definition.ts +237 -18
  146. package/tests/eval-complex.ts +79 -13
  147. package/tests/eval.ts +59 -12
  148. package/tests/import.ts +21 -7
  149. package/tests/main.ts +58 -0
  150. package/tests/migrate.ts +317 -0
  151. package/tests/scope.ts +3 -3
  152. package/tests/template.ts +36 -0
  153. package/dist/context.d.ts +0 -41
  154. package/dist/context.d.ts.map +0 -1
  155. package/dist/context.js +0 -18
  156. package/dist/context.js.map +0 -1
  157. package/src/context.ts +0 -54
@@ -1,50 +1,60 @@
1
1
  import { isFunctionNode, isSymbolNode, isOperatorNode, isNode, } from 'mathjs';
2
- import { symbolName, constantValue, equalText, scalar } from './utils.js';
3
- import { migrateAtomic, migrateExpr } from './node.js';
2
+ import { isVmArray } from '@mirascript/mirascript';
3
+ import { operations } from '@mirascript/mirascript/subtle';
4
+ import { symbolName, constantValue, equalText, scalar, globalFnName } from './utils.js';
5
+ import { migrateAtomic, migrateExpr, migrateParen } from './node.js';
4
6
  import { toBoolean, toNumber } from './to-type.js';
5
7
  import { migrateSymbol } from './symbol.js';
6
- import { operations, serialize } from '@mirascript/mirascript/subtle';
8
+ import { serialize } from './serialize.js';
7
9
  const BINARY_MATH_OPERATORS = {
8
10
  add: [
9
11
  ' + ',
10
- (l, r) => ({
12
+ (state, l, r) => ({
11
13
  type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
12
- code: `matrix.add(${l.code}, ${r.code})`,
14
+ code: `${globalFnName(state, 'matrix')}.add(${l.code}, ${r.code})`,
13
15
  }),
14
16
  ],
15
17
  subtract: [
16
18
  ' - ',
17
- (l, r) => ({
19
+ (state, l, r) => ({
18
20
  type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
19
- code: `matrix.subtract(${l.code}, ${r.code})`,
21
+ code: `${globalFnName(state, 'matrix')}.subtract(${l.code}, ${r.code})`,
20
22
  }),
21
23
  ],
22
24
  multiply: [
23
25
  ' * ',
24
- (l, r) => ({
26
+ (state, l, r) => ({
25
27
  type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
26
- code: `matrix.multiply(${l.code}, ${r.code})`,
28
+ code: `${globalFnName(state, 'matrix')}.multiply(${l.code}, ${r.code})`,
27
29
  }),
28
30
  ],
29
31
  dotMultiply: [
30
32
  ' * ',
31
- (l, r) => ({
33
+ (state, l, r) => ({
32
34
  type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
33
- code: `matrix.entrywise_multiply(${l.code}, ${r.code})`,
35
+ code: `${globalFnName(state, 'matrix')}.entrywise_multiply(${l.code}, ${r.code})`,
34
36
  }),
35
37
  ],
36
38
  divide: [
37
39
  ' / ',
38
- (l, r) => ({
39
- type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
40
- code: `matrix.multiply(${l.code}, matrix.invert(${r.code}))`,
41
- }),
40
+ (state, l, r) => {
41
+ if (r.type === 'array' || !r.type) {
42
+ return {
43
+ type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
44
+ code: `${globalFnName(state, 'matrix')}.multiply(${l.code}, ${globalFnName(state, 'matrix')}.invert(${r.code}))`,
45
+ };
46
+ }
47
+ return {
48
+ type: l.type === 'array' ? 'array' : l.type ? 'number' : undefined,
49
+ code: `${globalFnName(state, 'matrix')}.entrywise_divide(${l.code}, ${r.code})`,
50
+ };
51
+ },
42
52
  ],
43
53
  dotDivide: [
44
54
  ' / ',
45
- (l, r) => ({
55
+ (state, l, r) => ({
46
56
  type: l.type === 'array' || r.type === 'array' ? 'array' : l.type && r.type ? 'number' : undefined,
47
- code: `matrix.entrywise_divide(${l.code}, ${r.code})`,
57
+ code: `${globalFnName(state, 'matrix')}.entrywise_divide(${l.code}, ${r.code})`,
48
58
  }),
49
59
  ],
50
60
  mod: [' % '],
@@ -62,60 +72,83 @@ const MATH_FUNCTIONS = {
62
72
  rightLogShift: 'shr',
63
73
  };
64
74
  const BIT_OPS_TO_BOOL_OPS = {
65
- bitAnd: '&&',
66
- bitOr: '||',
67
- bitXor: '!=',
75
+ bitAnd: ['&&', false],
76
+ bitOr: ['||', false],
77
+ bitXor: ['!=', true],
68
78
  };
69
79
  const COMPARE_OPERATORS = {
70
- smaller: '<',
71
- smallerEq: '<=',
72
- larger: '>',
73
- largerEq: '>=',
80
+ smaller: ['<'],
81
+ smallerEq: ['<='],
82
+ larger: ['>'],
83
+ largerEq: ['>='],
84
+ equal: ['=~', '=='],
85
+ unequal: ['!~', '!='],
74
86
  };
75
87
  /** 转换为 boolean */
76
- function b(op, state, node) {
77
- const re = migrateExpr(state, node);
88
+ function b(op, state, node, migrator = migrateExpr) {
89
+ const re = migrator(state, node);
78
90
  return toBoolean(state, scalar(op, state, re)).code;
79
91
  }
92
+ /** 数组元素类型 */
93
+ function elementType(lit) {
94
+ if (!isVmArray(lit) || !lit.length)
95
+ return undefined;
96
+ let type = undefined;
97
+ for (const e of lit) {
98
+ const t = operations.$Type(e);
99
+ if (!type) {
100
+ type = t;
101
+ }
102
+ else if (type !== t) {
103
+ return undefined;
104
+ }
105
+ }
106
+ return type;
107
+ }
80
108
  /** 二元操作 */
81
109
  function binary(state, l, r, op, alt) {
82
110
  if (l.type && r.type && l.type !== 'array' && r.type !== 'array') {
83
- return op(l, r);
111
+ return op(state, l, r);
84
112
  }
85
113
  if (Array.isArray(l.literal) && l.literal.every((e) => !Array.isArray(e))) {
114
+ const it = { code: 'it', type: elementType(l.literal) };
86
115
  return {
87
116
  type: 'array',
88
- code: `${l.code}::map(fn { ${op({ code: 'it' }, r).code} })`,
117
+ code: `${l.code}::${globalFnName(state, 'map')}(fn { ${op(state, it, r).code} })`,
89
118
  };
90
119
  }
91
120
  if (Array.isArray(r.literal) && r.literal.every((e) => !Array.isArray(e))) {
121
+ const it = { code: 'it', type: elementType(r.literal) };
92
122
  return {
93
123
  type: 'array',
94
- code: `${r.code}::map(fn { ${op(l, { code: 'it' }).code} })`,
124
+ code: `${r.code}::${globalFnName(state, 'map')}(fn { ${op(state, l, it).code} })`,
95
125
  };
96
126
  }
97
127
  if (alt) {
98
- return alt(l, r);
128
+ return alt(state, l, r);
99
129
  }
130
+ const a = { code: 'a', type: l.type === 'array' ? elementType(l.literal) : l.type };
131
+ const b = { code: 'b', type: r.type === 'array' ? elementType(r.literal) : r.type };
100
132
  return {
101
133
  type: l.type === 'array' || r.type === 'array' ? 'array' : undefined,
102
- code: `matrix.entrywise(${l.code}, ${r.code}, fn (a, b) { ${op({ code: 'a' }, { code: 'b' }).code} })`,
134
+ code: `${globalFnName(state, 'matrix')}.entrywise(${l.code}, ${r.code}, fn (a, b) { ${op(state, a, b).code} })`,
103
135
  };
104
136
  }
105
137
  /** 一元操作 */
106
138
  function unary(state, v, op) {
107
139
  if (v.type && v.type !== 'array') {
108
- return op(v);
140
+ return op(state, v);
109
141
  }
110
142
  if (Array.isArray(v.literal) && v.literal.every((e) => !Array.isArray(e))) {
143
+ const it = { code: 'it', type: elementType(v.literal) };
111
144
  return {
112
145
  type: 'array',
113
- code: `${v.code}::map(fn { ${op({ code: 'it' }).code} })`,
146
+ code: `${v.code}::${globalFnName(state, 'map')}(fn { ${op(state, it).code} })`,
114
147
  };
115
148
  }
116
149
  return {
117
150
  type: 'array',
118
- code: `matrix.entrywise(${v.code}, nil, fn { ${op({ code: 'it' }).code} })`,
151
+ code: `${globalFnName(state, 'matrix')}.entrywise(${v.code}, nil, fn { ${op(state, { code: 'it' }).code} })`,
119
152
  };
120
153
  }
121
154
  /** 转换 AST */
@@ -137,22 +170,22 @@ export function migrateOperator(state, node, options) {
137
170
  case 'dotDivide':
138
171
  case 'dotPow': {
139
172
  const [op, alt] = BINARY_MATH_OPERATORS[fn];
140
- return binary(state, migrateExpr(state, a0), migrateExpr(state, a1), (l, r) => ({
173
+ return binary(state, migrateExpr(state, a0), migrateExpr(state, a1), (state, l, r) => ({
141
174
  type: 'number',
142
175
  code: `${l.code}${op}${r.code}`,
143
176
  }), alt === false
144
- ? (l, r) => {
177
+ ? (state, l, r) => {
145
178
  state.warn(`'${op.trim()}' 不支持矩阵,计算结果可能不一致`);
146
- return { code: `${l.code} ^ ${r.code}` };
179
+ return { code: `${l.code}${op}${r.code}` };
147
180
  }
148
181
  : alt);
149
182
  }
150
183
  case 'unaryMinus':
151
184
  case 'unaryPlus': {
152
185
  const op = fn === 'unaryMinus' ? '-' : '+';
153
- const f = fn === 'unaryMinus' ? operations.$Neg : operations.$Pos;
154
186
  const exp = migrateExpr(state, a0);
155
187
  if (typeof exp.literal == 'number') {
188
+ const f = fn === 'unaryMinus' ? operations.$Neg : operations.$Pos;
156
189
  const v = f(exp.literal);
157
190
  return {
158
191
  type: 'number',
@@ -160,7 +193,7 @@ export function migrateOperator(state, node, options) {
160
193
  code: serialize(v),
161
194
  };
162
195
  }
163
- return unary(state, migrateExpr(state, a0), (v) => ({
196
+ return unary(state, migrateExpr(state, a0), (state, v) => ({
164
197
  type: 'number',
165
198
  code: `${op}${v.code}`,
166
199
  }));
@@ -179,8 +212,10 @@ export function migrateOperator(state, node, options) {
179
212
  return scalar(f, state, r);
180
213
  });
181
214
  if (codes.every((c) => c.type === 'boolean' || c.as_boolean) && fn in BIT_OPS_TO_BOOL_OPS) {
182
- const boolOp = BIT_OPS_TO_BOOL_OPS[fn];
183
- const code = codes.map((c) => toBoolean(state, c).code).join(` ${boolOp} `);
215
+ const [boolOp, needParen] = BIT_OPS_TO_BOOL_OPS[fn];
216
+ const code = args
217
+ .map((a) => toBoolean(state, (needParen ? migrateParen : migrateExpr)(state, a)).code)
218
+ .join(` ${boolOp} `);
184
219
  return {
185
220
  type: 'number',
186
221
  code: `to_number(${code})`,
@@ -213,7 +248,7 @@ export function migrateOperator(state, node, options) {
213
248
  case 'xor': {
214
249
  return {
215
250
  type: 'boolean',
216
- code: `${open}${b('!=', state, a0)} != ${b('!=', state, a1)}${close}`,
251
+ code: `${open}${b('!=', state, a0, migrateParen)} != ${b('!=', state, a1, migrateParen)}${close}`,
217
252
  };
218
253
  }
219
254
  case 'not': {
@@ -238,17 +273,21 @@ export function migrateOperator(state, node, options) {
238
273
  };
239
274
  }
240
275
  case 'equal':
241
- case 'unequal': {
242
- const op = fn === 'equal' ? '==' : '!=';
276
+ case 'unequal':
277
+ case 'smaller':
278
+ case 'smallerEq':
279
+ case 'larger':
280
+ case 'largerEq': {
281
+ const [op, eqOp] = COMPARE_OPERATORS[fn];
243
282
  const c0 = constantValue(a0);
244
283
  const c1 = constantValue(a1);
245
- if (c0 === null || c1 === null) {
246
- state.loose();
247
- const p0 = c0 === null ? { code: `nil` } : scalar(op, state, migrateExpr(state, a0));
248
- const p1 = c1 === null ? { code: `nil` } : scalar(op, state, migrateExpr(state, a1));
284
+ if (eqOp && (c0 === null || c1 === null)) {
285
+ // Mathjs 只支持标量与 null 比较
286
+ const p0 = c0 === null ? { code: `nil` } : migrateExpr(state, a0);
287
+ const p1 = c1 === null ? { code: `nil` } : migrateExpr(state, a1);
249
288
  return {
250
289
  type: 'boolean',
251
- code: `${open}${p0.code} ${op} ${p1.code}${close}`,
290
+ code: `${open}${p0.code} ${eqOp} ${p1.code}${close}`,
252
291
  };
253
292
  }
254
293
  // PI, E 与常量比较时,不进行转换
@@ -266,23 +305,31 @@ export function migrateOperator(state, node, options) {
266
305
  }
267
306
  return r;
268
307
  };
269
- return binary(state, a(a0), a(a1), (l, r) => {
308
+ return binary(state, a(a0), a(a1), (state, l, r) => {
309
+ if (l.literal !== undefined) {
310
+ return {
311
+ type: 'boolean',
312
+ code: `${toNumber(state, l).code} ${op} ${r.code}`,
313
+ };
314
+ }
315
+ if (r.literal !== undefined) {
316
+ return {
317
+ type: 'boolean',
318
+ code: `${l.code} ${op} ${toNumber(state, r).code}`,
319
+ };
320
+ }
321
+ if (l.type === 'number' || r.type === 'number') {
322
+ return {
323
+ type: 'boolean',
324
+ code: `${l.code} ${op} ${r.code}`,
325
+ };
326
+ }
270
327
  return {
271
328
  type: 'boolean',
272
329
  code: `${toNumber(state, l).code} ${op} ${toNumber(state, r).code}`,
273
330
  };
274
331
  });
275
332
  }
276
- case 'smaller':
277
- case 'smallerEq':
278
- case 'larger':
279
- case 'largerEq': {
280
- const op = COMPARE_OPERATORS[fn];
281
- return {
282
- type: 'boolean',
283
- code: `${open}${scalar(op, state, migrateExpr(state, a0)).code} ${op} ${scalar(op, state, migrateExpr(state, a1)).code}${close}`,
284
- };
285
- }
286
333
  default: {
287
334
  state.err(`不支持的运算符: ${fn}`);
288
335
  if (a1) {
@@ -1 +1 @@
1
- {"version":3,"file":"operator.js","sourceRoot":"","sources":["../../src/migrator/operator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operator.js","sourceRoot":"","sources":["../../src/migrator/operator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { VmValue } from '@mirascript/mirascript';
2
+ /** 序列化 */
3
+ export declare function serialize(value: VmValue): string;
4
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/migrator/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,UAAU;AACV,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgBhD"}
@@ -0,0 +1,21 @@
1
+ import { serialize as s, serializeNumber } from '@mirascript/mirascript/subtle';
2
+ /** 序列化 */
3
+ export function serialize(value) {
4
+ return s(value, {
5
+ serializeNumber: (value) => {
6
+ if (!Number.isFinite(value) || value === 0) {
7
+ return serializeNumber(value);
8
+ }
9
+ const p1 = value.toString();
10
+ const p2 = value.toExponential();
11
+ // 还是优先选择默认的形式,除非指数形式更短很多
12
+ if (p2.length + 2 < p1.length) {
13
+ return p2;
14
+ }
15
+ else {
16
+ return p1;
17
+ }
18
+ },
19
+ });
20
+ }
21
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/migrator/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,CAAC,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhF,UAAU;AACV,MAAM,UAAU,SAAS,CAAC,KAAc;IACpC,OAAO,CAAC,CAAC,KAAK,EAAE;QACZ,eAAe,EAAE,CAAC,KAAa,EAAU,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACjC,yBAAyB;YACzB,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"special.d.ts","sourceRoot":"","sources":["../../src/migrator/special.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAqBvC,aAAa;AACb,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAOrF"}
1
+ {"version":3,"file":"special.d.ts","sourceRoot":"","sources":["../../src/migrator/special.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAoDvC,aAAa;AACb,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAOrF"}
@@ -9,6 +9,37 @@ const pairs = [
9
9
  let d2 = matrix.diagonal([$yc, $yc, $yc], +3);
10
10
  d0::matrix.add(d1)::matrix.add(d2)`,
11
11
  ],
12
+ // 长导线校正移到后台处理
13
+ [
14
+ 'sinh(gamma',
15
+ `rpl = $R1pu * $Vbase * $Vbase / $Sbase; xpl = $X1pu * $Vbase * $Vbase / $Sbase;bpl = $B1pu / $Vbase / $Vbase * $Sbase; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); z = $Length * zp * (gamma == 0 ? 1 : (sinh(gamma * $Length)/(gamma * $Length))); re(z)`,
16
+ '$R1pu * $Vbase * $Vbase / $Sbase * $Length',
17
+ ],
18
+ [
19
+ 'sinh(gamma',
20
+ `rpl = $R1pu * $Vbase * $Vbase / $Sbase; xpl = $X1pu * $Vbase * $Vbase / $Sbase;bpl = $B1pu / $Vbase / $Vbase * $Sbase; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); z = $Length * zp * (gamma == 0 ? 1 : (sinh(gamma * $Length)/(gamma * $Length))); im(z)`,
21
+ '$X1pu * $Vbase * $Vbase / $Sbase * $Length',
22
+ ],
23
+ [
24
+ 'tanh(gamma',
25
+ `rpl = $R1pu * $Vbase * $Vbase / $Sbase; xpl = $X1pu * $Vbase * $Vbase / $Sbase;bpl = $B1pu / $Vbase / $Vbase * $Sbase; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); y = $Length * yp * (gamma == 0 ? 1 : (tanh(gamma * $Length / 2) / (gamma * $Length / 2))); im(y)`,
26
+ '$B1pu / $Vbase / $Vbase * $Sbase * $Length',
27
+ ],
28
+ [
29
+ 'sinh(gamma',
30
+ `rpl = $R1; xpl = $Xl1; bpl = 1e-6 / $Xc1; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); z = $Length * zp * (gamma == 0 ? 1 : (sinh(gamma * $Length)/(gamma * $Length))); re(z)`,
31
+ '$R1 * $Length',
32
+ ],
33
+ [
34
+ 'sinh(gamma',
35
+ `rpl = $R1; xpl = $Xl1; bpl = 1e-6 / $Xc1; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); z = $Length * zp * (gamma == 0 ? 1 : (sinh(gamma * $Length)/(gamma * $Length))); im(z)`,
36
+ '$Xl1 * $Length',
37
+ ],
38
+ [
39
+ 'tanh(gamma',
40
+ `rpl = $R1; xpl = $Xl1; bpl = 1e-6 / $Xc1; zp = rpl + i * xpl; yp = i * bpl; gamma = sqrt(zp * yp); y = $Length * yp * (gamma == 0 ? 1 : (tanh(gamma * $Length / 2) / (gamma * $Length / 2))); im(y)`,
41
+ '1e-6 / $Xc1 * $Length',
42
+ ],
12
43
  ].map(([find, mathjs, mira]) => ({
13
44
  find,
14
45
  mathjs: parse(mathjs),
@@ -1 +1 @@
1
- {"version":3,"file":"special.js","sourceRoot":"","sources":["../../src/migrator/special.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,KAAK,GACP;IACI;QACI,QAAQ;QACR,qPAAqP;QACrP;;;;+CAImC;KACtC;CAER,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAI;IACJ,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,aAAa;AACb,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAc;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"special.js","sourceRoot":"","sources":["../../src/migrator/special.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,KAAK,GACP;IACI;QACI,QAAQ;QACR,qPAAqP;QACrP;;;;+CAImC;KACtC;IACD,cAAc;IACd;QACI,YAAY;QACZ,wQAAwQ;QACxQ,4CAA4C;KAC/C;IACD;QACI,YAAY;QACZ,wQAAwQ;QACxQ,4CAA4C;KAC/C;IACD;QACI,YAAY;QACZ,kRAAkR;QAClR,4CAA4C;KAC/C;IACD;QACI,YAAY;QACZ,2LAA2L;QAC3L,eAAe;KAClB;IACD;QACI,YAAY;QACZ,2LAA2L;QAC3L,gBAAgB;KACnB;IACD;QACI,YAAY;QACZ,qMAAqM;QACrM,uBAAuB;KAC1B;CAER,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAI;IACJ,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,aAAa;AACb,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAc;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -1,14 +1,14 @@
1
- import type { Scope } from '../scope.js';
1
+ import type { VmContext } from '@mirascript/mirascript';
2
2
  import type { Result } from './interface.js';
3
3
  /** 转换状态 */
4
4
  export declare class BaseState {
5
5
  private readonly expr;
6
6
  readonly condition: boolean;
7
7
  /** 可识别的全局环境 */
8
- readonly globals: Scope;
8
+ readonly globals: VmContext;
9
9
  constructor(expr: string, condition: boolean,
10
10
  /** 可识别的全局环境 */
11
- globals: Scope);
11
+ globals: VmContext);
12
12
  /** 帮助函数 */
13
13
  private readonly helpers;
14
14
  /** 添加帮助函数 */
@@ -47,7 +47,7 @@ export declare class FunctionState implements State {
47
47
  /** @inheritdoc */
48
48
  readonly condition = false;
49
49
  /** @inheritdoc */
50
- get globals(): Scope;
50
+ get globals(): VmContext;
51
51
  /** @inheritdoc */
52
52
  helper(code: string): void;
53
53
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/migrator/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAwE7C,WAAW;AACX,qBAAa,SAAS;IAEd,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,eAAe;IACf,QAAQ,CAAC,OAAO,EAAE,KAAK;gBAHN,IAAI,EAAE,MAAM,EACpB,SAAS,EAAE,OAAO;IAC3B,eAAe;IACN,OAAO,EAAE,KAAK;IAE3B,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,aAAa;IACb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG1B,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,mBAAmB;IACnB,QAAQ,CAAC,MAAM,sBAA6B;IAC5C,eAAe;IACf,KAAK,IAAI,IAAI;IAGb,eAAe;IACf,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,eAAe;IACf,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG1B,cAAc;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,aAAa;IACb,OAAO,CAAC,WAAW;IAQnB,SAAS;IACT,OAAO,IAAI,IAAI,EAsCb,WAAW;IACb,MAAM,IAAI,MAAM;CAgDnB;AACD,WAAW;AACX,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC;KAAG,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;CAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;AACzF,WAAW;AACX,qBAAa,aAAc,YAAW,KAAK;IAEnC,QAAQ,CAAC,SAAS,EAAE,KAAK;gBAAhB,SAAS,EAAE,KAAK,EACzB,MAAM,EAAE,SAAS,MAAM,EAAE;IAO7B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,SAAS;IAC3B,kBAAkB;IAClB,IAAI,OAAO,IAAI,KAAK,CAEnB;IACD,kBAAkB;IAClB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG1B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB;IAClB,KAAK,IAAI,IAAI;IAGb,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,kBAAkB;IAClB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG1B,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG9B"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/migrator/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAWxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAwD7C,WAAW;AACX,qBAAa,SAAS;IAEd,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,eAAe;IACf,QAAQ,CAAC,OAAO,EAAE,SAAS;gBAHV,IAAI,EAAE,MAAM,EACpB,SAAS,EAAE,OAAO;IAC3B,eAAe;IACN,OAAO,EAAE,SAAS;IAE/B,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,aAAa;IACb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG1B,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,mBAAmB;IACnB,QAAQ,CAAC,MAAM,sBAA6B;IAC5C,eAAe;IACf,KAAK,IAAI,IAAI;IAGb,eAAe;IACf,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,eAAe;IACf,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG1B,cAAc;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,aAAa;IACb,OAAO,CAAC,WAAW;IAQnB,SAAS;IACT,OAAO,IAAI,IAAI,EAuCb,WAAW;IACb,MAAM,IAAI,MAAM;CA4DnB;AACD,WAAW;AACX,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC;KAAG,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;CAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;AACzF,WAAW;AACX,qBAAa,aAAc,YAAW,KAAK;IAEnC,QAAQ,CAAC,SAAS,EAAE,KAAK;gBAAhB,SAAS,EAAE,KAAK,EACzB,MAAM,EAAE,SAAS,MAAM,EAAE;IAO7B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,SAAS;IAC3B,kBAAkB;IAClB,IAAI,OAAO,IAAI,SAAS,CAEvB;IACD,kBAAkB;IAClB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG1B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB;IAClB,KAAK,IAAI,IAAI;IAGb,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,kBAAkB;IAClB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG1B,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG9B"}
@@ -1,10 +1,11 @@
1
1
  import { parse } from './parser.js';
2
- import { isAssignmentNode, isBlockNode, isFunctionAssignmentNode, isSymbolNode, } from 'mathjs';
2
+ import { isAssignmentNode, isBlockNode, isConstantNode, isFunctionAssignmentNode, isSymbolNode, } from 'mathjs';
3
3
  import { migrateAtomic } from './node.js';
4
4
  import { toBoolean } from './to-type.js';
5
- import { constantValue, symbolName, unsupportedNode } from './utils.js';
5
+ import { constantValue, migrateSymbolName, symbolName, unsupportedNode } from './utils.js';
6
6
  import { migrateAccess } from './access.js';
7
7
  import { specialMigrate } from './special.js';
8
+ import { migrateFunctionAssignment } from './function.js';
8
9
  /** 转换 AST */
9
10
  function migrateLast(state, node) {
10
11
  if (isAssignmentNode(node)) {
@@ -30,17 +31,20 @@ function migrateAssignment(state, node) {
30
31
  const { object, index, value } = node;
31
32
  const name = symbolName(object);
32
33
  if (name && index == null) {
33
- // name = xxx;
34
+ const localName = migrateSymbolName(name, true);
34
35
  if (state.locals.has(name)) {
35
- state.err(`不支持局部变量重新赋值: ${name}'`);
36
+ state.err(`不支持局部变量重新赋值: '${name}'`);
36
37
  return {
37
- code: `${name} = ${migrateAtomic(state, value).code}`,
38
+ code: `${localName} = ${migrateAtomic(state, value).code}`,
38
39
  };
39
40
  }
40
41
  const expr = migrateAtomic(state, value);
41
42
  state.locals.set(name, expr);
43
+ if (name !== localName) {
44
+ state.warn(`变量名 '${name}' 是 MiraScript 关键字,已转换为 '${localName}'`);
45
+ }
42
46
  return {
43
- code: `let ${name} = ${expr.code};`,
47
+ code: `let ${localName} = ${expr.code};`,
44
48
  };
45
49
  }
46
50
  if (index != null) {
@@ -52,26 +56,6 @@ function migrateAssignment(state, node) {
52
56
  }
53
57
  return unsupportedNode(state, node);
54
58
  }
55
- /** 转换函数定义语句 */
56
- function migrateFunctionAssignment(state, node) {
57
- state.loose();
58
- const { name, params, expr } = node;
59
- if (state.locals.has(name)) {
60
- state.err(`重复定义函数: ${name}`);
61
- }
62
- const fState = new FunctionState(state, params);
63
- let body = migrateAtomic(fState, expr);
64
- if (!(body.code.startsWith('{') && body.code.endsWith('}'))) {
65
- body = { ...body, code: `{ ${body.code} }` };
66
- }
67
- state.locals.set(name, {
68
- type: 'function',
69
- code: body.code,
70
- });
71
- return {
72
- code: `fn ${name}(${params.join(', ')}) ${body.code}`,
73
- };
74
- }
75
59
  /** 转换状态 */
76
60
  export class BaseState {
77
61
  constructor(expr, condition,
@@ -120,7 +104,7 @@ export class BaseState {
120
104
  if (stmt && !isFunc && !code.endsWith(';'))
121
105
  code += ';';
122
106
  if (node.comment)
123
- code += ' //' + node.comment;
107
+ code += ' //' + node.comment.slice(1);
124
108
  this.ret.push(code);
125
109
  }
126
110
  /** 转换 */
@@ -138,7 +122,6 @@ export class BaseState {
138
122
  const sp = specialMigrate(this.expr, ast);
139
123
  if (sp != null) {
140
124
  this.ret.push(sp);
141
- this.loose();
142
125
  return;
143
126
  }
144
127
  if (isBlockNode(ast)) {
@@ -153,6 +136,9 @@ export class BaseState {
153
136
  }
154
137
  return;
155
138
  }
139
+ else if (isConstantNode(ast) && ast.value === undefined && ast.comment) {
140
+ this.ret.push(`//${ast.comment.slice(1)}`);
141
+ }
156
142
  else {
157
143
  this.migrateStmt(migrateLast, false, ast);
158
144
  return;
@@ -171,21 +157,33 @@ export class BaseState {
171
157
  // 写入原始 math.js 作为注释
172
158
  const lines = this.expr.split('\n').map((line) => `// ${line}`);
173
159
  lines.unshift(`// # 原始 math.js 表达式`);
160
+ const addComment = (prefix, item) => {
161
+ if (!item.includes('\n')) {
162
+ lines.unshift(`// ${prefix}: ${item}`);
163
+ return;
164
+ }
165
+ const l = item.split('\n');
166
+ const indent = ' '.repeat(prefix.length + 2);
167
+ for (let i = l.length - 1; i >= 1; i--) {
168
+ lines.unshift(`// ${indent}${l[i]}`);
169
+ }
170
+ lines.unshift(`// ${prefix}: ${l[0]}`);
171
+ };
174
172
  if (this.errors.size || this.warnings.size || this.critical.size) {
175
173
  const warnings = [...this.warnings];
176
174
  for (let i = warnings.length - 1; i >= 0; i--) {
177
175
  const warn = warnings[i];
178
- lines.unshift(`// - W: ${warn}`);
176
+ addComment('- W', warn);
179
177
  }
180
178
  const errors = [...this.errors];
181
179
  for (let i = errors.length - 1; i >= 0; i--) {
182
180
  const err = errors[i];
183
- lines.unshift(`// - E: ${err}`);
181
+ addComment('- E', err);
184
182
  }
185
183
  const critical = [...this.critical];
186
184
  for (let i = critical.length - 1; i >= 0; i--) {
187
185
  const crit = critical[i];
188
- lines.unshift(`// - C: ${crit}`);
186
+ addComment('- C', crit);
189
187
  }
190
188
  lines.unshift(`// # 转换日志`);
191
189
  }