meaoiu 0.1.6 → 0.1.8
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/README.md +11 -7
- package/dist/api/execution.d.ts +2 -2
- package/dist/api/execution.d.ts.map +1 -1
- package/dist/api/execution.js +6 -6
- package/dist/api/execution.js.map +1 -1
- package/dist/api/serviceState.d.ts +3 -3
- package/dist/api/serviceState.d.ts.map +1 -1
- package/dist/api/serviceState.js +2 -2
- package/dist/api/serviceState.js.map +1 -1
- package/dist/api/services/completions.d.ts.map +1 -1
- package/dist/api/services/completions.js.map +1 -1
- package/dist/api/services/formatting.js +2 -2
- package/dist/api/services/formatting.js.map +1 -1
- package/dist/api/services/search.d.ts +2 -2
- package/dist/api/services/search.d.ts.map +1 -1
- package/dist/api/utils/astUtils.d.ts +1 -1
- package/dist/api/utils/astUtils.d.ts.map +1 -1
- package/dist/api/utils/astUtils.js.map +1 -1
- package/dist/api/utils/symbolAnalyzer.d.ts.map +1 -1
- package/dist/api/utils/symbolAnalyzer.js +7 -16
- package/dist/api/utils/symbolAnalyzer.js.map +1 -1
- package/dist/api/utils/symbolTable.d.ts +2 -2
- package/dist/api/utils/symbolTable.d.ts.map +1 -1
- package/dist/cli/main.js +21 -25
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tools/toolUtils.d.ts.map +1 -1
- package/dist/cli/tools/toolUtils.js +4 -6
- package/dist/cli/tools/toolUtils.js.map +1 -1
- package/dist/core/ast.d.ts +4 -4
- package/dist/core/ast.d.ts.map +1 -1
- package/dist/core/builtIns.d.ts +2 -2
- package/dist/core/builtIns.d.ts.map +1 -1
- package/dist/core/builtIns.js +2 -2
- package/dist/core/builtIns.js.map +1 -1
- package/dist/core/engine/environment.d.ts +39 -0
- package/dist/core/engine/environment.d.ts.map +1 -0
- package/dist/core/engine/environment.js +168 -0
- package/dist/core/engine/environment.js.map +1 -0
- package/dist/core/{run/interpreter.d.ts → engine/evaluater.d.ts} +1 -1
- package/dist/core/engine/evaluater.d.ts.map +1 -0
- package/dist/core/{run/interpreter.js → engine/evaluater.js} +5 -6
- package/dist/core/engine/evaluater.js.map +1 -0
- package/dist/core/engine/io.d.ts.map +1 -0
- package/dist/core/{run → engine}/io.js +1 -1
- package/dist/core/engine/io.js.map +1 -0
- package/dist/core/engine/logger.d.ts.map +1 -0
- package/dist/core/{run → engine}/logger.js +1 -1
- package/dist/core/engine/logger.js.map +1 -0
- package/dist/core/{run → engine}/value.d.ts +3 -1
- package/dist/core/engine/value.d.ts.map +1 -0
- package/dist/core/{run → engine}/value.js +4 -1
- package/dist/core/engine/value.js.map +1 -0
- package/dist/core/parser/abstractor.d.ts +9 -0
- package/dist/core/parser/abstractor.d.ts.map +1 -0
- package/dist/core/parser/abstractor.js +428 -0
- package/dist/core/parser/abstractor.js.map +1 -0
- package/dist/core/parser/context.d.ts +55 -0
- package/dist/core/parser/context.d.ts.map +1 -0
- package/dist/core/parser/context.js +145 -0
- package/dist/core/parser/context.js.map +1 -0
- package/dist/core/typedef.d.ts +8 -4
- package/dist/core/typedef.d.ts.map +1 -1
- package/dist/core/typedef.js +1 -1
- package/dist/core/typedef.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/core/parser.d.ts +0 -13
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/parser.js +0 -575
- package/dist/core/parser.js.map +0 -1
- package/dist/core/run/environment.d.ts +0 -48
- package/dist/core/run/environment.d.ts.map +0 -1
- package/dist/core/run/environment.js +0 -191
- package/dist/core/run/environment.js.map +0 -1
- package/dist/core/run/interpreter.d.ts.map +0 -1
- package/dist/core/run/interpreter.js.map +0 -1
- package/dist/core/run/io.d.ts.map +0 -1
- package/dist/core/run/io.js.map +0 -1
- package/dist/core/run/logger.d.ts.map +0 -1
- package/dist/core/run/logger.js.map +0 -1
- package/dist/core/run/value.d.ts.map +0 -1
- package/dist/core/run/value.js.map +0 -1
- /package/dist/core/{run → engine}/io.d.ts +0 -0
- /package/dist/core/{run → engine}/logger.d.ts +0 -0
package/dist/core/ast.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ type AssignmentOperator = TokenKind.ASSIGNMENT_IS | UnaryOperator;
|
|
|
49
49
|
type LogicalOperator = TokenKind.LOGIC_CLOSE_AND | TokenKind.LOGIC_CLOSE_OR | TokenKind.LOGIC_CLOSE_NAND | TokenKind.LOGIC_CLOSE_NOR;
|
|
50
50
|
export interface VariableDeclaration extends AstNode<NodeKind.VariableDeclaration> {
|
|
51
51
|
identifier: Identifier;
|
|
52
|
-
initialization: AssignmentStatement
|
|
52
|
+
initialization: Maybe<AssignmentStatement>;
|
|
53
53
|
}
|
|
54
54
|
export interface AssignmentStatement extends AstNode<NodeKind.AssignmentStatement> {
|
|
55
55
|
assignee: Expression;
|
|
@@ -62,10 +62,10 @@ export interface FunctionDeclaration extends AstNode<NodeKind.FunctionDeclaratio
|
|
|
62
62
|
body: BlockExpression;
|
|
63
63
|
}
|
|
64
64
|
export interface ReturnStatement extends AstNode<NodeKind.ReturnStatement> {
|
|
65
|
-
argument: Expression
|
|
65
|
+
argument: Maybe<Expression>;
|
|
66
66
|
}
|
|
67
67
|
export interface AmbushStatement extends AstNode<NodeKind.AmbushStatement> {
|
|
68
|
-
argument: Expression
|
|
68
|
+
argument: Maybe<Expression>;
|
|
69
69
|
}
|
|
70
70
|
export interface BreakStatement extends AstNode<NodeKind.BreakStatement> {
|
|
71
71
|
}
|
|
@@ -94,7 +94,7 @@ export interface BlockExpression extends AstNode<NodeKind.BlockExpression> {
|
|
|
94
94
|
export interface IfExpression extends AstNode<NodeKind.IfExpression> {
|
|
95
95
|
condition: Expression;
|
|
96
96
|
consequent: BlockExpression;
|
|
97
|
-
alternate: BlockExpression | IfExpression
|
|
97
|
+
alternate: Maybe<BlockExpression | IfExpression>;
|
|
98
98
|
}
|
|
99
99
|
export interface LoopExpression extends AstNode<NodeKind.LoopExpression> {
|
|
100
100
|
body: BlockExpression;
|
package/dist/core/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/core/ast.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEtH,0BAAkB,QAAQ;IAEzB,SAAS,IAAA;IACT,OAAO,IAAA;IAGP,mBAAmB,IAAA;IACnB,mBAAmB,IAAA;IACnB,mBAAmB,IAAA;IACnB,eAAe,IAAA;IACf,eAAe,IAAA;IACf,cAAc,IAAA;IACd,mBAAmB,IAAA;IAGnB,cAAc,IAAA;IACd,aAAa,KAAA;IACb,cAAc,KAAA;IACd,WAAW,KAAA;IACX,UAAU,KAAA;IACV,eAAe,KAAA;IACf,YAAY,KAAA;IACZ,cAAc,KAAA;IACd,cAAc,KAAA;IACd,sBAAsB,KAAA;IACtB,eAAe,KAAA;IACf,oBAAoB,KAAA;IACpB,oBAAoB,KAAA;IACpB,kBAAkB,KAAA;IAClB,iBAAiB,KAAA;CACjB;AAED,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/core/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/core/builtIns.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type MeaoiuRuntimeIO } from './
|
|
1
|
+
import { type MeaoiuRuntimeIO } from './engine/io.js';
|
|
2
2
|
import { MeaoiuType, type MeaoiuValue } from './typedef.js';
|
|
3
3
|
export declare const meaoiuBuiltInNames: readonly ['喵', '祈求', '呼噜', '磨爪', '变摸数', '喵译', '嗅嗅', '才怪', '理直气壮', '差不多', '抢大的', '吃剩的', '摸余', '找尾巴', '喵语连珠', '咬文嚼字', '打盹', '添乱', '猫咪艺术', '哈气'];
|
|
4
4
|
type BuiltInName = (typeof meaoiuBuiltInNames)[number];
|
|
@@ -11,6 +11,6 @@ export type MeaoiuBuiltIns = Record<BuiltInName, {
|
|
|
11
11
|
export declare const builtInNameSet: ReadonlySet<BuiltInName>;
|
|
12
12
|
export declare const isBuiltInFunctionName: (name: string) => name is BuiltInName;
|
|
13
13
|
export declare const createBuiltInFunctions: (io: MeaoiuRuntimeIO) => MeaoiuBuiltIns;
|
|
14
|
-
export declare function checkArgsForBuiltIn(builtIn: MeaoiuBuiltIns[BuiltInName], args: MeaoiuValue[]): string
|
|
14
|
+
export declare function checkArgsForBuiltIn(builtIn: MeaoiuBuiltIns[BuiltInName], args: MeaoiuValue[]): Maybe<string>;
|
|
15
15
|
export {};
|
|
16
16
|
//# sourceMappingURL=builtIns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtIns.d.ts","sourceRoot":"","sources":["../../src/core/builtIns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"builtIns.d.ts","sourceRoot":"","sources":["../../src/core/builtIns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAiB,UAAU,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtF,eAAO,MAAM,kBAAkB,YAC9B,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,CACK,CAAC;AACX,KAAK,WAAW,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEnF,MAAM,MAAM,cAAc,GAAG,MAAM,CAClC,WAAW,EACX;IACC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;CAC1B,CACD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,WAAW,CAA+B,CAAC;AACpF,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,IAAI,IAAI,WAAwD,CAAC;AAEtH,eAAO,MAAM,sBAAsB,OAAQ,eAAe,KAAG,cAgJ3D,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAkB5G"}
|
package/dist/core/builtIns.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/core/builtIns.ts
|
|
2
|
-
import { Environment } from './
|
|
3
|
-
import { toMeaoiuString } from './
|
|
2
|
+
import { Environment } from './engine/environment.js';
|
|
3
|
+
import { toMeaoiuString } from './engine/io.js';
|
|
4
4
|
import { getMeaoiuType, typeNames } from './typedef.js';
|
|
5
5
|
export const meaoiuBuiltInNames = [
|
|
6
6
|
'喵',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtIns.js","sourceRoot":"","sources":["../../src/core/builtIns.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"builtIns.js","sourceRoot":"","sources":["../../src/core/builtIns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type * as AST from '../ast.js';
|
|
2
|
+
import { type MeaoiuValue } from '../typedef.js';
|
|
3
|
+
import { type Evaluated, type ReferenceLink, type VarKey } from './value.js';
|
|
4
|
+
export declare class Environment {
|
|
5
|
+
readonly id: number;
|
|
6
|
+
private static idCounter;
|
|
7
|
+
private parent;
|
|
8
|
+
private readonly variables;
|
|
9
|
+
private readonly functions;
|
|
10
|
+
readonly orderedVariableKeys: VarKey[];
|
|
11
|
+
constructor(parent?: Environment);
|
|
12
|
+
static markReferenceMoved({ scope, key }: ReferenceLink): void;
|
|
13
|
+
static resolveValue(this: void, value: Evaluated): MeaoiuValue;
|
|
14
|
+
/** 剥离层级关系,避免从纸箱往外摸 */
|
|
15
|
+
isolate(): this;
|
|
16
|
+
/** 清空作用域 */
|
|
17
|
+
clear(): void;
|
|
18
|
+
hasVariable(key: VarKey): boolean;
|
|
19
|
+
/** 检查当前环境是否在边界内 */
|
|
20
|
+
isInsideOf(boundary: Maybe<Environment>): boolean;
|
|
21
|
+
declareFunction(name: string, func: AST.FunctionDeclaration): void;
|
|
22
|
+
findFunction(name: string): Maybe<AST.FunctionDeclaration>;
|
|
23
|
+
lookup(key: VarKey, movedSensitive?: boolean, throwUndeclared?: boolean): ReferenceLink;
|
|
24
|
+
/** 声明全新空变量 */
|
|
25
|
+
declare(key: VarKey): ReferenceLink;
|
|
26
|
+
/** 为已有变量赋值 */
|
|
27
|
+
assign(key: VarKey, value: Evaluated, operator: AST.AssignmentStatement['operator']): ReferenceLink;
|
|
28
|
+
addMember(key: VarKey, value: Evaluated): ReferenceLink;
|
|
29
|
+
createShallowCopy(): Environment;
|
|
30
|
+
/**
|
|
31
|
+
* 创建一个「合并视图」。
|
|
32
|
+
* 将创建一个新纸箱,该纸箱按顺序包含来自 A (this) 和 B (other) 的所有引用。
|
|
33
|
+
* 自动生成的键会被重命名以保证顺序,用户定义的键如果冲突,A 优先。
|
|
34
|
+
*/
|
|
35
|
+
createMergedView(other: Environment): Environment;
|
|
36
|
+
toString(): string;
|
|
37
|
+
get length(): number;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/core/engine/environment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAKN,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,MAAM,YAAY,CAAC;AAgBpB,qBAAa,WAAW;IACvB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmD;IAC7E,SAAgB,mBAAmB,EAAE,MAAM,EAAE,CAAM;IAEnD,YAAY,MAAM,CAAC,EAAE,WAAW,EAI/B;IAED,OAAc,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,aAAa,GAAG,IAAI,CAEpE;IACD,OAAc,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,CAIpE;IAED,sBAAsB;IACf,OAAO,IAAI,IAAI,CAErB;IACD,YAAY;IACL,KAAK,IAAI,IAAI,CAKnB;IAEM,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvC;IAED,mBAAmB;IACZ,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,OAAO,CAIvD;IAEM,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAExE;IACM,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAIhE;IAEM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,UAAO,EAAE,eAAe,UAAQ,GAAG,aAAa,CAqBxF;IAED,cAAc;IACP,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAMzC;IAED,cAAc;IACP,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,GAAG,aAAa,CAyBzG;IAEM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,aAAa,CAE7D;IAEM,iBAAiB,IAAI,WAAW,CAItC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAevD;IAEM,QAAQ,IAAI,MAAM,CAIxB;IACD,IAAW,MAAM,IAAI,MAAM,CAE1B;CACD"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// src/core/engine/environment.ts
|
|
2
|
+
import logger from './logger.js';
|
|
3
|
+
import { isReferenceLink, isSignal, referenceLinkTo, } from './value.js';
|
|
4
|
+
// 防碰撞自动变量名
|
|
5
|
+
const isAutoKey = (key) => typeof key === 'number';
|
|
6
|
+
const DO_NOTHING = () => { };
|
|
7
|
+
const throwIfMoved = (env, key, originalKey, moved) => {
|
|
8
|
+
if (!moved)
|
|
9
|
+
return;
|
|
10
|
+
const errorMessage = isAutoKey(key)
|
|
11
|
+
? `纸箱里的「${env.orderedVariableKeys.indexOf(key) + 1}」号玩具不见了,一定是被谁拿走了喵!`
|
|
12
|
+
: key === originalKey
|
|
13
|
+
? `藏在「${key}」里的东西被拿走了,现在是只空碗喵!`
|
|
14
|
+
: `碰不到「${key}」,因为它的本体「${originalKey}」被拿走了喵!`;
|
|
15
|
+
throw new Error(`喵呜!${errorMessage}`);
|
|
16
|
+
};
|
|
17
|
+
export class Environment {
|
|
18
|
+
id;
|
|
19
|
+
static idCounter = 0;
|
|
20
|
+
parent;
|
|
21
|
+
variables = new Map();
|
|
22
|
+
functions = new Map();
|
|
23
|
+
orderedVariableKeys = [];
|
|
24
|
+
constructor(parent) {
|
|
25
|
+
this.parent = parent;
|
|
26
|
+
this.id = Environment.idCounter++;
|
|
27
|
+
logger.debug(`[ENV] 新建环境 #${this.id} (上级: ${this.parent?.id ?? '无'})`);
|
|
28
|
+
}
|
|
29
|
+
static markReferenceMoved({ scope, key }) {
|
|
30
|
+
scope.variables.get(key).moved = true;
|
|
31
|
+
}
|
|
32
|
+
static resolveValue(value) {
|
|
33
|
+
if (isSignal(value))
|
|
34
|
+
throw new Error(`不能在这里发送神秘信号喵!`);
|
|
35
|
+
while (isReferenceLink(value))
|
|
36
|
+
value = value.scope.variables.get(value.key).value;
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
/** 剥离层级关系,避免从纸箱往外摸 */
|
|
40
|
+
isolate() {
|
|
41
|
+
return ((this.parent = undefined), this);
|
|
42
|
+
}
|
|
43
|
+
/** 清空作用域 */
|
|
44
|
+
clear() {
|
|
45
|
+
this.variables.clear();
|
|
46
|
+
this.functions.clear();
|
|
47
|
+
this.orderedVariableKeys.length = 0;
|
|
48
|
+
logger.debug(`[ENV #${this.id}] 清空环境`);
|
|
49
|
+
}
|
|
50
|
+
hasVariable(key) {
|
|
51
|
+
return this.variables.has(key);
|
|
52
|
+
}
|
|
53
|
+
/** 检查当前环境是否在边界内 */
|
|
54
|
+
isInsideOf(boundary) {
|
|
55
|
+
if (!boundary)
|
|
56
|
+
return false;
|
|
57
|
+
for (let current = this; current; current = current.parent)
|
|
58
|
+
if (current === boundary)
|
|
59
|
+
return true;
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
declareFunction(name, func) {
|
|
63
|
+
this.functions.set(name, func);
|
|
64
|
+
}
|
|
65
|
+
findFunction(name) {
|
|
66
|
+
let func;
|
|
67
|
+
for (let scope = this; scope && !(func = scope.functions.get(name)); scope = scope.parent)
|
|
68
|
+
;
|
|
69
|
+
return func;
|
|
70
|
+
}
|
|
71
|
+
lookup(key, movedSensitive = true, throwUndeclared = false) {
|
|
72
|
+
let scope = this; // 把 let originalScope 放这 TS 会懵
|
|
73
|
+
while (!scope.variables.has(key)) {
|
|
74
|
+
if ((scope = scope.parent))
|
|
75
|
+
continue;
|
|
76
|
+
if (throwUndeclared)
|
|
77
|
+
throw new Error(`还不认识「${key}」喵!要先“蹭”一下喵!`);
|
|
78
|
+
const notFunctionName = isAutoKey(key) || !this.findFunction(key);
|
|
79
|
+
const errorMessage = notFunctionName
|
|
80
|
+
? `没找到叫做「${key}」的玩具,是不是被你藏起来了`
|
|
81
|
+
: `是不是想把${"\u8BA1\u8C0B" /* TypeName.FUNCTION */}「${key}」当成玩具`;
|
|
82
|
+
throw new Error(`咦?${errorMessage}喵?`);
|
|
83
|
+
}
|
|
84
|
+
// 引用链循环追踪
|
|
85
|
+
const checkMoved = movedSensitive ? throwIfMoved : DO_NOTHING;
|
|
86
|
+
for (let originalScope = scope, originalKey = key;;) {
|
|
87
|
+
const { value, moved } = originalScope.variables.get(originalKey);
|
|
88
|
+
checkMoved(this, key, originalKey, moved);
|
|
89
|
+
logger.debug(`[ENV #${this.id}] 查找: 在环境 #${originalScope.id} 中找到「${originalKey}」`);
|
|
90
|
+
if (!isReferenceLink(value))
|
|
91
|
+
return referenceLinkTo(originalScope, originalKey);
|
|
92
|
+
({ scope: originalScope, key: originalKey } = value);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** 声明全新空变量 */
|
|
96
|
+
declare(key) {
|
|
97
|
+
if (this.variables.has(key))
|
|
98
|
+
throw new Error(`变量「${key}」已经被“蹭”过一次了喵!`);
|
|
99
|
+
logger.debug(`[ENV #${this.id}] 声明: 变量「${key}」`);
|
|
100
|
+
this.variables.set(key, { value: null, moved: false });
|
|
101
|
+
this.orderedVariableKeys.push(key);
|
|
102
|
+
return referenceLinkTo(this, key);
|
|
103
|
+
}
|
|
104
|
+
/** 为已有变量赋值 */
|
|
105
|
+
assign(key, value, operator) {
|
|
106
|
+
// 查找目标,找到真正的「碗」
|
|
107
|
+
const referenceLink = this.lookup(key, false, true);
|
|
108
|
+
const { scope: targetScope, key: targetKey } = referenceLink;
|
|
109
|
+
// 在最终位置赋值
|
|
110
|
+
let finalValue;
|
|
111
|
+
if (operator === 6 /* TokenKind.ASSIGNMENT_IS */) {
|
|
112
|
+
finalValue =
|
|
113
|
+
isReferenceLink(value) && (targetScope !== value.scope || targetKey !== value.key) /* 防御循环引用 */
|
|
114
|
+
? value
|
|
115
|
+
: Environment.resolveValue(value);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
finalValue = Environment.resolveValue(value);
|
|
119
|
+
if (operator === 7 /* TokenKind.ASSIGNMENT_LIKE */) {
|
|
120
|
+
if (finalValue instanceof Environment)
|
|
121
|
+
finalValue = finalValue.createShallowCopy(); // 复制纸箱即创建「视图」
|
|
122
|
+
}
|
|
123
|
+
else if (operator === 8 /* TokenKind.ASSIGNMENT_ONLY */ && isReferenceLink(value))
|
|
124
|
+
Environment.markReferenceMoved(value); // 引用被移动,打上标记
|
|
125
|
+
}
|
|
126
|
+
targetScope.variables.set(targetKey, { value: finalValue, moved: false });
|
|
127
|
+
logger.debug(`[ENV #${this.id}] 赋值: 环境 #${targetScope.id} 中的「${targetKey}」被赋予 (方式: ${operator}) 值:`, finalValue);
|
|
128
|
+
return referenceLink;
|
|
129
|
+
}
|
|
130
|
+
addMember(key, value) {
|
|
131
|
+
return (this.declare(key), this.assign(key, value, 6 /* TokenKind.ASSIGNMENT_IS */));
|
|
132
|
+
}
|
|
133
|
+
createShallowCopy() {
|
|
134
|
+
const newEnv = new Environment();
|
|
135
|
+
for (const key of this.orderedVariableKeys)
|
|
136
|
+
newEnv.addMember(key, this.lookup(key, false));
|
|
137
|
+
return newEnv;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 创建一个「合并视图」。
|
|
141
|
+
* 将创建一个新纸箱,该纸箱按顺序包含来自 A (this) 和 B (other) 的所有引用。
|
|
142
|
+
* 自动生成的键会被重命名以保证顺序,用户定义的键如果冲突,A 优先。
|
|
143
|
+
*/
|
|
144
|
+
createMergedView(other) {
|
|
145
|
+
const newEnv = new Environment();
|
|
146
|
+
let autoIndexCounter = 0; // 为新视图创建全新的自动索引
|
|
147
|
+
// 1. 添加来自 A (this) 的所有引用。用户键直接用
|
|
148
|
+
for (const key of this.orderedVariableKeys) {
|
|
149
|
+
newEnv.addMember(isAutoKey(key) ? autoIndexCounter++ : key, this.lookup(key, false));
|
|
150
|
+
}
|
|
151
|
+
// 2. 添加来自 B (other) 的引用。用户键弃重复
|
|
152
|
+
for (const key of other.orderedVariableKeys) {
|
|
153
|
+
const targetKey = isAutoKey(key) ? autoIndexCounter++ : newEnv.hasVariable(key) ? null : key;
|
|
154
|
+
if (targetKey !== null)
|
|
155
|
+
newEnv.addMember(targetKey, other.lookup(key, false));
|
|
156
|
+
}
|
|
157
|
+
return newEnv;
|
|
158
|
+
}
|
|
159
|
+
toString() {
|
|
160
|
+
return `[= ${this.orderedVariableKeys
|
|
161
|
+
.map((key, index) => (isAutoKey(key) ? `(${index + 1})` : `{${key}}`))
|
|
162
|
+
.join(', ')} =]`;
|
|
163
|
+
}
|
|
164
|
+
get length() {
|
|
165
|
+
return this.orderedVariableKeys.length;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/engine/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,4 @@ declare const enum NewEnvMode {
|
|
|
10
10
|
}
|
|
11
11
|
export declare function evaluate(node: AST.Node, env: Environment, builtIns: MeaoiuBuiltIns, boundaryEnv: BoundaryEnv, newEnvMode?: NewEnvMode): Promise<Evaluated>;
|
|
12
12
|
export {};
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=evaluater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluater.d.ts","sourceRoot":"","sources":["../../../src/core/engine/evaluater.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAC;AAEtC,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWjG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAIN,KAAK,SAAS,EAQd,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACrG,mBAAW,UAAU;IACpB,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,IAAI,IAAA;CACJ;AAmBD,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,GAAE,UAA8B,GACxC,OAAO,CAAC,SAAS,CAAC,CAgYpB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// src/core/
|
|
1
|
+
// src/core/engine/evaluater.ts
|
|
2
2
|
import { checkArgsForBuiltIn, isBuiltInFunctionName } from '../builtIns.js';
|
|
3
3
|
import { errorFrom, MeaoiuError } from '../error.js';
|
|
4
4
|
import { checkArithmeticOperation, checkComparisonOperation, getMeaoiuType, } from '../typedef.js';
|
|
5
5
|
import { Environment } from './environment.js';
|
|
6
6
|
import logger from './logger.js';
|
|
7
|
-
import { BREAK_SIGNAL, CONTINUE_SIGNAL, isReferenceLink, isSignal, LoopValue, ReturnValue, } from './value.js';
|
|
7
|
+
import { BREAK_SIGNAL, CONTINUE_SIGNAL, isReferenceLink, isSignal, LoopValue, referenceLinkTo, ReturnValue, } from './value.js';
|
|
8
8
|
const ReturnOrAmbush = {
|
|
9
9
|
[5 /* NodeKind.ReturnStatement */]: {
|
|
10
10
|
emptySignal: new ReturnValue(null),
|
|
@@ -238,8 +238,7 @@ export async function evaluate(node, env, builtIns, boundaryEnv, newEnvMode = 0
|
|
|
238
238
|
}
|
|
239
239
|
case 16 /* NodeKind.LoopExpression */: {
|
|
240
240
|
const { body } = node;
|
|
241
|
-
loop: for (;;) {
|
|
242
|
-
const loopEnv = new Environment(env);
|
|
241
|
+
loop: for (const loopEnv = new Environment(env);; loopEnv.clear()) {
|
|
243
242
|
const result = await evaluate(body, loopEnv, builtIns, { ...boundaryEnv, [6 /* NodeKind.AmbushStatement */]: loopEnv }, 2 /* NewEnvMode.LOOP */);
|
|
244
243
|
if (!isSignal(result))
|
|
245
244
|
continue;
|
|
@@ -298,7 +297,7 @@ export async function evaluate(node, env, builtIns, boundaryEnv, newEnvMode = 0
|
|
|
298
297
|
const paramName = paramNames[i];
|
|
299
298
|
const argVarKey = argsCollection.orderedVariableKeys[i];
|
|
300
299
|
// 创建从“函数参数名”到“调用纸箱中变量”的引用
|
|
301
|
-
functionEnv.
|
|
300
|
+
functionEnv.addMember(paramName, referenceLinkTo(argsCollection, argVarKey));
|
|
302
301
|
}
|
|
303
302
|
const result = await evaluate(func.body, functionEnv, builtIns, { ...boundaryEnv, [5 /* NodeKind.ReturnStatement */]: functionEnv }, 1 /* NewEnvMode.FUNC */);
|
|
304
303
|
if (result instanceof ReturnValue)
|
|
@@ -417,4 +416,4 @@ async function _evaluateMemberKey(prop, env, builtIns, boundaryEnv, collection,
|
|
|
417
416
|
}
|
|
418
417
|
throw runtimeErrorFrom(prop, `${"\u7EB8\u7BB1" /* TypeName.COLLECTION */}的索引必须是${"\u6478\u6570" /* TypeName.NUMBER */}或${"\u95F2\u8BDD" /* TypeName.STRING */}喵!`);
|
|
419
418
|
}
|
|
420
|
-
//# sourceMappingURL=
|
|
419
|
+
//# sourceMappingURL=evaluater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluater.js","sourceRoot":"","sources":["../../../src/core/engine/evaluater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/core/engine/io.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,KAAK,SAAS,GAAG,OAAO,QAAQ,CAAC;AACjC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC/B,CAAC;AAWF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQrD;AAGD,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1D;AAGD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAe,EAAE,EAAE,QAAQ,GAAG,eAAe,CAIjG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/core/engine/io.ts"],"names":[],"mappings":"AAAA,wBAAwB;AA2BxB,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,KAAK;AACL,SAAS,QAAQ,CAAC,KAAc,EAAE,QAAgB;IACjD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,GAAG,2BAAS,GAAG,QAAQ,GAAG,6BAAW,EAAE,CAAC;IAElE,QAAQ,OAAO,KAAK,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACb,OAAO,GAAG,+BAAY,GAAG,QAAQ,GAAG,6BAAW,EAAE,CAAC;QACnD,KAAK,QAAQ;YACZ,OAAO,GAAG,8BAAW,GAAG,QAAQ,GAAG,6BAAW,EAAE,CAAC;QAClD;YACC,OAAO,QAAQ,CAAC;IAClB,CAAC;AACF,CAAC;AAED,WAAW;AACX,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAY;IAC/E,MAAM,SAAS,GAAsB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACvG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/engine/logger.ts"],"names":[],"mappings":"AAEA,0BAAkB,QAAQ;IACzB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACT;AACD,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAK1D,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAKjD;wBAGwB,QAAQ,CAAC,OAAO,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/engine/logger.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAS5B,MAAM,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAC5B,MAAM,MAAM,GAAmD;IAC9D,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,KAAe;IAC1C,MAAM,CAAC,KAAK,GAAG,KAAK,0BAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACrG,MAAM,CAAC,IAAI,GAAG,KAAK,yBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjG,MAAM,CAAC,IAAI,GAAG,KAAK,yBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjG,MAAM,CAAC,KAAK,GAAG,KAAK,0BAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACtG,CAAC;AACD,WAAW,uBAAe,CAAC;AAE3B,eAAe,MAAiC,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { MeaoiuValue } from '../typedef.js';
|
|
2
2
|
import type { Environment } from './environment.js';
|
|
3
|
+
export type VarKey = string | number;
|
|
3
4
|
export type ReferenceLink = {
|
|
4
5
|
isReference: true;
|
|
5
6
|
scope: Environment;
|
|
6
|
-
key:
|
|
7
|
+
key: VarKey;
|
|
7
8
|
};
|
|
8
9
|
export type VariableValue = ReferenceLink | MeaoiuValue;
|
|
9
10
|
export type EnvVariable = {
|
|
@@ -35,6 +36,7 @@ export declare const BREAK_SIGNAL: EmptySignal<SignalKind.BREAK>;
|
|
|
35
36
|
export declare const CONTINUE_SIGNAL: EmptySignal<SignalKind.CONTINUE>;
|
|
36
37
|
type ControlSignal = ReturnValue | LoopValue | EmptySignal<SignalKind.BREAK> | EmptySignal<SignalKind.CONTINUE>;
|
|
37
38
|
export type Evaluated = VariableValue | ControlSignal;
|
|
39
|
+
export declare function referenceLinkTo(scope: Environment, key: VarKey): ReferenceLink;
|
|
38
40
|
export declare function isReferenceLink(value: Evaluated): value is ReferenceLink;
|
|
39
41
|
export declare function isSignal(value: Evaluated): value is ControlSignal;
|
|
40
42
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../src/core/engine/value.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACrC,MAAM,MAAM,aAAa,GAAG;IAAE,WAAW,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnE,0BAAkB,UAAU;IAC3B,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,QAAQ,IAAA;CACR;AACD,uBAAe,MAAM,CAAC,CAAC,SAAS,UAAU;aACb,UAAU,EAAE,CAAC;IAAzC,YAA4B,UAAU,EAAE,CAAC,EAAI;CAC7C;AAED,qBAAa,WAAY,SAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;aAC7B,KAAK,EAAE,SAAS;IAA5C,YAA4B,KAAK,EAAE,SAAS,EAE3C;CACD;AAED,qBAAa,SAAU,SAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aACzB,KAAK,EAAE,SAAS;IAA5C,YAA4B,KAAK,EAAE,SAAS,EAE3C;CACD;AACD,qBAAa,WAAW,CAAC,CAAC,SAAS,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC3F,YAAY,IAAI,EAAE,CAAC,EAElB;CACD;AACD,eAAO,MAAM,YAAY,+BAAoC,CAAC;AAC9D,eAAO,MAAM,eAAe,kCAAuC,CAAC;AAEpE,KAAK,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEtD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAE9E;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CAExE;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CAEjE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/core/
|
|
1
|
+
// src/core/engine/value.ts
|
|
2
2
|
class Signal {
|
|
3
3
|
signalKind;
|
|
4
4
|
constructor(signalKind) {
|
|
@@ -28,6 +28,9 @@ export class EmptySignal extends Signal {
|
|
|
28
28
|
}
|
|
29
29
|
export const BREAK_SIGNAL = new EmptySignal(2 /* SignalKind.BREAK */); // '累了~'
|
|
30
30
|
export const CONTINUE_SIGNAL = new EmptySignal(3 /* SignalKind.CONTINUE */); //'偷袭~'
|
|
31
|
+
export function referenceLinkTo(scope, key) {
|
|
32
|
+
return { isReference: true, scope, key };
|
|
33
|
+
}
|
|
31
34
|
export function isReferenceLink(value) {
|
|
32
35
|
return !!value?.isReference;
|
|
33
36
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../src/core/engine/value.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAgB3B,MAAe,MAAM;IACQ,UAAU;IAAtC,YAA4B,UAAa;0BAAb,UAAU;IAAM,CAAC;CAC7C;AACD,aAAa;AACb,MAAM,OAAO,WAAY,SAAQ,MAAyB;IAC7B,KAAK;IAAjC,YAA4B,KAAgB;QAC3C,KAAK,2BAAmB,CAAC;qBADE,KAAK;IAEjC,CAAC;CACD;AACD,YAAY;AACZ,MAAM,OAAO,SAAU,SAAQ,MAAuB;IACzB,KAAK;IAAjC,YAA4B,KAAgB;QAC3C,KAAK,yBAAiB,CAAC;qBADI,KAAK;IAEjC,CAAC;CACD;AACD,MAAM,OAAO,WAA8D,SAAQ,MAAS;IAC3F,YAAY,IAAO;QAClB,KAAK,CAAC,IAAI,CAAC,CAAC;IACb,CAAC;CACD;AACD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,WAAW,0BAAkB,CAAC,CAAC,QAAQ;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,WAAW,6BAAqB,CAAC,CAAC,OAAO;AAK5E,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,GAAW;IAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC/C,OAAO,CAAC,CAAE,KAAiC,EAAE,WAAW,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACxC,OAAO,KAAK,YAAY,MAAM,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as AST from '../ast.js';
|
|
2
|
+
import { MeaoiuError } from '../error.js';
|
|
3
|
+
import { type Token } from '../lexer/token.js';
|
|
4
|
+
export type ParseResult = {
|
|
5
|
+
program: AST.Program;
|
|
6
|
+
errors: MeaoiuError[];
|
|
7
|
+
};
|
|
8
|
+
export declare function abstractify(tokens: Token[], isTolerant?: boolean): ParseResult;
|
|
9
|
+
//# sourceMappingURL=abstractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractor.d.ts","sourceRoot":"","sources":["../../../src/core/parser/abstractor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1D,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC;AAUF,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,GAAE,OAAe,GAAG,WAAW,CAiBrF"}
|