ic10c-node 2.6.6
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/CHANGELOG.md +10 -0
- package/README.md +300 -0
- package/README.zh.md +300 -0
- package/package.json +50 -0
- package/src/ic10c-node.node +0 -0
- package/src/stdLib.ic +692 -0
- package/static/stdLib.ic.json +3 -0
- package/tsconfig.json +16 -0
- package/types/common.d.ts +145 -0
- package/types/incremental.d.ts +83 -0
- package/types/index.d.ts +53 -0
- package/types/lexer/index.d.ts +18 -0
- package/types/lexer/lexer.d.ts +83 -0
- package/types/lexer/token.d.ts +341 -0
- package/types/linker.d.ts +156 -0
- package/types/locale.d.ts +36 -0
- package/types/parser/ast.d.ts +848 -0
- package/types/parser/index.d.ts +19 -0
- package/types/parser/instructions/binary.d.ts +1209 -0
- package/types/parser/instructions/index.d.ts +22 -0
- package/types/parser/instructions/nullary.d.ts +85 -0
- package/types/parser/instructions/quaternary.d.ts +603 -0
- package/types/parser/instructions/quinary.d.ts +150 -0
- package/types/parser/instructions/senary.d.ts +104 -0
- package/types/parser/instructions/ternary.d.ts +1551 -0
- package/types/parser/instructions/unary.d.ts +518 -0
- package/types/parser/parser.d.ts +84 -0
- package/types/parser/program.d.ts +136 -0
- package/types/semantic/analyser.d.ts +98 -0
- package/types/semantic/index.d.ts +19 -0
- package/types/semantic/semantic.d.ts +81 -0
- package/types/semantic/type_table.d.ts +119 -0
- package/types/semantic/types.d.ts +100 -0
|
@@ -0,0 +1,150 @@
|
|
|
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 quinary.d.ts
|
|
10
|
+
* @author edocsitahw
|
|
11
|
+
* @version 1.1
|
|
12
|
+
* @date 2026/07/22 15:50
|
|
13
|
+
* @desc
|
|
14
|
+
* @copyright CC BY-NC-SA 2026. All rights reserved.
|
|
15
|
+
* */
|
|
16
|
+
import {
|
|
17
|
+
ErrorNode,
|
|
18
|
+
RegisterOrIdentifierNode,
|
|
19
|
+
OperandNode,
|
|
20
|
+
LogicTypeNode,
|
|
21
|
+
BatchModeNode,
|
|
22
|
+
SlotIndexNode,
|
|
23
|
+
LogicSlotTypeNode,
|
|
24
|
+
OperandType
|
|
25
|
+
} from "../ast";
|
|
26
|
+
import {TernaryInstruction} from "./ternary";
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// 五元指令(5 个操作数)
|
|
30
|
+
|
|
31
|
+
export interface QuinaryInstruction extends TernaryInstruction {
|
|
32
|
+
type5: OperandType;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @summary 五元指令概述
|
|
37
|
+
*
|
|
38
|
+
* @desc 五元指令是包含五个操作数的指令。
|
|
39
|
+
* 根据操作数类型可分为以下几类:
|
|
40
|
+
* - **QuinaryInstruction_RI_O_O_LT_BM**:寄存器/标识符 + 操作数 + 操作数 + 逻辑类型 + 批处理模式
|
|
41
|
+
* - **QuinaryInstruction_RI_O_SI_LS_BM**:寄存器/标识符 + 操作数 + 槽索引 + 逻辑槽类型 + 批处理模式
|
|
42
|
+
*
|
|
43
|
+
* @elseif en
|
|
44
|
+
* @summary Quinary Instructions Overview
|
|
45
|
+
*
|
|
46
|
+
* @desc Quinary instructions contain five operands.
|
|
47
|
+
* They are categorized by operand types:
|
|
48
|
+
* - **QuinaryInstruction_RI_O_O_LT_BM**: Register/identifier + operand + operand + logic type + batch mode
|
|
49
|
+
* - **QuinaryInstruction_RI_O_SI_LS_BM**: Register/identifier + operand + slot index + logic slot type + batch mode
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @summary 含 RegisterOrIdentifier + Operand + Operand + LogicType + BatchMode 操作数的五元指令基类
|
|
54
|
+
*
|
|
55
|
+
* @desc 第一个操作数为寄存器或标识符,第二、三个为操作数,第四个为逻辑类型,第五个为批处理模式。
|
|
56
|
+
* @elseif en
|
|
57
|
+
* @summary Base interface for quinary instructions with RegisterOrIdentifier + Operand + Operand + LogicType + BatchMode operands
|
|
58
|
+
*
|
|
59
|
+
* @desc First operand is a register or identifier, second and third are operands, fourth is a logic type, fifth is a batch mode.
|
|
60
|
+
*
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
interface QuinaryInstruction_RI_O_O_LT_BM extends QuinaryInstruction {
|
|
64
|
+
operand1: RegisterOrIdentifierNode;
|
|
65
|
+
operand2: OperandNode;
|
|
66
|
+
operand3: OperandNode;
|
|
67
|
+
operand4: LogicTypeNode;
|
|
68
|
+
operand5: BatchModeNode;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @summary LBN(读取设备库存批量数值)指令节点
|
|
74
|
+
*
|
|
75
|
+
* @desc 从设备的库存中批量读取多个数值数据。
|
|
76
|
+
* @elseif en
|
|
77
|
+
* @summary LBN (Load Batch Numerical) instruction node
|
|
78
|
+
*
|
|
79
|
+
* @desc Batch reads multiple numerical data from a device's inventory.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* // LBN r0 tank1 Water Oxygen Exact
|
|
84
|
+
* // 从 tank1 批量读取 Water 和 Oxygen 的数值数据
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @public
|
|
88
|
+
*/
|
|
89
|
+
export interface LbnInstructionNode extends QuinaryInstruction_RI_O_O_LT_BM {
|
|
90
|
+
type: "lbnInstruction";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @summary 含 RegisterOrIdentifier + Operand + SlotIndex + LogicSlotType + BatchMode 操作数的五元指令基类
|
|
96
|
+
*
|
|
97
|
+
* @desc 第一个操作数为寄存器或标识符,第二个为操作数,第三个为槽索引,第四个为逻辑槽类型,第五个为批处理模式。
|
|
98
|
+
* @elseif en
|
|
99
|
+
* @summary Base interface for quinary instructions with RegisterOrIdentifier + Operand + SlotIndex + LogicSlotType + BatchMode operands
|
|
100
|
+
*
|
|
101
|
+
* @desc First operand is a register or identifier, second is an operand, third is a slot index, fourth is a logic slot type, fifth is a batch mode.
|
|
102
|
+
*
|
|
103
|
+
* @public
|
|
104
|
+
*/
|
|
105
|
+
interface QuinaryInstruction_RI_O_SI_LS_BM extends QuinaryInstruction {
|
|
106
|
+
operand1: RegisterOrIdentifierNode;
|
|
107
|
+
operand2: OperandNode;
|
|
108
|
+
operand3: SlotIndexNode;
|
|
109
|
+
operand4: LogicSlotTypeNode;
|
|
110
|
+
operand5: BatchModeNode;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @summary LBS(读取设备库存批量槽)指令节点
|
|
116
|
+
*
|
|
117
|
+
* @desc 从设备的库存槽中批量读取数据。
|
|
118
|
+
* @elseif en
|
|
119
|
+
* @summary LBS (Load Batch Slot) instruction node
|
|
120
|
+
*
|
|
121
|
+
* @desc Batch reads data from a device's inventory slots.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* // LBS r0 tank1 0 Quantity Exact
|
|
126
|
+
* // 从 tank1 的槽批量读取数据
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @public
|
|
130
|
+
*/
|
|
131
|
+
export interface LbsInstructionNode extends QuinaryInstruction_RI_O_SI_LS_BM {
|
|
132
|
+
type: "lbsInstruction";
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @summary 五元指令联合类型
|
|
138
|
+
*
|
|
139
|
+
* @desc 包含所有五元指令类型的联合,包括可能的错误节点。
|
|
140
|
+
* @elseif en
|
|
141
|
+
* @summary Quinary instruction union type
|
|
142
|
+
*
|
|
143
|
+
* @desc Union of all quinary instruction types, including possible error nodes.
|
|
144
|
+
*
|
|
145
|
+
* @public
|
|
146
|
+
*/
|
|
147
|
+
export type QuinaryInstructionNode =
|
|
148
|
+
| LbnInstructionNode
|
|
149
|
+
| LbsInstructionNode
|
|
150
|
+
| ErrorNode;
|
|
@@ -0,0 +1,104 @@
|
|
|
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 senary.d.ts
|
|
10
|
+
* @author edocsitahw
|
|
11
|
+
* @version 1.1
|
|
12
|
+
* @date 2026/07/22 15:51
|
|
13
|
+
* @desc
|
|
14
|
+
* @copyright CC BY-NC-SA 2026. All rights reserved.
|
|
15
|
+
* */
|
|
16
|
+
import {
|
|
17
|
+
ErrorNode,
|
|
18
|
+
RegisterOrIdentifierNode,
|
|
19
|
+
OperandNode,
|
|
20
|
+
SlotIndexNode,
|
|
21
|
+
LogicSlotTypeNode,
|
|
22
|
+
BatchModeNode,
|
|
23
|
+
OperandType
|
|
24
|
+
} from "../ast";
|
|
25
|
+
import {QuinaryInstruction} from "./quinary";
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
// 六元指令(6 个操作数)
|
|
29
|
+
|
|
30
|
+
export interface SenaryInstruction extends QuinaryInstruction {
|
|
31
|
+
type6: OperandType;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @summary 六元指令概述
|
|
37
|
+
*
|
|
38
|
+
* @desc 六元指令是包含六个操作数的指令。
|
|
39
|
+
* 主要用于复杂的库存操作指令。
|
|
40
|
+
*
|
|
41
|
+
* @elseif en
|
|
42
|
+
* @summary Senary Instructions Overview
|
|
43
|
+
*
|
|
44
|
+
* @desc Senary instructions contain six operands.
|
|
45
|
+
* Mainly used for complex inventory operations.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @summary 含 RegisterOrIdentifier + Operand + Operand + SlotIndex + LogicSlotType + BatchMode 操作数的六元指令基类
|
|
50
|
+
*
|
|
51
|
+
* @desc 第一个操作数为寄存器或标识符,第二、三个为操作数,第四个为槽索引,第五个为逻辑槽类型,第六个为批处理模式。
|
|
52
|
+
* @elseif en
|
|
53
|
+
* @summary Base interface for senary instructions with RegisterOrIdentifier + Operand + Operand + SlotIndex + LogicSlotType + BatchMode operands
|
|
54
|
+
*
|
|
55
|
+
* @desc First operand is a register or identifier, second and third are operands, fourth is a slot index, fifth is a logic slot type, sixth is a batch mode.
|
|
56
|
+
*
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
interface SenaryInstruction_RI_O_O_SI_LS_BM extends SenaryInstruction {
|
|
60
|
+
operand1: RegisterOrIdentifierNode;
|
|
61
|
+
operand2: OperandNode;
|
|
62
|
+
operand3: OperandNode;
|
|
63
|
+
operand4: SlotIndexNode;
|
|
64
|
+
operand5: LogicSlotTypeNode;
|
|
65
|
+
operand6: BatchModeNode;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @summary LBNS(读取设备库存批量数值槽)指令节点
|
|
71
|
+
*
|
|
72
|
+
* @desc 从设备的库存槽中批量读取多个数值数据。
|
|
73
|
+
* @elseif en
|
|
74
|
+
* @summary LBNS (Load Batch Numerical Slot) instruction node
|
|
75
|
+
*
|
|
76
|
+
* @desc Batch reads multiple numerical data from a device's inventory slots.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* // LBNS r0 tank1 0 Water Oxygen Exact
|
|
81
|
+
* // 从 tank1 的槽批量读取多个数值数据
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
export interface LbnsInstructionNode extends SenaryInstruction_RI_O_O_SI_LS_BM {
|
|
87
|
+
type: "lbnsInstruction";
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @summary 六元指令联合类型
|
|
93
|
+
*
|
|
94
|
+
* @desc 包含所有六元指令类型的联合,包括可能的错误节点。
|
|
95
|
+
* @elseif en
|
|
96
|
+
* @summary Senary instruction union type
|
|
97
|
+
*
|
|
98
|
+
* @desc Union of all senary instruction types, including possible error nodes.
|
|
99
|
+
*
|
|
100
|
+
* @public
|
|
101
|
+
*/
|
|
102
|
+
export type SenaryInstructionNode =
|
|
103
|
+
| LbnsInstructionNode
|
|
104
|
+
| ErrorNode;
|