meaoiu 0.1.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.
- package/LANGUAGE_GUIDE.md +511 -0
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/api/execution.d.ts +9 -0
- package/dist/api/execution.d.ts.map +1 -0
- package/dist/api/execution.js +17 -0
- package/dist/api/execution.js.map +1 -0
- package/dist/api/serviceState.d.ts +24 -0
- package/dist/api/serviceState.d.ts.map +1 -0
- package/dist/api/serviceState.js +53 -0
- package/dist/api/serviceState.js.map +1 -0
- package/dist/api/services/completions.d.ts +15 -0
- package/dist/api/services/completions.d.ts.map +1 -0
- package/dist/api/services/completions.js +48 -0
- package/dist/api/services/completions.js.map +1 -0
- package/dist/api/services/diagnostics.d.ts +9 -0
- package/dist/api/services/diagnostics.d.ts.map +1 -0
- package/dist/api/services/diagnostics.js +5 -0
- package/dist/api/services/diagnostics.js.map +1 -0
- package/dist/api/services/formatting.d.ts +2 -0
- package/dist/api/services/formatting.d.ts.map +1 -0
- package/dist/api/services/formatting.js +223 -0
- package/dist/api/services/formatting.js.map +1 -0
- package/dist/api/services/highlight.d.ts +14 -0
- package/dist/api/services/highlight.d.ts.map +1 -0
- package/dist/api/services/highlight.js +58 -0
- package/dist/api/services/highlight.js.map +1 -0
- package/dist/api/services/inlayHints.d.ts +22 -0
- package/dist/api/services/inlayHints.d.ts.map +1 -0
- package/dist/api/services/inlayHints.js +100 -0
- package/dist/api/services/inlayHints.js.map +1 -0
- package/dist/api/services/search.d.ts +17 -0
- package/dist/api/services/search.d.ts.map +1 -0
- package/dist/api/services/search.js +35 -0
- package/dist/api/services/search.js.map +1 -0
- package/dist/api/utils/astUtils.d.ts +11 -0
- package/dist/api/utils/astUtils.d.ts.map +1 -0
- package/dist/api/utils/astUtils.js +106 -0
- package/dist/api/utils/astUtils.js.map +1 -0
- package/dist/api/utils/lspUtils.d.ts +16 -0
- package/dist/api/utils/lspUtils.d.ts.map +1 -0
- package/dist/api/utils/lspUtils.js +5 -0
- package/dist/api/utils/lspUtils.js.map +1 -0
- package/dist/api/utils/symbolAnalyzer.d.ts +37 -0
- package/dist/api/utils/symbolAnalyzer.d.ts.map +1 -0
- package/dist/api/utils/symbolAnalyzer.js +440 -0
- package/dist/api/utils/symbolAnalyzer.js.map +1 -0
- package/dist/api/utils/symbolTable.d.ts +28 -0
- package/dist/api/utils/symbolTable.d.ts.map +1 -0
- package/dist/api/utils/symbolTable.js +3 -0
- package/dist/api/utils/symbolTable.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +92 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/tools/completer.d.ts +2 -0
- package/dist/cli/tools/completer.d.ts.map +1 -0
- package/dist/cli/tools/completer.js +24 -0
- package/dist/cli/tools/completer.js.map +1 -0
- package/dist/cli/tools/diagnoser.d.ts +2 -0
- package/dist/cli/tools/diagnoser.d.ts.map +1 -0
- package/dist/cli/tools/diagnoser.js +29 -0
- package/dist/cli/tools/diagnoser.js.map +1 -0
- package/dist/cli/tools/formatter.d.ts +2 -0
- package/dist/cli/tools/formatter.d.ts.map +1 -0
- package/dist/cli/tools/formatter.js +27 -0
- package/dist/cli/tools/formatter.js.map +1 -0
- package/dist/cli/tools/searcher.d.ts +4 -0
- package/dist/cli/tools/searcher.d.ts.map +1 -0
- package/dist/cli/tools/searcher.js +30 -0
- package/dist/cli/tools/searcher.js.map +1 -0
- package/dist/cli/tools/starter.d.ts +3 -0
- package/dist/cli/tools/starter.d.ts.map +1 -0
- package/dist/cli/tools/starter.js +23 -0
- package/dist/cli/tools/starter.js.map +1 -0
- package/dist/cli/tools/toolUtils.d.ts +8 -0
- package/dist/cli/tools/toolUtils.d.ts.map +1 -0
- package/dist/cli/tools/toolUtils.js +52 -0
- package/dist/cli/tools/toolUtils.js.map +1 -0
- package/dist/core/ast.d.ts +140 -0
- package/dist/core/ast.d.ts.map +1 -0
- package/dist/core/ast.js +3 -0
- package/dist/core/ast.js.map +1 -0
- package/dist/core/builtIns.d.ts +15 -0
- package/dist/core/builtIns.d.ts.map +1 -0
- package/dist/core/builtIns.js +175 -0
- package/dist/core/builtIns.js.map +1 -0
- package/dist/core/error.d.ts +41 -0
- package/dist/core/error.d.ts.map +1 -0
- package/dist/core/error.js +63 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/parser.d.ts +89 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +578 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/preprocessor.d.ts +2 -0
- package/dist/core/preprocessor.d.ts.map +1 -0
- package/dist/core/preprocessor.js +187 -0
- package/dist/core/preprocessor.js.map +1 -0
- package/dist/core/run/environment.d.ts +43 -0
- package/dist/core/run/environment.d.ts.map +1 -0
- package/dist/core/run/environment.js +192 -0
- package/dist/core/run/environment.js.map +1 -0
- package/dist/core/run/interpreter.d.ts +13 -0
- package/dist/core/run/interpreter.d.ts.map +1 -0
- package/dist/core/run/interpreter.js +415 -0
- package/dist/core/run/interpreter.js.map +1 -0
- package/dist/core/run/io.d.ts +18 -0
- package/dist/core/run/io.d.ts.map +1 -0
- package/dist/core/run/io.js +34 -0
- package/dist/core/run/io.js.map +1 -0
- package/dist/core/run/logger.d.ts +12 -0
- package/dist/core/run/logger.d.ts.map +1 -0
- package/dist/core/run/logger.js +17 -0
- package/dist/core/run/logger.js.map +1 -0
- package/dist/core/run/value.d.ts +41 -0
- package/dist/core/run/value.d.ts.map +1 -0
- package/dist/core/run/value.js +37 -0
- package/dist/core/run/value.js.map +1 -0
- package/dist/core/tokenizer.d.ts +82 -0
- package/dist/core/tokenizer.d.ts.map +1 -0
- package/dist/core/tokenizer.js +277 -0
- package/dist/core/tokenizer.js.map +1 -0
- package/dist/core/typedef.d.ts +32 -0
- package/dist/core/typedef.d.ts.map +1 -0
- package/dist/core/typedef.js +67 -0
- package/dist/core/typedef.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// src/core/builtIns.ts
|
|
2
|
+
import { getMeaoiuType, typeNames } from './typedef.js';
|
|
3
|
+
export const MeaoiuBuiltInNames = [
|
|
4
|
+
'喵',
|
|
5
|
+
'祈求',
|
|
6
|
+
'呼噜',
|
|
7
|
+
'磨爪',
|
|
8
|
+
'变摸数',
|
|
9
|
+
'喵译',
|
|
10
|
+
'嗅嗅',
|
|
11
|
+
'才怪',
|
|
12
|
+
'理直气壮',
|
|
13
|
+
'差不多',
|
|
14
|
+
'抢大的',
|
|
15
|
+
'吃剩的',
|
|
16
|
+
'摸余',
|
|
17
|
+
'找尾巴',
|
|
18
|
+
'喵语连珠',
|
|
19
|
+
'打盹',
|
|
20
|
+
'添乱',
|
|
21
|
+
'猫咪艺术',
|
|
22
|
+
'哈气',
|
|
23
|
+
];
|
|
24
|
+
const BuiltInFunctionNameSet = new Set(MeaoiuBuiltInNames);
|
|
25
|
+
export function isBuiltInFunctionName(name) {
|
|
26
|
+
return BuiltInFunctionNameSet.has(name);
|
|
27
|
+
}
|
|
28
|
+
export const createBuiltInFunctions = (io) => ({
|
|
29
|
+
// I/O
|
|
30
|
+
喵: {
|
|
31
|
+
paramLimit: 0,
|
|
32
|
+
paramTypes: [],
|
|
33
|
+
function: args => (io.print(args), null),
|
|
34
|
+
},
|
|
35
|
+
祈求: {
|
|
36
|
+
paramLimit: 0,
|
|
37
|
+
paramTypes: [[1 /* MeaoiuType.STRING */]],
|
|
38
|
+
function: async ([question]) => io.prompt(question ?? '> '),
|
|
39
|
+
},
|
|
40
|
+
// Type Conversion
|
|
41
|
+
变摸数: {
|
|
42
|
+
paramLimit: 1,
|
|
43
|
+
paramTypes: [[1 /* MeaoiuType.STRING */]],
|
|
44
|
+
function: ([string]) => {
|
|
45
|
+
const num = Number.parseFloat(string);
|
|
46
|
+
return Number.isNaN(num) ? null : num;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
喵译: {
|
|
50
|
+
paramLimit: 1,
|
|
51
|
+
paramTypes: [],
|
|
52
|
+
function: ([value]) => String(value),
|
|
53
|
+
},
|
|
54
|
+
嗅嗅: {
|
|
55
|
+
paramLimit: 1,
|
|
56
|
+
paramTypes: [],
|
|
57
|
+
function: ([value]) => typeNames[getMeaoiuType(value)],
|
|
58
|
+
},
|
|
59
|
+
// Logic
|
|
60
|
+
才怪: {
|
|
61
|
+
paramLimit: 1,
|
|
62
|
+
paramTypes: [],
|
|
63
|
+
function: ([value]) => !value, // not
|
|
64
|
+
},
|
|
65
|
+
// Math
|
|
66
|
+
理直气壮: {
|
|
67
|
+
paramLimit: 1,
|
|
68
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */]],
|
|
69
|
+
function: ([x]) => Math.abs(x),
|
|
70
|
+
},
|
|
71
|
+
差不多: {
|
|
72
|
+
paramLimit: 1,
|
|
73
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */]],
|
|
74
|
+
function: ([x]) => Math.round(x),
|
|
75
|
+
},
|
|
76
|
+
抢大的: {
|
|
77
|
+
paramLimit: 1,
|
|
78
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */] /* 末尾组将用于验证后续所有参数 */],
|
|
79
|
+
function: values => Math.max(...values),
|
|
80
|
+
},
|
|
81
|
+
吃剩的: {
|
|
82
|
+
paramLimit: 1,
|
|
83
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */]],
|
|
84
|
+
function: values => Math.min(...values),
|
|
85
|
+
},
|
|
86
|
+
摸余: {
|
|
87
|
+
paramLimit: 2,
|
|
88
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */], [0 /* MeaoiuType.NUMBER */]],
|
|
89
|
+
function: ([x, y]) => {
|
|
90
|
+
// 震惊!「%」不是「modulo」,再叫「取模」打死!「moduli」是「modulus」的复数形式!
|
|
91
|
+
const remainder = x % y;
|
|
92
|
+
return Number.isNaN(remainder) ? null : remainder;
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
添乱: {
|
|
96
|
+
paramLimit: 0,
|
|
97
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */], [0 /* MeaoiuType.NUMBER */]],
|
|
98
|
+
function: ([min = 0, max = Number.MAX_SAFE_INTEGER]) => {
|
|
99
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
// Collection & String
|
|
103
|
+
找尾巴: {
|
|
104
|
+
paramLimit: 1,
|
|
105
|
+
paramTypes: [[5 /* MeaoiuType.COLLECTION */, 1 /* MeaoiuType.STRING */], [] /* 空组令多传的参数不被检查 */],
|
|
106
|
+
function: ([target]) => target.length,
|
|
107
|
+
},
|
|
108
|
+
// String
|
|
109
|
+
喵语连珠: {
|
|
110
|
+
paramLimit: 0,
|
|
111
|
+
paramTypes: [[1 /* MeaoiuType.STRING */]],
|
|
112
|
+
function: strings => strings.join(''),
|
|
113
|
+
},
|
|
114
|
+
// Thematic & Time
|
|
115
|
+
打盹: {
|
|
116
|
+
paramLimit: 0,
|
|
117
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */]],
|
|
118
|
+
function: async ([second = 1]) => {
|
|
119
|
+
const ms = second * 1000;
|
|
120
|
+
await new Promise(resolve => setTimeout(resolve, ms));
|
|
121
|
+
return null;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
磨爪: {
|
|
125
|
+
paramLimit: 0,
|
|
126
|
+
paramTypes: [],
|
|
127
|
+
function: () => (io.print([' /\\_/\\ \n( >.< )\n-=(|)=- --< scratching sounds >--']), null),
|
|
128
|
+
},
|
|
129
|
+
呼噜: {
|
|
130
|
+
paramLimit: 0,
|
|
131
|
+
paramTypes: [[0 /* MeaoiuType.NUMBER */]],
|
|
132
|
+
function: ([times = Math.ceil(Math.random() * 3)]) => {
|
|
133
|
+
for (let i = 0; i < times; i++)
|
|
134
|
+
io.print(['咕噜...咕噜...']);
|
|
135
|
+
return null;
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
猫咪艺术: {
|
|
139
|
+
paramLimit: 0,
|
|
140
|
+
paramTypes: [],
|
|
141
|
+
function: ([style = '开心']) => {
|
|
142
|
+
io.print(style === '开心' ? [' /\\_/\\ \n( ^.^ )\n > ^ < '] : [' /\\_/\\ \n( o.o )\n > ^ < ']);
|
|
143
|
+
return null;
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
哈气: {
|
|
147
|
+
paramLimit: 0,
|
|
148
|
+
paramTypes: [[1 /* MeaoiuType.STRING */, 3 /* MeaoiuType.NULL */]],
|
|
149
|
+
function: ([message]) => {
|
|
150
|
+
throw new Error(message);
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
export function checkArgsForBuiltIn(builtIn, args) {
|
|
155
|
+
const { paramLimit, paramTypes } = builtIn;
|
|
156
|
+
if (args.length < paramLimit)
|
|
157
|
+
return `要 ${paramLimit} 个贡品,只给 ${args.length} 个不够喵!`;
|
|
158
|
+
const MAX_INDEX_T = paramTypes.length - 1;
|
|
159
|
+
if (MAX_INDEX_T < 0)
|
|
160
|
+
return undefined;
|
|
161
|
+
check: for (let i = 0; i < args.length; i++) {
|
|
162
|
+
const paramType = paramTypes[i > MAX_INDEX_T ? MAX_INDEX_T : i];
|
|
163
|
+
if (paramType.length < 1)
|
|
164
|
+
continue;
|
|
165
|
+
const argType = getMeaoiuType(args[i]);
|
|
166
|
+
for (const type of paramType)
|
|
167
|
+
if (type === argType)
|
|
168
|
+
continue check;
|
|
169
|
+
return `第 ${i + 1} 个贡品是「${typeNames[argType]}」,但想要的是「${paramType
|
|
170
|
+
.map(type => typeNames[type])
|
|
171
|
+
.join('」或「')}」喵!`;
|
|
172
|
+
}
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=builtIns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtIns.js","sourceRoot":"","sources":["../../src/core/builtIns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type * as AST from './ast.js';
|
|
2
|
+
import type { Token } from './tokenizer.js';
|
|
3
|
+
export declare const enum Phase {
|
|
4
|
+
UNKNOWN = 0,
|
|
5
|
+
INVARIANT = 1,
|
|
6
|
+
LEXICAL = 2,
|
|
7
|
+
SYNTACTIC = 3,
|
|
8
|
+
SEMANTIC = 4,
|
|
9
|
+
RUNTIME = 5
|
|
10
|
+
}
|
|
11
|
+
type StartPosition = {
|
|
12
|
+
line: number;
|
|
13
|
+
col: number;
|
|
14
|
+
};
|
|
15
|
+
type EndPosition = {
|
|
16
|
+
endLine: number;
|
|
17
|
+
endCol: number;
|
|
18
|
+
} | {
|
|
19
|
+
endLine?: never;
|
|
20
|
+
endCol?: never;
|
|
21
|
+
};
|
|
22
|
+
type ErrorParams = {
|
|
23
|
+
message: string;
|
|
24
|
+
phase: Phase;
|
|
25
|
+
} & StartPosition & EndPosition;
|
|
26
|
+
export declare class MeaoiuError {
|
|
27
|
+
readonly message: string;
|
|
28
|
+
readonly phase: Phase;
|
|
29
|
+
readonly line: number;
|
|
30
|
+
readonly col: number;
|
|
31
|
+
readonly endLine: number;
|
|
32
|
+
readonly endCol: number;
|
|
33
|
+
constructor(params: ErrorParams);
|
|
34
|
+
/** 错误消息,包含错误种类 */
|
|
35
|
+
get messageWithPhase(): string;
|
|
36
|
+
toString(): string;
|
|
37
|
+
}
|
|
38
|
+
export declare function errorFrom(ele: AST.Node | Token, message: string, phase: Phase): MeaoiuError;
|
|
39
|
+
export declare function parseError(message: string, phase?: Phase): MeaoiuError;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/core/error.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,0BAAkB,KAAK;IACtB,OAAO,IAAI;IACX,SAAS,IAAA;IACT,OAAO,IAAA;IACP,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,OAAO,IAAA;CACP;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACnD,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC7F,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnF,qBAAa,WAAW;IACvB,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,KAAK,EAAE,KAAK,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE,WAAW;IAU/B,kBAAkB;IAClB,IAAW,gBAAgB,IAAI,MAAM,CAUpC;IAEM,QAAQ,IAAI,MAAM;CAGzB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAM3F;AAQD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,KAAqB,GAAG,WAAW,CAerF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// src/core/error.ts
|
|
2
|
+
export class MeaoiuError {
|
|
3
|
+
message;
|
|
4
|
+
phase;
|
|
5
|
+
line;
|
|
6
|
+
col;
|
|
7
|
+
endLine;
|
|
8
|
+
endCol;
|
|
9
|
+
constructor(params) {
|
|
10
|
+
const { message, phase, line, col, endLine = line, endCol = col } = params;
|
|
11
|
+
this.message = message;
|
|
12
|
+
this.phase = phase;
|
|
13
|
+
this.line = line;
|
|
14
|
+
this.col = col;
|
|
15
|
+
this.endLine = endLine;
|
|
16
|
+
this.endCol = endCol;
|
|
17
|
+
}
|
|
18
|
+
/** 错误消息,包含错误种类 */
|
|
19
|
+
get messageWithPhase() {
|
|
20
|
+
const phaseString = {
|
|
21
|
+
[0 /* Phase.UNKNOWN */]: '???',
|
|
22
|
+
[1 /* Phase.INVARIANT */]: '世界崩坏',
|
|
23
|
+
[2 /* Phase.LEXICAL */]: '词法错误',
|
|
24
|
+
[3 /* Phase.SYNTACTIC */]: '句法错误',
|
|
25
|
+
[4 /* Phase.SEMANTIC */]: '语义错误',
|
|
26
|
+
[5 /* Phase.RUNTIME */]: '运行错误',
|
|
27
|
+
}[this.phase];
|
|
28
|
+
return `${phaseString}喵:${this.message}`;
|
|
29
|
+
}
|
|
30
|
+
toString() {
|
|
31
|
+
return `[${this.line}:${this.col}] ${this.message}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function errorFrom(ele, message, phase) {
|
|
35
|
+
return new MeaoiuError({
|
|
36
|
+
message,
|
|
37
|
+
phase,
|
|
38
|
+
...('endLine' in ele ? ele : { ...ele, endLine: ele.line, endCol: ele.col + (ele.value.length || 1) }),
|
|
39
|
+
}); // 若来 ErrorNode,自然以 ErrorNode 的 message 覆盖;若是 Token,尾端位置为 Token 末尾
|
|
40
|
+
}
|
|
41
|
+
const parseIntOrNull = (input) => {
|
|
42
|
+
if (input == null)
|
|
43
|
+
return null; // undefined 或 null -> 空
|
|
44
|
+
const n = Number.parseInt(input, 10);
|
|
45
|
+
return Number.isNaN(n) ? null : n;
|
|
46
|
+
};
|
|
47
|
+
export function parseError(message, phase = 0 /* Phase.UNKNOWN */) {
|
|
48
|
+
const errorParams = {
|
|
49
|
+
message,
|
|
50
|
+
phase,
|
|
51
|
+
line: -1,
|
|
52
|
+
col: -1,
|
|
53
|
+
};
|
|
54
|
+
const match = message.match(/\[(\d+):(\d+)\]/);
|
|
55
|
+
if (match) {
|
|
56
|
+
const [rawPos, rawLine, rawCol] = match;
|
|
57
|
+
errorParams.message = message.replace(rawPos, '').trim(); // 移除匹配到的位置信息部分
|
|
58
|
+
errorParams.line = parseIntOrNull(rawLine) ?? errorParams.line;
|
|
59
|
+
errorParams.col = parseIntOrNull(rawCol) ?? errorParams.col;
|
|
60
|
+
}
|
|
61
|
+
return new MeaoiuError(errorParams);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/core/error.ts"],"names":[],"mappings":"AAAA,oBAAoB;AAkBpB,MAAM,OAAO,WAAW;IACP,OAAO,CAAS;IAChB,KAAK,CAAQ;IACb,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,OAAO,CAAS;IAChB,MAAM,CAAS;IAE/B,YAAY,MAAmB;QAC9B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;QAC3E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,kBAAkB;IAClB,IAAW,gBAAgB;QAC1B,MAAM,WAAW,GAAG;YACnB,uBAAe,EAAE,KAAK;YACtB,yBAAiB,EAAE,MAAM;YACzB,uBAAe,EAAE,MAAM;YACvB,yBAAiB,EAAE,MAAM;YACzB,wBAAgB,EAAE,MAAM;YACxB,uBAAe,EAAE,MAAM;SACvB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;CACD;AAED,MAAM,UAAU,SAAS,CAAC,GAAqB,EAAE,OAAe,EAAE,KAAY;IAC7E,OAAO,IAAI,WAAW,CAAC;QACtB,OAAO;QACP,KAAK;QACL,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;KACtG,CAAC,CAAC,CAAC,kEAAkE;AACvE,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,KAAyB,EAAiB,EAAE;IACnE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACxD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,6BAA4B;IACvE,MAAM,WAAW,GAAG;QACnB,OAAO;QACP,KAAK;QACL,IAAI,EAAE,CAAC,CAAC;QACR,GAAG,EAAE,CAAC,CAAC;KACP,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACxC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe;QACzE,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC;QAC/D,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type * as AST from './ast.js';
|
|
2
|
+
import { MeaoiuError } from './error.js';
|
|
3
|
+
import { type Token } from './tokenizer.js';
|
|
4
|
+
export declare const enum ParseMode {
|
|
5
|
+
STRICT = 0,
|
|
6
|
+
TOLERANT = 1
|
|
7
|
+
}
|
|
8
|
+
export type ParseResult = {
|
|
9
|
+
program: AST.Program;
|
|
10
|
+
errors: MeaoiuError[];
|
|
11
|
+
};
|
|
12
|
+
export declare class Parser {
|
|
13
|
+
private readonly tokens;
|
|
14
|
+
private readonly MODE;
|
|
15
|
+
private readonly MAX_POS;
|
|
16
|
+
private readonly blockDepth;
|
|
17
|
+
private readonly errors;
|
|
18
|
+
private position;
|
|
19
|
+
private commentBuffer;
|
|
20
|
+
constructor(tokens: Token[], mode?: ParseMode);
|
|
21
|
+
private current;
|
|
22
|
+
private peek;
|
|
23
|
+
/**
|
|
24
|
+
* 返回当前位置的「非悄悄话 token」,并将位置推进到下一个 token(非悄悄话或 EOF),
|
|
25
|
+
* 同时把遇到的悄悄话收集到 commentBuffer
|
|
26
|
+
* @returns 当前位置的 token(非 COMMENT)
|
|
27
|
+
*/
|
|
28
|
+
private advance;
|
|
29
|
+
/**
|
|
30
|
+
* 推进位置(同时掠取悄悄话)并取得下一 token
|
|
31
|
+
* @returns 悄悄话之后一个 token 的再下一 token
|
|
32
|
+
*/
|
|
33
|
+
private next;
|
|
34
|
+
/**
|
|
35
|
+
* 返回上一个非悄悄话 token(不动位置)
|
|
36
|
+
* @returns 上一个非悄悄话 token
|
|
37
|
+
*/
|
|
38
|
+
private lookBack;
|
|
39
|
+
/**
|
|
40
|
+
* 取得当前非悄悄话 token,若当前为悄悄话则连续推进至目标(同时收集悄悄话到 commentBuffer)
|
|
41
|
+
* @returns 当前 token 或其后第一个非悄悄话 token(或 EOF)
|
|
42
|
+
*/
|
|
43
|
+
private drainCommentsAhead;
|
|
44
|
+
/**
|
|
45
|
+
* 从缓存中拿走所有待分配的 leading 悄悄话(并清空缓存)
|
|
46
|
+
* @returns 所有待分配的悄悄话
|
|
47
|
+
*/
|
|
48
|
+
private takeLeadingComments;
|
|
49
|
+
/**
|
|
50
|
+
* 把缓存里的悄悄话按是否与 anchorToken 同一行分离:
|
|
51
|
+
* - 同行的视为 trailing(尾随悄悄话),附给 node
|
|
52
|
+
* - 不同的保留为未来节点的 leading(放回 commentBuffer)
|
|
53
|
+
*/
|
|
54
|
+
private collectTrailingComments;
|
|
55
|
+
private endLoc;
|
|
56
|
+
private reportError;
|
|
57
|
+
/**
|
|
58
|
+
* 虚构尾随词元并报告错误。
|
|
59
|
+
* @param kind 虚构词元种类,若无预期则可传 TokenKind.ERROR
|
|
60
|
+
* @returns 虚构 token
|
|
61
|
+
*/
|
|
62
|
+
private makeErrorTail;
|
|
63
|
+
private expect;
|
|
64
|
+
private synchronize;
|
|
65
|
+
private consumeToRecoveryPoint;
|
|
66
|
+
parse(): ParseResult;
|
|
67
|
+
private parseStatement;
|
|
68
|
+
private parseVariableDeclaration;
|
|
69
|
+
private parseAssignmentStatement;
|
|
70
|
+
private parseFunctionDeclaration;
|
|
71
|
+
private parseReturnOrAmbushStatement;
|
|
72
|
+
private parseIdentifier;
|
|
73
|
+
private parseExpression;
|
|
74
|
+
private parseLogicalExpression;
|
|
75
|
+
private parseSequenceExpression;
|
|
76
|
+
private parseComparisonExpression;
|
|
77
|
+
private parseAdditiveExpression;
|
|
78
|
+
private parseMultiplicativeExpression;
|
|
79
|
+
private parseUnaryExpression;
|
|
80
|
+
private parseMemberAccessExpression;
|
|
81
|
+
private parsePrimaryExpression;
|
|
82
|
+
private parseBlockOrIfExpression;
|
|
83
|
+
private parseBlockExpression;
|
|
84
|
+
private parseCollectionElement;
|
|
85
|
+
private parseIfExpression;
|
|
86
|
+
private parseLoopExpression;
|
|
87
|
+
private parseCallExpression;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAgC,KAAK,KAAK,EAAa,MAAM,gBAAgB,CAAC;AAErF,0BAAkB,SAAS;IAC1B,MAAM,IAAA;IACN,QAAQ,IAAA;CACR;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC;AAkEF,qBAAa,MAAM;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAK;IAGrB,OAAO,CAAC,aAAa,CAAe;gBAExB,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,GAAE,SAA4B;IAW/D,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,IAAI;IAIZ;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAMf;;;OAGG;IACH,OAAO,CAAC,IAAI;IAKZ;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAOhB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,sBAAsB;IAQvB,KAAK,IAAI,WAAW;IAwB3B,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,sBAAsB;IAgD9B,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,6BAA6B;IAgBrC,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,mBAAmB;CAM3B"}
|