ic10r-node 1.0.1 → 1.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic10r-node",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "IC10 Runtime Node.js Native Bindings - IC10 program execution engine | IC10 运行时 Node.js 原生绑定 - IC10 程序执行引擎",
5
5
  "main": "src/ic10r-node.node",
6
6
  "types": "types/index.d.ts",
@@ -13,15 +13,17 @@
13
13
  * @desc
14
14
  * @copyright CC BY-NC-SA 2026. All rights reserved.
15
15
  * */
16
+ import { SymbolTable } from "ic10c-node";
17
+ import type { Config } from "./config";
18
+ import { Program } from "ic10c-node";
16
19
  import { Manager } from "./manager";
17
- import { Program } from "./parser";
18
- import { Config } from "./config";
19
20
  import { Memory } from "./memory";
20
21
 
21
22
 
22
23
  export class Context {
24
+ public config: Config;
23
25
 
24
- constructor(program: Program, symbols: SymbolTable, public config: Config);
26
+ constructor(program: Program, symbols: SymbolTable, cfg: Config);
25
27
 
26
28
  pc: number;
27
29
 
package/types/engine.d.ts CHANGED
@@ -13,8 +13,9 @@
13
13
  * @desc
14
14
  * @copyright CC BY-NC-SA 2026. All rights reserved.
15
15
  * */
16
+ import { SymbolTable } from "ic10c-node";
17
+ import { Program } from "ic10c-node";
16
18
  import { Context } from "./context";
17
- import { Program } from "./parser";
18
19
  import { Config } from "./config";
19
20
 
20
21
 
package/types/memory.d.ts CHANGED
@@ -13,14 +13,15 @@
13
13
  * @desc
14
14
  * @copyright CC BY-NC-SA 2026. All rights reserved.
15
15
  * */
16
- import { Config } from "./config";
16
+ import type { Config } from "./config";
17
17
 
18
18
 
19
19
  export class Memory {
20
+ public config: Config;
20
21
 
21
22
  public sp: number;
22
23
 
23
- constructor(public config: Config);
24
+ constructor(cfg: Config);
24
25
 
25
26
  toJSON(): string;
26
27
 
package/types/common.d.ts DELETED
@@ -1,145 +0,0 @@
1
- // Copyright (c) 2026. All rights reserved.
2
- // This source code is licensed under the CC BY-NC-SA
3
- // (Creative Commons Attribution-NonCommercial-NoDerivatives) License, By Xiao Songtao.
4
- // This software is protected by copyright law. Reproduction, distribution, or use for commercial
5
- // purposes is prohibited without the author's permission. If you have any questions or require
6
- // permission, please contact the author: edocsitahw@qq.com
7
-
8
- /**
9
- * @file common.d.ts
10
- * @author edocsitahw
11
- * @version 1.1
12
- * @date 2026/07/22 15:34
13
- * @desc
14
- * @copyright CC BY-NC-SA 2026. All rights reserved.
15
- * */
16
-
17
- /**
18
- * @summary 位置信息类
19
- *
20
- * @desc 表示源代码中的位置,通过行号和列号定位。
21
- * 词法分析器使用此类记录每个 Token 的起始位置。
22
- *
23
- * @note
24
- * 行号和列号的起始值取决于具体实现,通常从 0 开始。
25
- *
26
- * @public
27
- */
28
- export class Pos {
29
- /**
30
- * @summary 行号
31
- * @desc 源代码中的行索引(从 0 或 1 开始)
32
- */
33
- line: number;
34
-
35
- /**
36
- * @summary 列号
37
- * @desc 当前行中的字符位置(从 0 或 1 开始)
38
- */
39
- column: number;
40
-
41
- /**
42
- * @summary 相对于源代码起始位置的字节偏移量
43
- */
44
- offset: number;
45
-
46
- /**
47
- * @summary 移动到下一行
48
- *
49
- * @desc 将位置推进到下一行的起始处(列号归零,行号加一)。
50
- * 通常在解析换行符时调用。
51
- */
52
- newline(): void;
53
-
54
- /**
55
- * @summary 移动到下一个字符
56
- *
57
- * @desc 将列号加一,表示读取了一个字符。
58
- * 通常在解析普通字符时调用。
59
- */
60
- next(): void;
61
-
62
- /**
63
- * @summary 移动到指定偏移位置
64
- *
65
- * @param index - 目标偏移量(相对于源代码起始位置)
66
- *
67
- * @desc 将位置直接设置到指定的字节偏移处。
68
- * 用于回溯或跳转到特定位置。
69
- */
70
- move(index: number): void;
71
- }
72
-
73
-
74
- /**
75
- * @summary 诊断信息
76
- *
77
- * @desc 语义分析过程中产生的诊断信息,包含级别、ID、位置和消息。
78
- * - level: 诊断级别("error" | "warning" | "info")
79
- * - id: 诊断 ID 字符串(如 "IEA1_2"、"IMP17")
80
- * - start: 起始位置(Pos 对象)
81
- * - end: 结束位置(Pos 对象)
82
- * - message: 诊断消息文本
83
- *
84
- * @public
85
- */
86
- export interface Diagnostic {
87
- /**
88
- * @summary 诊断级别
89
- * @desc 诊断的严重级别:error(错误)、warning(警告)、info(提示)。
90
- */
91
- level: "error" | "warning" | "info";
92
-
93
- /**
94
- * @summary 诊断 ID
95
- * @desc 诊断标识符字符串,如 "IEA1_2"、"IMP17"。
96
- */
97
- id: string;
98
-
99
- /**
100
- * @summary 起始位置
101
- * @desc 诊断信息对应的源代码起始位置。
102
- */
103
- start: Pos;
104
-
105
- /**
106
- * @summary 结束位置
107
- * @desc 诊断信息对应的源代码结束位置。
108
- */
109
- end: Pos;
110
-
111
- /**
112
- * @summary 诊断消息
113
- * @desc 诊断信息的文本描述。
114
- */
115
- message: string;
116
- }
117
-
118
-
119
- /**
120
- * @summary AST 节点在源代码中的位置信息
121
- *
122
- * @desc 描述 AST 节点在原始源代码中的位置,用于错误报告、调试和代码导航。
123
- * 位置信息包括行号和列号,从 0 或 1 开始取决于具体实现。
124
- *
125
- * @public
126
- */
127
- export interface Position {
128
- /**
129
- * @summary 行号
130
- * @desc 源代码中的行索引(从 0 或 1 开始)
131
- */
132
- line: number;
133
-
134
- /**
135
- * @summary 列号
136
- * @desc 当前行中的字符位置(从 0 或 1 开始)
137
- */
138
- column: number;
139
-
140
- /**
141
- * @summary 字节偏移量
142
- * @desc 从源代码起始位置到该节点的字节偏移量
143
- */
144
- offset: number;
145
- }
@@ -1,17 +0,0 @@
1
- // Copyright (c) 2026. All rights reserved.
2
- // This source code is licensed under the CC BY-NC-SA
3
- // (Creative Commons Attribution-NonCommercial-NoDerivatives) License, By Xiao Songtao.
4
- // This software is protected by copyright law. Reproduction, distribution, or use for commercial
5
- // purposes is prohibited without the author's permission. If you have any questions or require
6
- // permission, please contact the author: edocsitahw@qq.com
7
-
8
- /**
9
- * @file index.d.ts
10
- * @author edocsitahw
11
- * @version 1.1
12
- * @date 2026/07/22 17:17
13
- * @desc
14
- * @copyright CC BY-NC-SA 2026. All rights reserved.
15
- * */
16
-
17
- export * from "./token"
@@ -1,341 +0,0 @@
1
- // Copyright (c) 2026. All rights reserved.
2
- // This source code is licensed under the CC BY-NC-SA
3
- // (Creative Commons Attribution-NonCommercial-NoDerivatives) License, By Xiao Songtao.
4
- // This software is protected by copyright law. Reproduction, distribution, or use for commercial
5
- // purposes is prohibited without the author's permission. If you have any questions or require
6
- // permission, please contact the author: edocsitahw@qq.com
7
-
8
- /**
9
- * @file token.d.ts
10
- * @author edocsitahw
11
- * @version 1.1
12
- * @date 2026/07/22 15:36
13
- * @desc
14
- * @copyright CC BY-NC-SA 2026. All rights reserved.
15
- * */
16
- import {Pos} from "../common";
17
-
18
-
19
- /**
20
- * IC10 词法标记类型枚举。
21
- *
22
- * 对应 C++ `ic10::TokenType`,值从 0 开始递增。
23
- * 运行时由原生模块导出为不可变对象,可在 JS 层直接使用 `TokenType.FLOAT` 等访问。
24
- *
25
- * @public
26
- */
27
- export enum TokenType {
28
- /* 数字 */
29
- INTEGER = 0,
30
- FLOAT,
31
- HEX_NUMBER,
32
- BINARY_NUMBER,
33
- STRING,
34
-
35
- /* 变量名 */
36
- IDENTIFIER,
37
-
38
- /* 寄存器设备 */
39
- REGISTER,
40
- DEVICE,
41
-
42
- /* 符号 */
43
- LPAREN,
44
- RPAREN,
45
- COLON,
46
-
47
- /* 注释 */
48
- HEX_COMMENT,
49
- SLASH_COMMENT,
50
- DOC_COMMENT,
51
- TYPE_HINT,
52
-
53
- /* 换行 */
54
- NEWLINE,
55
-
56
- /* 关键字 - 宏与函数 */
57
- KEYWORD_HASH,
58
- KEYWORD_STR,
59
-
60
- /* 关键字 - 常量 */
61
- KEYWORD_NAN,
62
- KEYWORD_PINF,
63
- KEYWORD_NINF,
64
- KEYWORD_PI,
65
- KEYWORD_TAU,
66
- KEYWORD_DEG2RAD,
67
- KEYWORD_RAD2DEG,
68
- KEYWORD_EPSILON,
69
- KEYWORD_RGAS,
70
-
71
- /* 文件结束标记 */
72
- END,
73
-
74
- /* 未知标记 */
75
- UNKNOWN,
76
-
77
- /* 关键字 - 空指令 */
78
- KEYWORD_HCF,
79
- KEYWORD_YIELD,
80
-
81
- /* 关键字 - 预处理指令 */
82
- KEYWORD_ALIAS,
83
- KEYWORD_DEFINE,
84
-
85
- /* 关键字 - 一元指令 */
86
- KEYWORD_PEEK,
87
- KEYWORD_POP,
88
- KEYWORD_PUSH,
89
- KEYWORD_CLR,
90
- KEYWORD_J,
91
- KEYWORD_JAL,
92
- KEYWORD_JR,
93
- KEYWORD_RAND,
94
- KEYWORD_SLEEP,
95
- KEYWORD_CLRD,
96
-
97
- /* 关键字 - 二元指令 */
98
- KEYWORD_ABS,
99
- KEYWORD_ACOS,
100
- KEYWORD_ADD,
101
- KEYWORD_ASIN,
102
- KEYWORD_ATAN,
103
- KEYWORD_ATAN2,
104
- KEYWORD_CEIL,
105
- KEYWORD_COS,
106
- KEYWORD_DIV,
107
- KEYWORD_EXP,
108
- KEYWORD_FLOOR,
109
- KEYWORD_LOG,
110
- KEYWORD_MAX,
111
- KEYWORD_MIN,
112
- KEYWORD_MOD,
113
- KEYWORD_MUL,
114
- KEYWORD_POW,
115
- KEYWORD_ROUND,
116
- KEYWORD_SIN,
117
- KEYWORD_SQRT,
118
- KEYWORD_SGN,
119
- KEYWORD_SUB,
120
- KEYWORD_TAN,
121
- KEYWORD_TRUNC,
122
- KEYWORD_NOT,
123
- KEYWORD_MOVE,
124
- KEYWORD_POKE,
125
- KEYWORD_BEQZ,
126
- KEYWORD_BEQZAL,
127
- KEYWORD_BNEZ,
128
- KEYWORD_BNEZAL,
129
- KEYWORD_BGEZ,
130
- KEYWORD_BGEZAL,
131
- KEYWORD_BGTZ,
132
- KEYWORD_BGTZAL,
133
- KEYWORD_BLEZ,
134
- KEYWORD_BLEZAL,
135
- KEYWORD_BLTZ,
136
- KEYWORD_BLTZAL,
137
- KEYWORD_BNAN,
138
- KEYWORD_BDNS,
139
- KEYWORD_BDNSAL,
140
- KEYWORD_BDSE,
141
- KEYWORD_BDSEAL,
142
- KEYWORD_BREQZ,
143
- KEYWORD_BRNEZ,
144
- KEYWORD_BRGEZ,
145
- KEYWORD_BRGTZ,
146
- KEYWORD_BRLEZ,
147
- KEYWORD_BRLTZ,
148
- KEYWORD_BRNAN,
149
- KEYWORD_BRDNS,
150
- KEYWORD_BRDSE,
151
- KEYWORD_SEQZ,
152
- KEYWORD_SNEZ,
153
- KEYWORD_SGEZ,
154
- KEYWORD_SGTZ,
155
- KEYWORD_SLEZ,
156
- KEYWORD_SLTZ,
157
- KEYWORD_SNAN,
158
- KEYWORD_SNANZ,
159
- KEYWORD_SDNS,
160
- KEYWORD_SDSE,
161
-
162
- /* 关键字 - 三元指令 */
163
- KEYWORD_AND,
164
- KEYWORD_NOR,
165
- KEYWORD_OR,
166
- KEYWORD_SLA,
167
- KEYWORD_SLL,
168
- KEYWORD_SRA,
169
- KEYWORD_SRL,
170
- KEYWORD_XOR,
171
- KEYWORD_GET,
172
- KEYWORD_PUT,
173
- KEYWORD_L,
174
- KEYWORD_LS,
175
- KEYWORD_LR,
176
- KEYWORD_S,
177
- KEYWORD_SB,
178
- KEYWORD_ROL,
179
- KEYWORD_ROR,
180
- KEYWORD_RMAP,
181
- KEYWORD_BEQ,
182
- KEYWORD_BEQAL,
183
- KEYWORD_BNE,
184
- KEYWORD_BNEAL,
185
- KEYWORD_BGE,
186
- KEYWORD_BGEAL,
187
- KEYWORD_BGT,
188
- KEYWORD_BGTAL,
189
- KEYWORD_BLE,
190
- KEYWORD_BLEAL,
191
- KEYWORD_BLT,
192
- KEYWORD_BLTAL,
193
- KEYWORD_BAPZ,
194
- KEYWORD_BAPZAL,
195
- KEYWORD_BNAZ,
196
- KEYWORD_BNAZAL,
197
- KEYWORD_BDNVL,
198
- KEYWORD_BDNVS,
199
- KEYWORD_BREQ,
200
- KEYWORD_BRNE,
201
- KEYWORD_BRGE,
202
- KEYWORD_BRGT,
203
- KEYWORD_BRLE,
204
- KEYWORD_BRLT,
205
- KEYWORD_BRAPZ,
206
- KEYWORD_BRNAZ,
207
- KEYWORD_SAPZ,
208
- KEYWORD_SNAZ,
209
- KEYWORD_SEQ,
210
- KEYWORD_SNE,
211
- KEYWORD_SGE,
212
- KEYWORD_SGT,
213
- KEYWORD_SLE,
214
- KEYWORD_SLT,
215
-
216
- /* 关键字 - 四元指令 */
217
- KEYWORD_LERP,
218
- KEYWORD_CLAMP,
219
- KEYWORD_EXT,
220
- KEYWORD_INS,
221
- KEYWORD_SS,
222
- KEYWORD_LB,
223
- KEYWORD_SBN,
224
- KEYWORD_SBS,
225
- KEYWORD_BAP,
226
- KEYWORD_BAPAL,
227
- KEYWORD_BNA,
228
- KEYWORD_BNAAL,
229
- KEYWORD_BRAP,
230
- KEYWORD_BRNA,
231
- KEYWORD_SAP,
232
- KEYWORD_SNA,
233
- KEYWORD_SELECT,
234
-
235
- /* 关键字 - 五元指令 */
236
- KEYWORD_LBN,
237
- KEYWORD_LBS,
238
-
239
- /* 关键字 - 六元指令 */
240
- KEYWORD_LBNS
241
- }
242
-
243
-
244
- /**
245
- * IC10 词法标记类别枚举。
246
- *
247
- * 对应 C++ `ic10::TokenCategory`,值从 0 开始递增。
248
- * 运行时由 C++ 端通过 `enum_to_str` 编译期反射导出,
249
- * 保证与 C++ 枚举定义自动同步。
250
- *
251
- * @public
252
- */
253
- export enum TokenCategory {
254
- /** 字面值(数字、字符串、关键字等) */
255
- LITERAL = 0,
256
- /** 符号(括号、冒号等) */
257
- SYMBOL,
258
- /** 注释 */
259
- COMMENT,
260
- /** 注解(文档注释、类型提示) */
261
- ANNOTATION,
262
- /** 空白符 */
263
- WHITESPACE,
264
- /** 文件结束 */
265
- END,
266
- /** 无效标记 */
267
- INVALID
268
- }
269
-
270
-
271
- /**
272
- * @summary 词法单元类
273
- *
274
- * @desc 表示 IC10 源代码中的最小语义单元。
275
- * 词法单元包括关键字(如 `move`、`add`)、标识符、数字、运算符等。
276
- *
277
- * Token 是词法分析的结果,作为语法分析器的输入。
278
- *
279
- * @public
280
- */
281
- export class Token {
282
- /**
283
- * @summary 构造函数
284
- *
285
- * @param type - Token 类型(对应 ic10::TokenType 枚举)
286
- * @param pos - 位置对象,记录该 Token 在源代码中的位置
287
- * @param lexeme - 词素,即源代码中的原始字符串
288
- * @param category - Token 类别(对应 ic10::TokenCategory 枚举,可选)
289
- *
290
- * @example
291
- * ```typescript
292
- * const pos = new ic10.Pos();
293
- * pos.line = 0;
294
- * pos.column = 0;
295
- * const token = new ic10.Token(TokenType.KEYWORD_MOVE, pos, 'move', TokenCategory.LITERAL);
296
- * ```
297
- */
298
- constructor(type: TokenType, pos: Pos, lexeme?: string, category?: TokenCategory);
299
-
300
- /**
301
- * @summary Token 类型
302
- * @desc 对应 ic10::TokenType 枚举值,表示 Token 的语法类别
303
- */
304
- type: TokenType;
305
-
306
- /**
307
- * @summary 位置信息
308
- * @desc 该 Token 在源代码中的起始位置
309
- */
310
- pos: Pos;
311
-
312
- /**
313
- * @summary 词素
314
- * @desc 源代码中匹配该 Token 的原始字符串
315
- */
316
- lexeme: string;
317
-
318
- /**
319
- * @summary Token 类别
320
- * @desc 对应 ic10::TokenCategory 枚举值,提供更细粒度的分类
321
- */
322
- category: TokenCategory;
323
-
324
- /**
325
- * @summary 返回可读字符串表示
326
- *
327
- * @returns 格式化的字符串,如 `Token{type=1, lexeme="move"}`
328
- *
329
- * @desc 用于调试目的,返回人类可读的 Token 描述。
330
- */
331
- toString(): string;
332
-
333
- /**
334
- * @summary 返回 JSON 字符串表示
335
- *
336
- * @returns JSON 格式的 Token 表示
337
- *
338
- * @desc 返回包含 type、pos、lexeme、category 的 JSON 对象字符串。
339
- */
340
- toJSON(): string;
341
- }