@mirascript/constants 0.1.60 → 0.1.62-alpha.10
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/LICENSE +21 -0
- package/package.json +3 -8
- package/src/constants.g.ts +0 -851
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CloudPSS
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirascript/constants",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.62-alpha.10",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "MiraScript constants",
|
|
@@ -8,15 +8,10 @@
|
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"exports": {
|
|
11
|
-
".": "./dist/index.js"
|
|
12
|
-
"./types": "./dist/types.js",
|
|
13
|
-
"./loader": {
|
|
14
|
-
"node": "./dist/loader/node.js",
|
|
15
|
-
"default": "./dist/loader/web.js"
|
|
16
|
-
}
|
|
11
|
+
".": "./dist/index.js"
|
|
17
12
|
},
|
|
18
13
|
"devDependencies": {
|
|
19
|
-
"@types/node": "^25.
|
|
14
|
+
"@types/node": "^25.6.0",
|
|
20
15
|
"nodemon": "^3.1.14"
|
|
21
16
|
},
|
|
22
17
|
"scripts": {
|
package/src/constants.g.ts
DELETED
|
@@ -1,851 +0,0 @@
|
|
|
1
|
-
export declare class Config {
|
|
2
|
-
private constructor();
|
|
3
|
-
free(): void;
|
|
4
|
-
[Symbol.dispose](): void;
|
|
5
|
-
diagnostic_error: boolean;
|
|
6
|
-
diagnostic_hint: boolean;
|
|
7
|
-
diagnostic_info: boolean;
|
|
8
|
-
diagnostic_position_encoding: DiagnosticPositionEncoding;
|
|
9
|
-
diagnostic_reference: boolean;
|
|
10
|
-
diagnostic_sourcemap: boolean;
|
|
11
|
-
diagnostic_tag: boolean;
|
|
12
|
-
diagnostic_warning: boolean;
|
|
13
|
-
input_mode: InputMode;
|
|
14
|
-
trivia: boolean;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Diagnostic codes for MiraScript compiler and tools.
|
|
18
|
-
*/
|
|
19
|
-
export enum DiagnosticCode {
|
|
20
|
-
ErrorStart = 1000,
|
|
21
|
-
InternalError = 1001,
|
|
22
|
-
LexerError = 1002,
|
|
23
|
-
ParserError = 1003,
|
|
24
|
-
EmitterError = 1004,
|
|
25
|
-
OptimizerError = 1005,
|
|
26
|
-
Unimplemented = 1006,
|
|
27
|
-
UnknownToken = 1007,
|
|
28
|
-
UnexpectedToken = 1008,
|
|
29
|
-
InvalidReservedKeyword = 1009,
|
|
30
|
-
InvalidKeyword = 1010,
|
|
31
|
-
InvalidNumberLiteralUnderscore = 1011,
|
|
32
|
-
InvalidNumberLiteral = 1012,
|
|
33
|
-
OverflowNumberLiteral = 1013,
|
|
34
|
-
OverflowIntegerLiteral = 1014,
|
|
35
|
-
InvalidOrdinalLiteral = 1015,
|
|
36
|
-
UnterminatedString = 1016,
|
|
37
|
-
InvalidEscapeSequence = 1017,
|
|
38
|
-
InvalidHexEscapeSequence = 1018,
|
|
39
|
-
InvalidUnicodeEscapeSequence = 1019,
|
|
40
|
-
BadArraySpread = 1020,
|
|
41
|
-
UnterminatedInterpolation = 1021,
|
|
42
|
-
BadInterpolation = 1022,
|
|
43
|
-
EmptyInterpolation = 1023,
|
|
44
|
-
UnexpectedUnderscore = 1024,
|
|
45
|
-
UnexpectedGlobal = 1025,
|
|
46
|
-
MissingComma = 1026,
|
|
47
|
-
MissingCloseBracket = 1027,
|
|
48
|
-
MissingOpenBrace = 1028,
|
|
49
|
-
MissingCloseBrace = 1029,
|
|
50
|
-
MissingCloseParen = 1030,
|
|
51
|
-
MissingSemicolon = 1031,
|
|
52
|
-
MissingColon = 1032,
|
|
53
|
-
MissingBindOperator = 1033,
|
|
54
|
-
InvalidConstantName = 1034,
|
|
55
|
-
MissingFunctionName = 1035,
|
|
56
|
-
MissingModuleName = 1036,
|
|
57
|
-
MissingOpenParenAfterExtension = 1037,
|
|
58
|
-
MissingOpenParenAfterType = 1038,
|
|
59
|
-
InvalidTypeCall = 1039,
|
|
60
|
-
RecordLiteralInExtensionCaller = 1040,
|
|
61
|
-
MissingCase = 1041,
|
|
62
|
-
UnknownExpression = 1042,
|
|
63
|
-
UnmatchedCloseBrace = 1043,
|
|
64
|
-
UnmatchedCloseBracket = 1044,
|
|
65
|
-
UnmatchedCloseParen = 1045,
|
|
66
|
-
UnknownPattern = 1046,
|
|
67
|
-
InvalidConstantLiteral = 1047,
|
|
68
|
-
UnknownStatement = 1048,
|
|
69
|
-
ExpressionExpected = 1049,
|
|
70
|
-
PatternExpected = 1050,
|
|
71
|
-
ExclamationInLiteralPattern = 1051,
|
|
72
|
-
MutInRebindPattern = 1052,
|
|
73
|
-
ConstantInBindPattern = 1053,
|
|
74
|
-
MutInDiscardPattern = 1054,
|
|
75
|
-
DiscardInSpreadPattern = 1055,
|
|
76
|
-
SpreadDiscardInRecordPattern = 1056,
|
|
77
|
-
MispositionedSpreadInRecordPattern = 1057,
|
|
78
|
-
InterpolatedNameRecordPattern = 1058,
|
|
79
|
-
BadOmitKeyRecordPattern = 1059,
|
|
80
|
-
AmbiguousRangePattern = 1060,
|
|
81
|
-
DuplicateSpreadPattern = 1061,
|
|
82
|
-
MispositionedRestParameter = 1062,
|
|
83
|
-
UndefinedVariableAssignment = 1063,
|
|
84
|
-
ImmutableVariableAssignment = 1064,
|
|
85
|
-
UninitializedVariable = 1065,
|
|
86
|
-
DuplicateVariableDeclaration = 1066,
|
|
87
|
-
UnexpectedBreak = 1067,
|
|
88
|
-
UnexpectedContinue = 1068,
|
|
89
|
-
MisuseOfGlobalKeyword = 1069,
|
|
90
|
-
BadOmitKeyRecordExpression = 1070,
|
|
91
|
-
UnassignableExpression = 1071,
|
|
92
|
-
UnexpectedPub = 1072,
|
|
93
|
-
ErrorEnd = 1999,
|
|
94
|
-
WarningStart = 2000,
|
|
95
|
-
MisleadingNilVariable = 2001,
|
|
96
|
-
UnnecessaryIrrefutablePattern = 2002,
|
|
97
|
-
MatchExpressionHasNoCases = 2003,
|
|
98
|
-
NonNumberInRange = 2004,
|
|
99
|
-
NonNumberOrStringInComparison = 2005,
|
|
100
|
-
NonNumberInArithmetic = 2006,
|
|
101
|
-
NonBooleanInLogical = 2007,
|
|
102
|
-
LiteralNotCallable = 2008,
|
|
103
|
-
LiteralNotIndexable = 2009,
|
|
104
|
-
GlobalVariableNotDeclared = 2010,
|
|
105
|
-
WarningEnd = 2999,
|
|
106
|
-
InfoStart = 3000,
|
|
107
|
-
InfoEnd = 3999,
|
|
108
|
-
HintStart = 4000,
|
|
109
|
-
UnusedLocalVariable = 4001,
|
|
110
|
-
UnusedLocalFunction = 4002,
|
|
111
|
-
PreferLogicalOperatorAnd = 4003,
|
|
112
|
-
PreferLogicalOperatorOr = 4004,
|
|
113
|
-
PreferLogicalOperatorNot = 4005,
|
|
114
|
-
PreferParenthesesForRecordLiteral = 4006,
|
|
115
|
-
PreferIfExpression = 4007,
|
|
116
|
-
UnnecessaryParentheses = 4008,
|
|
117
|
-
PreferUppercaseConstant = 4009,
|
|
118
|
-
HintEnd = 4999,
|
|
119
|
-
ReferenceStart = 5000,
|
|
120
|
-
VariableDeclaredHere = 5001,
|
|
121
|
-
FunctionDeclaredHere = 5002,
|
|
122
|
-
ParameterDeclaredHere = 5003,
|
|
123
|
-
ParameterItDeclaredHere = 5004,
|
|
124
|
-
ParameterRestDeclaredHere = 5005,
|
|
125
|
-
ParameterSubPatternDeclaredHere = 5006,
|
|
126
|
-
ReferenceEnd = 5999,
|
|
127
|
-
TagStart = 10000,
|
|
128
|
-
LocalConst = 10001,
|
|
129
|
-
LocalImmutable = 10002,
|
|
130
|
-
LocalMutable = 10003,
|
|
131
|
-
LocalFunction = 10004,
|
|
132
|
-
LocalModule = 10005,
|
|
133
|
-
ParameterIt = 10006,
|
|
134
|
-
ParameterImmutable = 10007,
|
|
135
|
-
ParameterMutable = 10008,
|
|
136
|
-
ParameterImmutableRest = 10009,
|
|
137
|
-
ParameterMutableRest = 10010,
|
|
138
|
-
ParameterPattern = 10011,
|
|
139
|
-
ParameterRestPattern = 10012,
|
|
140
|
-
ParameterSubPatternImmutable = 10013,
|
|
141
|
-
ParameterSubPatternMutable = 10014,
|
|
142
|
-
GlobalVariable = 10015,
|
|
143
|
-
GlobalDynamicAccess = 10016,
|
|
144
|
-
RecordFieldIdName = 10017,
|
|
145
|
-
RecordFieldOrdinalName = 10018,
|
|
146
|
-
RecordFieldStringName = 10019,
|
|
147
|
-
UnnamedRecordField0 = 10020,
|
|
148
|
-
UnnamedRecordField1 = 10021,
|
|
149
|
-
UnnamedRecordField2 = 10022,
|
|
150
|
-
UnnamedRecordField3 = 10023,
|
|
151
|
-
UnnamedRecordField4 = 10024,
|
|
152
|
-
UnnamedRecordField5 = 10025,
|
|
153
|
-
UnnamedRecordField6 = 10026,
|
|
154
|
-
UnnamedRecordField7 = 10027,
|
|
155
|
-
UnnamedRecordField8 = 10028,
|
|
156
|
-
UnnamedRecordField9 = 10029,
|
|
157
|
-
UnnamedRecordFieldN = 10030,
|
|
158
|
-
OmitNamedRecordField = 10031,
|
|
159
|
-
FunctionCall = 10032,
|
|
160
|
-
ExtensionCall = 10033,
|
|
161
|
-
Scope = 10034,
|
|
162
|
-
String = 10035,
|
|
163
|
-
Interpolation = 10036,
|
|
164
|
-
ForExpression = 10037,
|
|
165
|
-
WhileExpression = 10038,
|
|
166
|
-
LoopExpression = 10039,
|
|
167
|
-
FnDeclaration = 10040,
|
|
168
|
-
FnExpression = 10041,
|
|
169
|
-
IfExpression = 10042,
|
|
170
|
-
MatchExpression = 10043,
|
|
171
|
-
TagEnd = 10999,
|
|
172
|
-
TagRefStart = 11000,
|
|
173
|
-
ReadLocal = 11001,
|
|
174
|
-
ReadWriteLocal = 11002,
|
|
175
|
-
WriteLocal = 11003,
|
|
176
|
-
RedeclareLocal = 11004,
|
|
177
|
-
ExportedLocal = 11005,
|
|
178
|
-
Callable = 11006,
|
|
179
|
-
ArgumentExtension = 11007,
|
|
180
|
-
ArgumentStart = 11008,
|
|
181
|
-
ArgumentEnd = 11009,
|
|
182
|
-
ArgumentComma = 11010,
|
|
183
|
-
ArgumentSpread = 11011,
|
|
184
|
-
KeywordFor = 11012,
|
|
185
|
-
KeywordIn = 11013,
|
|
186
|
-
KeywordWhile = 11014,
|
|
187
|
-
KeywordLoop = 11015,
|
|
188
|
-
KeywordBreak = 11016,
|
|
189
|
-
KeywordContinue = 11017,
|
|
190
|
-
KeywordIf = 11018,
|
|
191
|
-
KeywordElse = 11019,
|
|
192
|
-
KeywordMatch = 11020,
|
|
193
|
-
KeywordCase = 11021,
|
|
194
|
-
KeywordFn = 11022,
|
|
195
|
-
KeywordReturn = 11023,
|
|
196
|
-
/**
|
|
197
|
-
* Work with [DiagnosticCode::OmitNamedRecordField]
|
|
198
|
-
*/
|
|
199
|
-
OmitNamedRecordFieldName = 11024,
|
|
200
|
-
TagRefEnd = 11999,
|
|
201
|
-
SourceMap = 12000,
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Encoding for counting positions in diagnostics.
|
|
205
|
-
*/
|
|
206
|
-
export enum DiagnosticPositionEncoding {
|
|
207
|
-
/**
|
|
208
|
-
* Use the default encoding (UTF-8) and
|
|
209
|
-
* 0-based indexing from the start of the file.
|
|
210
|
-
* Do not convert positions to line-column format.
|
|
211
|
-
*/
|
|
212
|
-
None = 0,
|
|
213
|
-
/**
|
|
214
|
-
* Convert positions to 1-based UTF-8 line-column format.
|
|
215
|
-
*/
|
|
216
|
-
Utf8 = 1,
|
|
217
|
-
/**
|
|
218
|
-
* Convert positions to 1-based UTF-16 line-column format.
|
|
219
|
-
*/
|
|
220
|
-
Utf16 = 2,
|
|
221
|
-
/**
|
|
222
|
-
* Convert positions to 1-based UTF-32 line-column format.
|
|
223
|
-
*/
|
|
224
|
-
Utf32 = 3,
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Mode for reading input.
|
|
228
|
-
*/
|
|
229
|
-
export enum InputMode {
|
|
230
|
-
Script = 0,
|
|
231
|
-
Template = 1,
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* MiraScript OpCodes
|
|
235
|
-
*/
|
|
236
|
-
export enum OpCode {
|
|
237
|
-
/**
|
|
238
|
-
* No operation
|
|
239
|
-
*/
|
|
240
|
-
Noop = 0,
|
|
241
|
-
/**
|
|
242
|
-
* ADD %ret %1 %2\
|
|
243
|
-
* %ret = %1 + %2
|
|
244
|
-
*/
|
|
245
|
-
Add = 1,
|
|
246
|
-
/**
|
|
247
|
-
* SUB %ret %1 %2\
|
|
248
|
-
* %ret = %1 - %2
|
|
249
|
-
*/
|
|
250
|
-
Sub = 2,
|
|
251
|
-
/**
|
|
252
|
-
* MUL %ret %1 %2\
|
|
253
|
-
* %ret = %1 * %2
|
|
254
|
-
*/
|
|
255
|
-
Mul = 3,
|
|
256
|
-
/**
|
|
257
|
-
* DIV %ret %1 %2\
|
|
258
|
-
* %ret = %1 / %2
|
|
259
|
-
*/
|
|
260
|
-
Div = 4,
|
|
261
|
-
/**
|
|
262
|
-
* MOD %ret %1 %2\
|
|
263
|
-
* %ret = %1 % %2
|
|
264
|
-
*/
|
|
265
|
-
Mod = 5,
|
|
266
|
-
/**
|
|
267
|
-
* EXP %ret %1 %2\
|
|
268
|
-
* %ret = %1 ^ %2
|
|
269
|
-
*/
|
|
270
|
-
Pow = 6,
|
|
271
|
-
/**
|
|
272
|
-
* POS %ret %1\
|
|
273
|
-
* %ret = +%1
|
|
274
|
-
*/
|
|
275
|
-
Pos = 7,
|
|
276
|
-
/**
|
|
277
|
-
* NEG %ret %1\
|
|
278
|
-
* %ret = -%1
|
|
279
|
-
*/
|
|
280
|
-
Neg = 8,
|
|
281
|
-
/**
|
|
282
|
-
* NOT %ret %1\
|
|
283
|
-
* %ret = !%1
|
|
284
|
-
*/
|
|
285
|
-
Not = 9,
|
|
286
|
-
/**
|
|
287
|
-
* PLUS %ret %1\
|
|
288
|
-
* %ret = +%1
|
|
289
|
-
*/
|
|
290
|
-
Plus = 10,
|
|
291
|
-
/**
|
|
292
|
-
* EQ %ret %1 %2\
|
|
293
|
-
* %ret = %1 == %2
|
|
294
|
-
*/
|
|
295
|
-
Eq = 11,
|
|
296
|
-
/**
|
|
297
|
-
* NEQ %ret %1 %2\
|
|
298
|
-
* %ret = %1 != %2
|
|
299
|
-
*/
|
|
300
|
-
Neq = 12,
|
|
301
|
-
/**
|
|
302
|
-
* LT %ret %1 %2\
|
|
303
|
-
* %ret = %1 < %2
|
|
304
|
-
*/
|
|
305
|
-
Lt = 13,
|
|
306
|
-
/**
|
|
307
|
-
* LTE %ret %1 %2\
|
|
308
|
-
* %ret = %1 <= %2
|
|
309
|
-
*/
|
|
310
|
-
Lte = 14,
|
|
311
|
-
/**
|
|
312
|
-
* GT %ret %1 %2\
|
|
313
|
-
* %ret = %1 > %2
|
|
314
|
-
*/
|
|
315
|
-
Gt = 15,
|
|
316
|
-
/**
|
|
317
|
-
* GTE %ret %1 %2\
|
|
318
|
-
* %ret = %1 >= %2
|
|
319
|
-
*/
|
|
320
|
-
Gte = 16,
|
|
321
|
-
/**
|
|
322
|
-
* AEQ %ret %1 %2\
|
|
323
|
-
* %ret = %1 =~ %2
|
|
324
|
-
*/
|
|
325
|
-
Aeq = 17,
|
|
326
|
-
/**
|
|
327
|
-
* NAEQ %ret %1 %2\
|
|
328
|
-
* %ret = %1 !~ %2
|
|
329
|
-
*/
|
|
330
|
-
Naeq = 18,
|
|
331
|
-
/**
|
|
332
|
-
* SAME %ret %1 %2\
|
|
333
|
-
* %ret = %1 === %2 // Same value zero
|
|
334
|
-
*/
|
|
335
|
-
Same = 19,
|
|
336
|
-
/**
|
|
337
|
-
* Nsame %ret %1 %2\
|
|
338
|
-
* %ret = %1 !== %2
|
|
339
|
-
*/
|
|
340
|
-
Nsame = 20,
|
|
341
|
-
/**
|
|
342
|
-
* IN %ret %1 %2\
|
|
343
|
-
* %ret = %1 in %2
|
|
344
|
-
*/
|
|
345
|
-
In = 21,
|
|
346
|
-
/**
|
|
347
|
-
* IN_GLOBAL %ret %1 %2\
|
|
348
|
-
* %ret = %1 in global
|
|
349
|
-
*/
|
|
350
|
-
InGlobal = 22,
|
|
351
|
-
/**
|
|
352
|
-
* CONCAT %ret `n` %1 %2 ... %n\
|
|
353
|
-
* %ret = %1 .. %2 .. ... .. %n
|
|
354
|
-
*/
|
|
355
|
-
Concat = 23,
|
|
356
|
-
/**
|
|
357
|
-
* FORMAT %ret %1 `index`\
|
|
358
|
-
* %ret = format(%1, CONSTANTS\[index])
|
|
359
|
-
*/
|
|
360
|
-
Format = 24,
|
|
361
|
-
/**
|
|
362
|
-
* AND %ret %1 %2\
|
|
363
|
-
* %ret = %1 && %2
|
|
364
|
-
*/
|
|
365
|
-
And = 25,
|
|
366
|
-
/**
|
|
367
|
-
* OR %ret %1 %2\
|
|
368
|
-
* %ret = %1 || %2
|
|
369
|
-
*/
|
|
370
|
-
Or = 26,
|
|
371
|
-
/**
|
|
372
|
-
* ASSERT_INIT %v\
|
|
373
|
-
* assert(%v != uninitialized)
|
|
374
|
-
*/
|
|
375
|
-
AssertInit = 27,
|
|
376
|
-
/**
|
|
377
|
-
* ASSERT_NON_NIL %v\
|
|
378
|
-
* assert(%v != nil)
|
|
379
|
-
*/
|
|
380
|
-
AssertNonNil = 28,
|
|
381
|
-
/**
|
|
382
|
-
* TYPE %ret %1\
|
|
383
|
-
* %ret = type(%1)
|
|
384
|
-
*/
|
|
385
|
-
Type = 29,
|
|
386
|
-
/**
|
|
387
|
-
* TO_BOOLEAN %ret %1\
|
|
388
|
-
* %ret = boolean(%1)
|
|
389
|
-
*/
|
|
390
|
-
ToBoolean = 30,
|
|
391
|
-
/**
|
|
392
|
-
* TO_NUMBER %ret %1\
|
|
393
|
-
* %ret = number(%1)
|
|
394
|
-
*/
|
|
395
|
-
ToNumber = 31,
|
|
396
|
-
/**
|
|
397
|
-
* TO_STRING %ret %1\
|
|
398
|
-
* %ret = string(%1)
|
|
399
|
-
*/
|
|
400
|
-
ToString = 32,
|
|
401
|
-
/**
|
|
402
|
-
* IS_BOOLEAN %ret %1\
|
|
403
|
-
* %ret = type(%1) == "boolean"
|
|
404
|
-
*/
|
|
405
|
-
IsBoolean = 33,
|
|
406
|
-
/**
|
|
407
|
-
* IS_NUMBER %ret %1\
|
|
408
|
-
* %ret = type(%1) == "number"
|
|
409
|
-
*/
|
|
410
|
-
IsNumber = 34,
|
|
411
|
-
/**
|
|
412
|
-
* IS_STRING %ret %1\
|
|
413
|
-
* %ret = type(%1) == "string"
|
|
414
|
-
*/
|
|
415
|
-
IsString = 35,
|
|
416
|
-
/**
|
|
417
|
-
* IS_RECORD %ret %1\
|
|
418
|
-
* %ret = type(%1) == "record"
|
|
419
|
-
*/
|
|
420
|
-
IsRecord = 36,
|
|
421
|
-
/**
|
|
422
|
-
* IS_ARRAY %ret %1\
|
|
423
|
-
* %ret = type(%1) == "array"
|
|
424
|
-
*/
|
|
425
|
-
IsArray = 37,
|
|
426
|
-
/**
|
|
427
|
-
* CONSTANT %reg `index`\
|
|
428
|
-
* %reg = CONSTANTS\[index]
|
|
429
|
-
*/
|
|
430
|
-
Constant = 38,
|
|
431
|
-
/**
|
|
432
|
-
* UNINIT %reg
|
|
433
|
-
* %reg = uninitialized
|
|
434
|
-
*/
|
|
435
|
-
Uninit = 39,
|
|
436
|
-
/**
|
|
437
|
-
* ASSIGN %ret %1\
|
|
438
|
-
* %ret = %1
|
|
439
|
-
*/
|
|
440
|
-
Assign = 40,
|
|
441
|
-
/**
|
|
442
|
-
* SWAP %1 %2\
|
|
443
|
-
* (%1, %2) = (%2, %1)
|
|
444
|
-
*/
|
|
445
|
-
Swap = 41,
|
|
446
|
-
/**
|
|
447
|
-
* GET_UPVALUE %ret `level` %%up\
|
|
448
|
-
* %ret = UPVALUES\[level]\[%%up]
|
|
449
|
-
*/
|
|
450
|
-
GetUpvalue = 42,
|
|
451
|
-
/**
|
|
452
|
-
* SET_UPVALUE %value `level` %%up \
|
|
453
|
-
* UPVALUES\[level]\[%%up] = %value
|
|
454
|
-
*/
|
|
455
|
-
SetUpvalue = 43,
|
|
456
|
-
/**
|
|
457
|
-
* GET_GLOBAL %ret `name` \
|
|
458
|
-
* %ret = GLOBALS\[CONSTANTS\[name]]
|
|
459
|
-
*/
|
|
460
|
-
GetGlobal = 44,
|
|
461
|
-
/**
|
|
462
|
-
* GET_GLOBAL_DYN %ret %name \
|
|
463
|
-
* %ret = GLOBALS\[%name]
|
|
464
|
-
*/
|
|
465
|
-
GetGlobalDyn = 45,
|
|
466
|
-
/**
|
|
467
|
-
* RECORD %ret\
|
|
468
|
-
* %ret = (
|
|
469
|
-
*/
|
|
470
|
-
Record = 46,
|
|
471
|
-
/**
|
|
472
|
-
* MODULE %ret `name`\
|
|
473
|
-
* %ret = mod CONSTANTS\[name] {
|
|
474
|
-
*/
|
|
475
|
-
Module = 47,
|
|
476
|
-
/**
|
|
477
|
-
* FIELD `name` %field\
|
|
478
|
-
* \[CONSTANTS\[name]]: %field,
|
|
479
|
-
*/
|
|
480
|
-
Field = 48,
|
|
481
|
-
/**
|
|
482
|
-
* FIELD_DYN %name %field\
|
|
483
|
-
* \[%name]: %field,
|
|
484
|
-
*/
|
|
485
|
-
FieldDyn = 49,
|
|
486
|
-
/**
|
|
487
|
-
* FIELD_INDEX `index` %field\
|
|
488
|
-
* \[index]: %field,
|
|
489
|
-
*/
|
|
490
|
-
FieldIndex = 50,
|
|
491
|
-
/**
|
|
492
|
-
* FIELD_OPT `name` %field\
|
|
493
|
-
* \[CONSTANTS\[name]]?: %field,
|
|
494
|
-
*/
|
|
495
|
-
FieldOpt = 51,
|
|
496
|
-
/**
|
|
497
|
-
* FIELD_OPT_DYN %name %field\
|
|
498
|
-
* \[%name]?: %field,
|
|
499
|
-
*/
|
|
500
|
-
FieldOptDyn = 52,
|
|
501
|
-
/**
|
|
502
|
-
* FIELD_OPT_INDEX `index` %field\
|
|
503
|
-
* \[index]?: %field,
|
|
504
|
-
*/
|
|
505
|
-
FieldOptIndex = 53,
|
|
506
|
-
/**
|
|
507
|
-
* PICK %ret %var `n` `key_1` `key_2` ... `key_n`\
|
|
508
|
-
* %ret = %var pick keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
|
|
509
|
-
*/
|
|
510
|
-
Pick = 54,
|
|
511
|
-
/**
|
|
512
|
-
* OMIT %ret %var `n` `key_1` `key_2` ... `key_n`\
|
|
513
|
-
* %ret = %var omit keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
|
|
514
|
-
*/
|
|
515
|
-
Omit = 55,
|
|
516
|
-
/**
|
|
517
|
-
* ARRAY %ret\
|
|
518
|
-
* %ret = \[
|
|
519
|
-
*/
|
|
520
|
-
Array = 56,
|
|
521
|
-
/**
|
|
522
|
-
* ITEM %item\
|
|
523
|
-
* %item,
|
|
524
|
-
*/
|
|
525
|
-
Item = 57,
|
|
526
|
-
/**
|
|
527
|
-
* ITEM_RANGE `start` `end`\
|
|
528
|
-
* `start`..`end`,
|
|
529
|
-
*/
|
|
530
|
-
ItemRange = 58,
|
|
531
|
-
/**
|
|
532
|
-
* ITEM_RANGE_DYN %start %end\
|
|
533
|
-
* %start..%end,
|
|
534
|
-
*/
|
|
535
|
-
ItemRangeDyn = 59,
|
|
536
|
-
/**
|
|
537
|
-
* ITEM_RANGE_EXCLUSIVE_DYN %start %end\
|
|
538
|
-
* %start..<%end,
|
|
539
|
-
*/
|
|
540
|
-
ItemRangeExclusiveDyn = 60,
|
|
541
|
-
/**
|
|
542
|
-
* SPREAD %var\
|
|
543
|
-
* ..%var,
|
|
544
|
-
*/
|
|
545
|
-
Spread = 61,
|
|
546
|
-
/**
|
|
547
|
-
* FREEZE\
|
|
548
|
-
* ) for record or ] for array
|
|
549
|
-
*/
|
|
550
|
-
Freeze = 62,
|
|
551
|
-
/**
|
|
552
|
-
* HAS %ret %var `key`\
|
|
553
|
-
* %ret = initialized(%var\[CONSTANTS\[key]])
|
|
554
|
-
*/
|
|
555
|
-
Has = 63,
|
|
556
|
-
/**
|
|
557
|
-
* HAS_DYN %ret %var %key\
|
|
558
|
-
* %ret = initialized(%var\[%key])
|
|
559
|
-
*/
|
|
560
|
-
HasDyn = 64,
|
|
561
|
-
/**
|
|
562
|
-
* HAS_INDEX %ret %var `index`\
|
|
563
|
-
* %ret = initialized(%var\[index])
|
|
564
|
-
*/
|
|
565
|
-
HasIndex = 65,
|
|
566
|
-
/**
|
|
567
|
-
* GET %ret %var `key`\
|
|
568
|
-
* %ret = %var\[CONSTANTS\[key]] ?? nil
|
|
569
|
-
*/
|
|
570
|
-
Get = 66,
|
|
571
|
-
/**
|
|
572
|
-
* GET_DYN %ret %var %key\
|
|
573
|
-
* %ret = %var\[%key] ?? nil
|
|
574
|
-
*/
|
|
575
|
-
GetDyn = 67,
|
|
576
|
-
/**
|
|
577
|
-
* GET_INDEX %ret %var `index`\
|
|
578
|
-
* %ret = %var\[index] ?? nil
|
|
579
|
-
*/
|
|
580
|
-
GetIndex = 68,
|
|
581
|
-
/**
|
|
582
|
-
* SET %value %var `key`\
|
|
583
|
-
* %var\[CONSTANTS\[key]] = %value
|
|
584
|
-
*/
|
|
585
|
-
Set = 69,
|
|
586
|
-
/**
|
|
587
|
-
* SET_DYN %value %var %key\
|
|
588
|
-
* %var\[%key] = %value
|
|
589
|
-
*/
|
|
590
|
-
SetDyn = 70,
|
|
591
|
-
/**
|
|
592
|
-
* SET_INDEX %value %var `index`\
|
|
593
|
-
* %var\[index] = %value
|
|
594
|
-
*/
|
|
595
|
-
SetIndex = 71,
|
|
596
|
-
/**
|
|
597
|
-
* SLICE %ret %var `start` `end`\
|
|
598
|
-
* %ret = %var\[start..end]
|
|
599
|
-
*/
|
|
600
|
-
Slice = 72,
|
|
601
|
-
/**
|
|
602
|
-
* SLICE_START %ret %var `end`\
|
|
603
|
-
* %ret = %var\[..end]
|
|
604
|
-
*/
|
|
605
|
-
SliceStart = 73,
|
|
606
|
-
/**
|
|
607
|
-
* SLICE_END %ret %var `start`\
|
|
608
|
-
* %ret = %var\[start..]
|
|
609
|
-
*/
|
|
610
|
-
SliceEnd = 74,
|
|
611
|
-
/**
|
|
612
|
-
* SLICE_DYN %ret %var %start %end\
|
|
613
|
-
* %ret = %var\[%start..%end]
|
|
614
|
-
*/
|
|
615
|
-
SliceDyn = 75,
|
|
616
|
-
/**
|
|
617
|
-
* SLICE_EXCLUSIVE_DYN %ret %var %start %end\
|
|
618
|
-
* %ret = %var\[%start..<%end]
|
|
619
|
-
*/
|
|
620
|
-
SliceExclusiveDyn = 76,
|
|
621
|
-
/**
|
|
622
|
-
* LENGTH %ret %var\
|
|
623
|
-
* %ret = $Length(%var)
|
|
624
|
-
*/
|
|
625
|
-
Length = 77,
|
|
626
|
-
/**
|
|
627
|
-
* LOOP `regn`\
|
|
628
|
-
* loop { let %1, .. ,%regn;
|
|
629
|
-
*/
|
|
630
|
-
Loop = 78,
|
|
631
|
-
/**
|
|
632
|
-
* LOOP_FOR `regn` %iterable\
|
|
633
|
-
* for %1 in %iterable { let %2, .. ,%regn;
|
|
634
|
-
*/
|
|
635
|
-
LoopFor = 79,
|
|
636
|
-
/**
|
|
637
|
-
* LOOP_RANGE `regn` %start %end\
|
|
638
|
-
* for %1 in %start..%end { let %2, .. ,%regn;
|
|
639
|
-
*/
|
|
640
|
-
LoopRange = 80,
|
|
641
|
-
/**
|
|
642
|
-
* LOOP_RANGE_EXCLUSIVE `regn` %start %end\
|
|
643
|
-
* for %1 in %start..<%end { let %2, .. ,%regn;
|
|
644
|
-
*/
|
|
645
|
-
LoopRangeExclusive = 81,
|
|
646
|
-
/**
|
|
647
|
-
* LOOP_END\
|
|
648
|
-
* }
|
|
649
|
-
*/
|
|
650
|
-
LoopEnd = 82,
|
|
651
|
-
/**
|
|
652
|
-
* BREAK\
|
|
653
|
-
* break;
|
|
654
|
-
*/
|
|
655
|
-
Break = 83,
|
|
656
|
-
/**
|
|
657
|
-
* CONTINUE\
|
|
658
|
-
* continue;
|
|
659
|
-
*/
|
|
660
|
-
Continue = 84,
|
|
661
|
-
/**
|
|
662
|
-
* IF %cond\
|
|
663
|
-
* if (%cond) {
|
|
664
|
-
*/
|
|
665
|
-
If = 85,
|
|
666
|
-
/**
|
|
667
|
-
* IF_NOT %cond\
|
|
668
|
-
* if (!%cond) {
|
|
669
|
-
*/
|
|
670
|
-
IfNot = 86,
|
|
671
|
-
/**
|
|
672
|
-
* IF_INIT %var\
|
|
673
|
-
* if (initialized(%var)) {
|
|
674
|
-
*/
|
|
675
|
-
IfInit = 87,
|
|
676
|
-
/**
|
|
677
|
-
* IF_NOT_INIT %var\
|
|
678
|
-
* if (!initialized(%var)) {
|
|
679
|
-
*/
|
|
680
|
-
IfNotInit = 88,
|
|
681
|
-
/**
|
|
682
|
-
* IF_NIL %var\
|
|
683
|
-
* if (%var == nil) {
|
|
684
|
-
*/
|
|
685
|
-
IfNil = 89,
|
|
686
|
-
/**
|
|
687
|
-
* IF_NOT_NIL %var\
|
|
688
|
-
* if (%var != nil) {
|
|
689
|
-
*/
|
|
690
|
-
IfNotNil = 90,
|
|
691
|
-
/**
|
|
692
|
-
* ELSE\
|
|
693
|
-
* } else {
|
|
694
|
-
*/
|
|
695
|
-
Else = 91,
|
|
696
|
-
/**
|
|
697
|
-
* EL_IF IF*\
|
|
698
|
-
* } else if *** {\
|
|
699
|
-
* This instruction must be followed by an `IF*` instruction\
|
|
700
|
-
*/
|
|
701
|
-
ElIf = 92,
|
|
702
|
-
/**
|
|
703
|
-
* IF_END\
|
|
704
|
-
* }
|
|
705
|
-
*/
|
|
706
|
-
IfEnd = 93,
|
|
707
|
-
/**
|
|
708
|
-
* FUNC %f `argn` `regn`\
|
|
709
|
-
* %f = (%1, %2, ... , %argn) => { let %argn+1, ... , %regn;
|
|
710
|
-
*/
|
|
711
|
-
Func = 94,
|
|
712
|
-
/**
|
|
713
|
-
* FUNC_VARG %f `argn` `regn`\
|
|
714
|
-
* %f = (%1, %2, ... , %argn-1, ...%argn) => { let %argn+1, ... , %regn;
|
|
715
|
-
*/
|
|
716
|
-
FuncVarg = 95,
|
|
717
|
-
/**
|
|
718
|
-
* FUNC_END\
|
|
719
|
-
* }
|
|
720
|
-
*/
|
|
721
|
-
FuncEnd = 96,
|
|
722
|
-
/**
|
|
723
|
-
* RETURN %value\
|
|
724
|
-
* return %value;
|
|
725
|
-
*/
|
|
726
|
-
Return = 97,
|
|
727
|
-
/**
|
|
728
|
-
* CALL %ret `f` `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
|
|
729
|
-
* %ret = GLOBAL[CONSTANTS[f]](%1, %2, ... , %argn);
|
|
730
|
-
*
|
|
731
|
-
* If spread_arg_a is present, arg at that index will be spread
|
|
732
|
-
*/
|
|
733
|
-
Call = 98,
|
|
734
|
-
/**
|
|
735
|
-
* CALL_DYN %ret %f `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
|
|
736
|
-
* %ret = %f(%1, %2, ... , %argn);
|
|
737
|
-
*
|
|
738
|
-
* If spread_arg_a is present, arg at that index will be spread
|
|
739
|
-
*/
|
|
740
|
-
CallDyn = 99,
|
|
741
|
-
}
|
|
742
|
-
/** Diagnostic messages for MiraScript compiler and tools. */
|
|
743
|
-
export const DIAGNOSTIC_MESSAGES: Readonly<Partial<Record<DiagnosticCode, string>>> = Object.freeze({
|
|
744
|
-
"1001": "发生未知内部错误",
|
|
745
|
-
"1002": "发生未知词法错误",
|
|
746
|
-
"1003": "发生未知解析错误",
|
|
747
|
-
"1004": "发生未知生成错误",
|
|
748
|
-
"1005": "发生未知优化错误",
|
|
749
|
-
"1006": "该功能尚未实现",
|
|
750
|
-
"1007": "遇到未知的记号",
|
|
751
|
-
"1008": "发现意外的记号",
|
|
752
|
-
"1009": "`$0` 是保留关键字,不能用作标识符",
|
|
753
|
-
"1010": "`$0` 是关键字,不能用作标识符",
|
|
754
|
-
"1011": "数字字面量不能以下划线开头或结尾",
|
|
755
|
-
"1012": "无效的数字字面量",
|
|
756
|
-
"1013": "数字字面量过大",
|
|
757
|
-
"1014": "整数字面量过大",
|
|
758
|
-
"1015": "无效的序数字面量;请移除前导零和下划线,或改用 `[$0]`",
|
|
759
|
-
"1016": "字符串字面量未终止",
|
|
760
|
-
"1017": "字符串中的转义序列无效",
|
|
761
|
-
"1018": "十六进制转义序列的值不是有效的 ASCII 字符",
|
|
762
|
-
"1019": "Unicode 转义序列的值不是有效的 Unicode 码点",
|
|
763
|
-
"1020": "在 `..` 之后需要表达式",
|
|
764
|
-
"1021": "插值表达式未终止",
|
|
765
|
-
"1022": "无效的插值表达式",
|
|
766
|
-
"1023": "插值表达式为空",
|
|
767
|
-
"1024": "意外的 `_`;它是用于丢弃值的保留关键字",
|
|
768
|
-
"1025": "意外的 `global`;它是用于全局变量的保留关键字",
|
|
769
|
-
"1026": "列表中缺少 `,`",
|
|
770
|
-
"1027": "缺少 `]` 以关闭中括号",
|
|
771
|
-
"1028": "缺少 `{` 以打开花括号",
|
|
772
|
-
"1029": "缺少 `}` 以关闭花括号",
|
|
773
|
-
"1030": "缺少 `)` 以关闭括号",
|
|
774
|
-
"1031": "语句末尾缺少 `;`",
|
|
775
|
-
"1032": "条件表达式中缺少 `:`",
|
|
776
|
-
"1033": "在 bind 或 const 语句中需要 `=` 运算符",
|
|
777
|
-
"1034": "常量名必须以 `@` 开头",
|
|
778
|
-
"1035": "声明中缺少函数名",
|
|
779
|
-
"1036": "声明中缺少模块名",
|
|
780
|
-
"1037": "扩展调用必须以参数列表结尾;请在此处添加 `(`",
|
|
781
|
-
"1038": "`type` 是类函数关键字;请在此处添加 `(`",
|
|
782
|
-
"1039": "`type` 调用必须恰好有一个参数",
|
|
783
|
-
"1040": "意外的记录字面量;此处需要分组表达式",
|
|
784
|
-
"1041": "语句中缺少 `case`",
|
|
785
|
-
"1042": "遇到未知的表达式",
|
|
786
|
-
"1043": "发现未匹配的 `}`",
|
|
787
|
-
"1044": "发现未匹配的 `]`",
|
|
788
|
-
"1045": "发现未匹配的 `)`",
|
|
789
|
-
"1046": "遇到未知的模式",
|
|
790
|
-
"1047": "此处只允许常量或字面量",
|
|
791
|
-
"1048": "遇到未知的语句",
|
|
792
|
-
"1049": "此处需要表达式",
|
|
793
|
-
"1050": "此处需要模式",
|
|
794
|
-
"1051": "字面量模式中不允许 `!` 运算符",
|
|
795
|
-
"1052": "重绑定时不允许使用 `mut`",
|
|
796
|
-
"1053": "名称以 `@` 开头的变量不允许被重绑定",
|
|
797
|
-
"1054": "弃元模式中不能使用 `mut`",
|
|
798
|
-
"1055": "展开模式中应省略丢弃弃元",
|
|
799
|
-
"1056": "记录模式中不允许展开弃元",
|
|
800
|
-
"1057": "记录模式中的展开模式应为最后一个字段",
|
|
801
|
-
"1058": "记录模式中不允许插值名称",
|
|
802
|
-
"1059": "省略记录字段名时需要绑定模式",
|
|
803
|
-
"1060": "数组模式中的范围模式应加括号",
|
|
804
|
-
"1061": "数组模式中展开模式只能使用一次",
|
|
805
|
-
"1062": "函数声明中剩余参数应为最后一个参数",
|
|
806
|
-
"1063": "不能对未声明的变量赋值",
|
|
807
|
-
"1064": "不能对不可变变量赋值...",
|
|
808
|
-
"1065": "变量无法在此之前访问...",
|
|
809
|
-
"1066": "该变量已...",
|
|
810
|
-
"1067": "在循环之外出现意外的 `break`",
|
|
811
|
-
"1068": "在循环之外出现意外的 `continue`",
|
|
812
|
-
"1069": "`global` 关键字只能用作 `global.<name>`、`global[<name>]` 或 `in` 运算符右侧",
|
|
813
|
-
"1070": "无法从表达式推断键名",
|
|
814
|
-
"1071": "只能对变量或字段访问赋值",
|
|
815
|
-
"1072": "在模块声明之外出现意外的 `pub`",
|
|
816
|
-
"2001": "`$0` 不是空值;显式使用全局变量 `global.$0` 或空值 `nil`",
|
|
817
|
-
"2002": "不可失败匹配中的该模式是多余的;请考虑移除它或改为在 `is` 表达式中使用",
|
|
818
|
-
"2003": "该 `match` 表达式没有分支;它永远不会匹配任何值",
|
|
819
|
-
"2004": "范围中不能使用非数字字面量",
|
|
820
|
-
"2005": "比较表达式中不能使用非数字或字符串字面量",
|
|
821
|
-
"2006": "算术表达式中不能使用非数字字面量",
|
|
822
|
-
"2007": "逻辑表达式中不能使用非布尔字面量",
|
|
823
|
-
"2008": "字面量不能作为函数调用",
|
|
824
|
-
"2009": "字面量不能作为记录或数组访问",
|
|
825
|
-
"2010": "全局变量 `$0` 未声明",
|
|
826
|
-
"4001": "局部变量未使用;请考虑删除它或使用 `_` 忽略",
|
|
827
|
-
"4002": "局部函数未使用;请考虑删除它",
|
|
828
|
-
"4003": "逻辑运算中更推荐使用 `&&` 而非 `and`",
|
|
829
|
-
"4004": "逻辑运算中更推荐使用 `||` 而非 `or`",
|
|
830
|
-
"4005": "逻辑运算中更推荐使用 `!` 而非 `not`",
|
|
831
|
-
"4006": "记录字面量声明中更推荐使用 `()` 而非 `{}`",
|
|
832
|
-
"4007": "更推荐使用 if 表达式而非条件表达式",
|
|
833
|
-
"4008": "考虑移除多余的括号",
|
|
834
|
-
"4009": "常量 $0 建议使用大写",
|
|
835
|
-
"5001": "...在此处声明",
|
|
836
|
-
"5002": "...在此处声明",
|
|
837
|
-
"5003": "...在此处作为参数声明",
|
|
838
|
-
"5004": "...在此处被该函数声明为自动参数 `it`",
|
|
839
|
-
"5005": "...在此处作为剩余参数声明",
|
|
840
|
-
"5006": "...在此处作为参数模式的子模式声明"
|
|
841
|
-
} as const);
|
|
842
|
-
/** MiraScript keywords */
|
|
843
|
-
export const KEYWORDS = Object.freeze(["true","false","nil","nan","inf","_","global","in","is","and","or","not","type","if","else","match","case","for","while","loop","break","continue","return","fn","op","let","const","mut","where","mod","pub","use","effect","try","handle","finally","perform","resume"] as const);
|
|
844
|
-
/** MiraScript constant keywords */
|
|
845
|
-
export const CONSTANT_KEYWORDS = Object.freeze(["true","false","nil","nan","inf"] as const);
|
|
846
|
-
/** MiraScript control flow keywords */
|
|
847
|
-
export const CONTROL_KEYWORDS = Object.freeze(["if","else","match","case","for","while","loop","break","continue","return"] as const);
|
|
848
|
-
/** MiraScript numeric keywords */
|
|
849
|
-
export const NUMERIC_KEYWORDS = Object.freeze(["nan","inf"] as const);
|
|
850
|
-
/** MiraScript reserved keywords */
|
|
851
|
-
export const RESERVED_KEYWORDS = Object.freeze(["op","where","use","effect","try","handle","finally","perform","resume"] as const);
|