bit2 0.0.2 → 0.0.3
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 +4 -2
- package/dist/src/bx/biEval.js +0 -59
- package/dist/src/bx/biEval.js.map +0 -1
- package/dist/src/common/Exp.js +0 -44
- package/dist/src/common/Exp.js.map +0 -1
- package/dist/src/common/PrettyPrint.js +0 -32
- package/dist/src/common/PrettyPrint.js.map +0 -1
- package/dist/src/common/Print.js +0 -73
- package/dist/src/common/Print.js.map +0 -1
- package/dist/src/core/AST.js +0 -47
- package/dist/src/core/AST.js.map +0 -1
- package/dist/src/core/PrettyPrint.js +0 -64
- package/dist/src/core/PrettyPrint.js.map +0 -1
- package/dist/src/core/Print.js +0 -77
- package/dist/src/core/Print.js.map +0 -1
- package/dist/src/fuse/Fuse.js +0 -1436
- package/dist/src/fuse/Fuse.js.map +0 -1
- package/dist/src/fuse/Print.js +0 -22
- package/dist/src/fuse/Print.js.map +0 -1
- package/dist/src/fuse/Update.js +0 -3
- package/dist/src/fuse/Update.js.map +0 -1
- package/dist/src/lambda/AST.js +0 -3
- package/dist/src/lambda/AST.js.map +0 -1
- package/dist/src/lambda/Evaluation.js +0 -98
- package/dist/src/lambda/Evaluation.js.map +0 -1
- package/dist/src/lambda/Print.js +0 -31
- package/dist/src/lambda/Print.js.map +0 -1
- package/dist/src/lambdalize/lambdalize.js +0 -94
- package/dist/src/lambdalize/lambdalize.js.map +0 -1
- package/dist/src/lambdalize/unLambdalize.js +0 -59
- package/dist/src/lambdalize/unLambdalize.js.map +0 -1
- package/dist/src/partial/AST.js +0 -3
- package/dist/src/partial/AST.js.map +0 -1
- package/dist/src/partial/Print.js +0 -93
- package/dist/src/partial/Print.js.map +0 -1
- package/dist/src/partialEval/peval.js +0 -322
- package/dist/src/partialEval/peval.js.map +0 -1
- package/dist/src/partialEval/unpeval.js +0 -360
- package/dist/src/partialEval/unpeval.js.map +0 -1
- package/dist/src/surface/AST.js +0 -3
- package/dist/src/surface/AST.js.map +0 -1
- package/dist/src/surface/Parser.js +0 -314
- package/dist/src/surface/Parser.js.map +0 -1
- package/dist/src/translate/Translate.js +0 -91
- package/dist/src/translate/Translate.js.map +0 -1
- package/dist/src/utils/Utils.js +0 -7
- package/dist/src/utils/Utils.js.map +0 -1
- package/dist/test/bx/biEval.test.d.ts +0 -1
- package/dist/test/bx/biEval.test.js +0 -41
- package/dist/test/bx/biEval.test.js.map +0 -1
- package/dist/test/bx/test.d.ts +0 -1
- package/dist/test/bx/test.js +0 -29
- package/dist/test/bx/test.js.map +0 -1
- package/dist/test/core/0.simple.test.d.ts +0 -4
- package/dist/test/core/0.simple.test.js +0 -68
- package/dist/test/core/0.simple.test.js.map +0 -1
- package/dist/test/core/1.core.test.d.ts +0 -2
- package/dist/test/core/1.core.test.js +0 -30
- package/dist/test/core/1.core.test.js.map +0 -1
- package/dist/test/core/core.test.d.ts +0 -1
- package/dist/test/core/core.test.js +0 -28
- package/dist/test/core/core.test.js.map +0 -1
- package/dist/test/fuse/branchnop.test.d.ts +0 -1
- package/dist/test/fuse/branchnop.test.js +0 -47
- package/dist/test/fuse/branchnop.test.js.map +0 -1
- package/dist/test/fuse/bulk.test.d.ts +0 -1
- package/dist/test/fuse/bulk.test.js +0 -111
- package/dist/test/fuse/bulk.test.js.map +0 -1
- package/dist/test/fuse/const.test.d.ts +0 -1
- package/dist/test/fuse/const.test.js +0 -118
- package/dist/test/fuse/const.test.js.map +0 -1
- package/dist/test/fuse/exp.test.d.ts +0 -1
- package/dist/test/fuse/exp.test.js +0 -225
- package/dist/test/fuse/exp.test.js.map +0 -1
- package/dist/test/fuse/lambda.test.d.ts +0 -1
- package/dist/test/fuse/lambda.test.js +0 -139
- package/dist/test/fuse/lambda.test.js.map +0 -1
- package/dist/test/fuse/loop.test.d.ts +0 -1
- package/dist/test/fuse/loop.test.js +0 -39
- package/dist/test/fuse/loop.test.js.map +0 -1
- package/dist/test/fuse/seq.test.d.ts +0 -1
- package/dist/test/fuse/seq.test.js +0 -64
- package/dist/test/fuse/seq.test.js.map +0 -1
- package/dist/test/fuse/space.test.d.ts +0 -1
- package/dist/test/fuse/space.test.js +0 -136
- package/dist/test/fuse/space.test.js.map +0 -1
- package/dist/test/lambda/evaluation.test.d.ts +0 -1
- package/dist/test/lambda/evaluation.test.js +0 -24
- package/dist/test/lambda/evaluation.test.js.map +0 -1
- package/dist/test/lambda/lambda.test.d.ts +0 -1
- package/dist/test/lambda/lambda.test.js +0 -45
- package/dist/test/lambda/lambda.test.js.map +0 -1
- package/dist/test/lambdalize/lambdalize.test.d.ts +0 -1
- package/dist/test/lambdalize/lambdalize.test.js +0 -23
- package/dist/test/lambdalize/lambdalize.test.js.map +0 -1
- package/dist/test/lambdalize/unLambdalize.test.d.ts +0 -1
- package/dist/test/lambdalize/unLambdalize.test.js +0 -35
- package/dist/test/lambdalize/unLambdalize.test.js.map +0 -1
- package/dist/test/partial/partial.test.d.ts +0 -1
- package/dist/test/partial/partial.test.js +0 -35
- package/dist/test/partial/partial.test.js.map +0 -1
- package/dist/test/partialEval/peval.test.d.ts +0 -1
- package/dist/test/partialEval/peval.test.js +0 -29
- package/dist/test/partialEval/peval.test.js.map +0 -1
- package/dist/test/partialEval/unPeval.test.d.ts +0 -1
- package/dist/test/partialEval/unPeval.test.js +0 -40
- package/dist/test/partialEval/unPeval.test.js.map +0 -1
- package/dist/test/surface/AST.test.d.ts +0 -1
- package/dist/test/surface/AST.test.js +0 -41
- package/dist/test/surface/AST.test.js.map +0 -1
- package/dist/test/translate/translate.test.d.ts +0 -1
- package/dist/test/translate/translate.test.js +0 -45
- package/dist/test/translate/translate.test.js.map +0 -1
@@ -1,322 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
// Function to partially evaluate a CoreAST.TermNode
|
4
|
-
function partialEval(environment, termNode) {
|
5
|
-
switch (termNode.type) {
|
6
|
-
case 'const':
|
7
|
-
// For constants, return the same term node in PartialAST
|
8
|
-
return [environment, { type: 'const', value: termNode.value }];
|
9
|
-
case 'space':
|
10
|
-
// For space nodes, return the same term node in PartialAST
|
11
|
-
return [environment, { type: 'space', width: termNode.width }];
|
12
|
-
case 'declare':
|
13
|
-
// Partially evaluate the value expression
|
14
|
-
const [updatedEnvDeclare, evaluatedValueDeclare] = evaluateExpr(environment, termNode.value);
|
15
|
-
// Update environment with the evaluated value
|
16
|
-
updatedEnvDeclare.set(termNode.name.name, evaluatedValueDeclare);
|
17
|
-
// Return updated environment and PartialAST declare node
|
18
|
-
return [updatedEnvDeclare, { type: 'declare', name: termNode.name, value: [termNode.value, evaluatedValueDeclare] }];
|
19
|
-
case 'assign':
|
20
|
-
// Partially evaluate the value expression
|
21
|
-
const [updatedEnvAssign, evaluatedValueAssign] = evaluateExpr(environment, termNode.value);
|
22
|
-
// Update environment with the evaluated value
|
23
|
-
updatedEnvAssign.set(termNode.name.name, evaluatedValueAssign);
|
24
|
-
// Return updated environment and PartialAST assign node
|
25
|
-
return [updatedEnvAssign, { type: 'assign', name: termNode.name, value: [termNode.value, evaluatedValueAssign] }];
|
26
|
-
case 'exp':
|
27
|
-
// Partially evaluate the expression
|
28
|
-
const [updatedEnvExp, evaluatedExp] = evaluateExpr(environment, termNode.expression);
|
29
|
-
// Return updated environment and PartialAST exp node
|
30
|
-
return [updatedEnvExp, { type: 'exp', binding: [termNode.expression, evaluatedExp] }];
|
31
|
-
case 'seq':
|
32
|
-
// Partially evaluate each node in sequence
|
33
|
-
let updatedEnvSeq = environment;
|
34
|
-
const evaluatedNodesSeq = [];
|
35
|
-
for (const node of termNode.nodes) {
|
36
|
-
const [updatedEnvNode2, evaluatedNode] = partialEval(updatedEnvSeq, node);
|
37
|
-
evaluatedNodesSeq.push(evaluatedNode);
|
38
|
-
updatedEnvSeq = updatedEnvNode2;
|
39
|
-
}
|
40
|
-
// Return updated environment and PartialAST seq node
|
41
|
-
return [updatedEnvSeq, { type: 'seq', nodes: evaluatedNodesSeq }];
|
42
|
-
case 'ite':
|
43
|
-
// Partially evaluate the condition expression
|
44
|
-
const [updatedEnvIte, evaluatedCondition] = evaluateExpr(environment, termNode.condition);
|
45
|
-
if (evaluatedCondition === true) {
|
46
|
-
const [updatedEnvTrue, evaluatedTrueBranch] = partialEval(updatedEnvIte, termNode.trueBranch);
|
47
|
-
return [updatedEnvTrue, {
|
48
|
-
type: 'seq',
|
49
|
-
nodes: [
|
50
|
-
{
|
51
|
-
type: 'branchstart',
|
52
|
-
condition: [termNode.condition, evaluatedCondition],
|
53
|
-
trueBranch: termNode.trueBranch,
|
54
|
-
falseBranch: termNode.falseBranch
|
55
|
-
},
|
56
|
-
evaluatedTrueBranch,
|
57
|
-
{ type: 'branchend' }
|
58
|
-
]
|
59
|
-
}];
|
60
|
-
}
|
61
|
-
else if (evaluatedCondition === false) {
|
62
|
-
const [updatedEnvFalse, evaluatedFalseBranch] = partialEval(updatedEnvIte, termNode.falseBranch);
|
63
|
-
return [updatedEnvFalse, {
|
64
|
-
type: 'seq',
|
65
|
-
nodes: [
|
66
|
-
{
|
67
|
-
type: 'branchstart',
|
68
|
-
condition: [termNode.condition, evaluatedCondition],
|
69
|
-
trueBranch: termNode.trueBranch,
|
70
|
-
falseBranch: termNode.falseBranch
|
71
|
-
},
|
72
|
-
evaluatedFalseBranch,
|
73
|
-
{ type: 'branchend' }
|
74
|
-
]
|
75
|
-
}];
|
76
|
-
}
|
77
|
-
else {
|
78
|
-
throw new Error(`Condition does not evaluate to boolean: ${evaluatedCondition}`);
|
79
|
-
}
|
80
|
-
case 'loop':
|
81
|
-
const { lst, separator, front, rear, body } = termNode;
|
82
|
-
// Evaluate e_arr to get its value
|
83
|
-
const [updatedEnv, e_arr_value] = evaluateExpr(environment, lst);
|
84
|
-
// Case 1: e_arr 是一个空数组
|
85
|
-
if (Array.isArray(e_arr_value) && e_arr_value.length === 0) {
|
86
|
-
return [updatedEnv, {
|
87
|
-
type: 'seq',
|
88
|
-
nodes: [
|
89
|
-
{
|
90
|
-
type: 'loopfront',
|
91
|
-
lst: lst,
|
92
|
-
value: front.value,
|
93
|
-
body: body,
|
94
|
-
separator: separator
|
95
|
-
},
|
96
|
-
{
|
97
|
-
type: 'looprear',
|
98
|
-
lst: lst,
|
99
|
-
value: rear.value
|
100
|
-
}
|
101
|
-
]
|
102
|
-
}];
|
103
|
-
}
|
104
|
-
// Case 2: e_arr 有一个元素
|
105
|
-
else if (Array.isArray(e_arr_value) && e_arr_value.length === 1) {
|
106
|
-
const element = e_arr_value[0];
|
107
|
-
const variableName = body.variable.name; // Assuming lambda has a variable with a name
|
108
|
-
const updatedEnvironment = new Map(environment);
|
109
|
-
updatedEnvironment.set(variableName, element);
|
110
|
-
const [updatedEnv2, evaluatedBody] = partialEval(updatedEnvironment, body.body); // Evaluate t1 to t1'
|
111
|
-
return [updatedEnv2, {
|
112
|
-
type: 'seq',
|
113
|
-
nodes: [
|
114
|
-
{
|
115
|
-
type: 'loopfront',
|
116
|
-
lst: lst,
|
117
|
-
value: front.value,
|
118
|
-
body: body,
|
119
|
-
separator: separator
|
120
|
-
},
|
121
|
-
evaluatedBody,
|
122
|
-
{
|
123
|
-
type: 'looprear',
|
124
|
-
lst: lst,
|
125
|
-
value: rear.value
|
126
|
-
}
|
127
|
-
]
|
128
|
-
}];
|
129
|
-
}
|
130
|
-
// Case 3: e_arr 有多个元素
|
131
|
-
else if (Array.isArray(e_arr_value) && e_arr_value.length > 1) {
|
132
|
-
let updatedEnv = new Map(environment);
|
133
|
-
let currentNodes = [];
|
134
|
-
for (let i = 0; i < e_arr_value.length; i++) {
|
135
|
-
const element = e_arr_value[i];
|
136
|
-
const variableName = body.variable.name; // Assuming lambda has a variable with a name
|
137
|
-
updatedEnv.set(variableName, element);
|
138
|
-
const [updatedEnv2, evaluatedBody] = partialEval(updatedEnv, body.body); // Evaluate t1 to t1'
|
139
|
-
updatedEnv = updatedEnv2;
|
140
|
-
currentNodes.push({
|
141
|
-
type: 'lambda',
|
142
|
-
variable: body.variable,
|
143
|
-
body: evaluatedBody,
|
144
|
-
binding: [{ type: 'constant', value: element }, element],
|
145
|
-
marker: {
|
146
|
-
type: 'loopitem',
|
147
|
-
lst: lst
|
148
|
-
}
|
149
|
-
});
|
150
|
-
if (i < e_arr_value.length - 1) {
|
151
|
-
currentNodes.push(termNode.separator);
|
152
|
-
}
|
153
|
-
}
|
154
|
-
return [updatedEnv, {
|
155
|
-
type: 'seq',
|
156
|
-
nodes: [
|
157
|
-
{
|
158
|
-
type: 'loopfront',
|
159
|
-
lst: lst,
|
160
|
-
value: front.value,
|
161
|
-
body: body,
|
162
|
-
separator: separator
|
163
|
-
},
|
164
|
-
...currentNodes,
|
165
|
-
{
|
166
|
-
type: 'looprear',
|
167
|
-
lst: lst,
|
168
|
-
value: rear.value
|
169
|
-
}
|
170
|
-
]
|
171
|
-
}];
|
172
|
-
}
|
173
|
-
throw new Error(`Unsupported type or value for e_arr: ${typeof e_arr_value}`);
|
174
|
-
// case 'call':
|
175
|
-
// // Partially evaluate the function and arguments
|
176
|
-
// const [updatedEnvCall, evaluatedFunc] = partialEval(environment, termNode.func);
|
177
|
-
// const evaluatedArgs: { [key: string]: CoreAST.Expr } = {};
|
178
|
-
// for (const key in termNode.args) {
|
179
|
-
// if (termNode.args.hasOwnProperty(key)) {
|
180
|
-
// const [updatedEnvArg, evaluatedArg] = evaluateExpr(updatedEnvCall, termNode.args[key]);
|
181
|
-
// evaluatedArgs[key] = evaluatedArg;
|
182
|
-
// updatedEnvCall = updatedEnvArg;
|
183
|
-
// }
|
184
|
-
// }
|
185
|
-
// // Return updated environment and PartialAST call node
|
186
|
-
// return [updatedEnvCall, { type: 'call', func: evaluatedFunc, args: evaluatedArgs }];
|
187
|
-
case 'nop':
|
188
|
-
// For nop node, return the same term node in PartialAST
|
189
|
-
return [environment, { type: 'nop' }];
|
190
|
-
case 'bot':
|
191
|
-
// For bot node, return the same term node in PartialAST
|
192
|
-
return [environment, { type: 'bot' }];
|
193
|
-
case 'end':
|
194
|
-
// For end node, return the same term node in PartialAST
|
195
|
-
return [environment, { type: 'end' }];
|
196
|
-
default:
|
197
|
-
throw new Error(`Unhandled term node type: ${termNode.type}`);
|
198
|
-
}
|
199
|
-
}
|
200
|
-
exports.partialEval = partialEval;
|
201
|
-
// Function to evaluate expressions (Expr) and return updated environment and value
|
202
|
-
function evaluateExpr(environment, expr) {
|
203
|
-
switch (expr.type) {
|
204
|
-
case 'constant':
|
205
|
-
// Return the unchanged environment and the constant value
|
206
|
-
return [environment, expr.value];
|
207
|
-
case 'variable':
|
208
|
-
// Lookup the variable value in the environment
|
209
|
-
const varValue = environment.get(expr.name);
|
210
|
-
if (varValue === undefined) {
|
211
|
-
throw new Error(`Variable '${expr.name}' not found in environment`);
|
212
|
-
}
|
213
|
-
// Return the unchanged environment and the variable value
|
214
|
-
return [environment, varValue];
|
215
|
-
case 'binary':
|
216
|
-
// Evaluate left and right operands
|
217
|
-
let [envLeft, left] = evaluateExpr(environment, expr.left);
|
218
|
-
let [envRight, right] = evaluateExpr(envLeft, expr.right);
|
219
|
-
// Perform binary operation based on the operator
|
220
|
-
switch (expr.operator) {
|
221
|
-
case '+':
|
222
|
-
return [envRight, left + right];
|
223
|
-
case '-':
|
224
|
-
return [envRight, left - right];
|
225
|
-
case '*':
|
226
|
-
return [envRight, left * right];
|
227
|
-
case '/':
|
228
|
-
return [envRight, left / right];
|
229
|
-
case '&&':
|
230
|
-
return [envRight, left && right];
|
231
|
-
case '||':
|
232
|
-
return [envRight, left || right];
|
233
|
-
case '>':
|
234
|
-
return [envRight, left > right];
|
235
|
-
case '<':
|
236
|
-
return [envRight, left < right];
|
237
|
-
case '>=':
|
238
|
-
return [envRight, left >= right];
|
239
|
-
case '<=':
|
240
|
-
return [envRight, left <= right];
|
241
|
-
default:
|
242
|
-
throw new Error(`Unsupported binary operator`);
|
243
|
-
}
|
244
|
-
case 'unary':
|
245
|
-
// Evaluate operand
|
246
|
-
let [envOperand, operand] = evaluateExpr(environment, expr.operand);
|
247
|
-
// Perform unary operation based on the operator
|
248
|
-
switch (expr.operator) {
|
249
|
-
case 'not':
|
250
|
-
return [envOperand, !operand];
|
251
|
-
default:
|
252
|
-
throw new Error(`Unsupported unary operator`);
|
253
|
-
}
|
254
|
-
case 'field':
|
255
|
-
// Evaluate the object
|
256
|
-
let [envObject, objectValue] = evaluateExpr(environment, expr.object);
|
257
|
-
// Access the field in the object
|
258
|
-
if (typeof objectValue !== 'string' && (typeof objectValue !== 'object' || objectValue === null)) {
|
259
|
-
throw new Error(`Cannot access field '${expr.field}' from non-object`);
|
260
|
-
}
|
261
|
-
const fieldValue = objectValue[expr.field];
|
262
|
-
if (fieldValue === undefined) {
|
263
|
-
throw new Error(`Field '${expr.field}' not found in object`);
|
264
|
-
}
|
265
|
-
// Return the unchanged environment and the field value
|
266
|
-
return [envObject, fieldValue];
|
267
|
-
case 'array':
|
268
|
-
// Evaluate elements of the array
|
269
|
-
let evaluatedElements = [];
|
270
|
-
let currentEnv = environment;
|
271
|
-
for (const element of expr.elements) {
|
272
|
-
let [updatedEnv, evaluatedElement] = evaluateExpr(currentEnv, element);
|
273
|
-
evaluatedElements.push(evaluatedElement);
|
274
|
-
currentEnv = updatedEnv;
|
275
|
-
}
|
276
|
-
// Return the updated environment and the evaluated array
|
277
|
-
return [currentEnv, evaluatedElements];
|
278
|
-
case 'object':
|
279
|
-
// Evaluate fields of the object
|
280
|
-
let evaluatedFields = {};
|
281
|
-
let objEnv = environment;
|
282
|
-
for (const key in expr.fields) {
|
283
|
-
if (expr.fields.hasOwnProperty(key)) {
|
284
|
-
let [updatedEnv, evaluatedValue] = evaluateExpr(objEnv, expr.fields[key]);
|
285
|
-
evaluatedFields[key] = evaluatedValue;
|
286
|
-
objEnv = updatedEnv;
|
287
|
-
}
|
288
|
-
}
|
289
|
-
// Return the updated environment and the evaluated object
|
290
|
-
return [objEnv, evaluatedFields];
|
291
|
-
case 'freeze':
|
292
|
-
// Evaluate the expression and return it without modification
|
293
|
-
return evaluateExpr(environment, expr.expression);
|
294
|
-
default:
|
295
|
-
throw new Error(`Unhandled expression type`);
|
296
|
-
}
|
297
|
-
}
|
298
|
-
exports.evaluateExpr = evaluateExpr;
|
299
|
-
// 定义 flatten 函数 for PartialAST
|
300
|
-
function flatten(termNode) {
|
301
|
-
if (termNode.type === 'seq') {
|
302
|
-
// 如果 termNode 是 seq 类型,则递归处理每个元素,并返回新的 seq 节点
|
303
|
-
const flattenedElements = termNode.nodes.map(element => flatten(element));
|
304
|
-
return { type: 'seq', nodes: flattenedElements.flatMap(seqNode => {
|
305
|
-
if (seqNode.type === 'seq') {
|
306
|
-
return seqNode.nodes;
|
307
|
-
}
|
308
|
-
else {
|
309
|
-
return [seqNode];
|
310
|
-
}
|
311
|
-
}) };
|
312
|
-
}
|
313
|
-
else if (termNode.type === 'lambda') {
|
314
|
-
return Object.assign(Object.assign({}, termNode), { body: flatten(termNode.body) });
|
315
|
-
}
|
316
|
-
else {
|
317
|
-
// 其他情况下,直接返回
|
318
|
-
return termNode;
|
319
|
-
}
|
320
|
-
}
|
321
|
-
exports.flatten = flatten;
|
322
|
-
//# sourceMappingURL=peval.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"peval.js","sourceRoot":"","sources":["../../../src/partialEval/peval.ts"],"names":[],"mappings":"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"}
|