bit2 0.0.1

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.
Files changed (138) hide show
  1. package/dist/bit2.d.ts +229 -0
  2. package/dist/bit2.js +1 -0
  3. package/dist/src/bx/biEval.d.ts +6 -0
  4. package/dist/src/bx/biEval.js +59 -0
  5. package/dist/src/bx/biEval.js.map +1 -0
  6. package/dist/src/common/Exp.d.ts +53 -0
  7. package/dist/src/common/Exp.js +44 -0
  8. package/dist/src/common/Exp.js.map +1 -0
  9. package/dist/src/common/PrettyPrint.d.ts +4 -0
  10. package/dist/src/common/PrettyPrint.js +32 -0
  11. package/dist/src/common/PrettyPrint.js.map +1 -0
  12. package/dist/src/common/Print.d.ts +3 -0
  13. package/dist/src/common/Print.js +73 -0
  14. package/dist/src/common/Print.js.map +1 -0
  15. package/dist/src/core/AST.d.ts +92 -0
  16. package/dist/src/core/AST.js +47 -0
  17. package/dist/src/core/AST.js.map +1 -0
  18. package/dist/src/core/PrettyPrint.d.ts +2 -0
  19. package/dist/src/core/PrettyPrint.js +64 -0
  20. package/dist/src/core/PrettyPrint.js.map +1 -0
  21. package/dist/src/core/Print.d.ts +3 -0
  22. package/dist/src/core/Print.js +77 -0
  23. package/dist/src/core/Print.js.map +1 -0
  24. package/dist/src/fuse/Fuse.d.ts +23 -0
  25. package/dist/src/fuse/Fuse.js +1436 -0
  26. package/dist/src/fuse/Fuse.js.map +1 -0
  27. package/dist/src/fuse/Print.d.ts +2 -0
  28. package/dist/src/fuse/Print.js +22 -0
  29. package/dist/src/fuse/Print.js.map +1 -0
  30. package/dist/src/fuse/Update.d.ts +19 -0
  31. package/dist/src/fuse/Update.js +3 -0
  32. package/dist/src/fuse/Update.js.map +1 -0
  33. package/dist/src/lambda/AST.d.ts +23 -0
  34. package/dist/src/lambda/AST.js +3 -0
  35. package/dist/src/lambda/AST.js.map +1 -0
  36. package/dist/src/lambda/Evaluation.d.ts +4 -0
  37. package/dist/src/lambda/Evaluation.js +98 -0
  38. package/dist/src/lambda/Evaluation.js.map +1 -0
  39. package/dist/src/lambda/Print.d.ts +2 -0
  40. package/dist/src/lambda/Print.js +31 -0
  41. package/dist/src/lambda/Print.js.map +1 -0
  42. package/dist/src/lambdalize/lambdalize.d.ts +3 -0
  43. package/dist/src/lambdalize/lambdalize.js +94 -0
  44. package/dist/src/lambdalize/lambdalize.js.map +1 -0
  45. package/dist/src/lambdalize/unLambdalize.d.ts +3 -0
  46. package/dist/src/lambdalize/unLambdalize.js +59 -0
  47. package/dist/src/lambdalize/unLambdalize.js.map +1 -0
  48. package/dist/src/partial/AST.d.ts +86 -0
  49. package/dist/src/partial/AST.js +3 -0
  50. package/dist/src/partial/AST.js.map +1 -0
  51. package/dist/src/partial/Print.d.ts +6 -0
  52. package/dist/src/partial/Print.js +93 -0
  53. package/dist/src/partial/Print.js.map +1 -0
  54. package/dist/src/partialEval/peval.d.ts +11 -0
  55. package/dist/src/partialEval/peval.js +322 -0
  56. package/dist/src/partialEval/peval.js.map +1 -0
  57. package/dist/src/partialEval/unpeval.d.ts +4 -0
  58. package/dist/src/partialEval/unpeval.js +360 -0
  59. package/dist/src/partialEval/unpeval.js.map +1 -0
  60. package/dist/src/surface/AST.d.ts +57 -0
  61. package/dist/src/surface/AST.js +3 -0
  62. package/dist/src/surface/AST.js.map +1 -0
  63. package/dist/src/surface/Parser.d.ts +4 -0
  64. package/dist/src/surface/Parser.js +314 -0
  65. package/dist/src/surface/Parser.js.map +1 -0
  66. package/dist/src/translate/Translate.d.ts +3 -0
  67. package/dist/src/translate/Translate.js +91 -0
  68. package/dist/src/translate/Translate.js.map +1 -0
  69. package/dist/src/utils/Utils.d.ts +2 -0
  70. package/dist/src/utils/Utils.js +7 -0
  71. package/dist/src/utils/Utils.js.map +1 -0
  72. package/dist/test/bx/biEval.test.d.ts +1 -0
  73. package/dist/test/bx/biEval.test.js +41 -0
  74. package/dist/test/bx/biEval.test.js.map +1 -0
  75. package/dist/test/bx/test.d.ts +1 -0
  76. package/dist/test/bx/test.js +29 -0
  77. package/dist/test/bx/test.js.map +1 -0
  78. package/dist/test/core/0.simple.test.d.ts +4 -0
  79. package/dist/test/core/0.simple.test.js +68 -0
  80. package/dist/test/core/0.simple.test.js.map +1 -0
  81. package/dist/test/core/1.core.test.d.ts +2 -0
  82. package/dist/test/core/1.core.test.js +30 -0
  83. package/dist/test/core/1.core.test.js.map +1 -0
  84. package/dist/test/core/core.test.d.ts +1 -0
  85. package/dist/test/core/core.test.js +28 -0
  86. package/dist/test/core/core.test.js.map +1 -0
  87. package/dist/test/fuse/branchnop.test.d.ts +1 -0
  88. package/dist/test/fuse/branchnop.test.js +47 -0
  89. package/dist/test/fuse/branchnop.test.js.map +1 -0
  90. package/dist/test/fuse/bulk.test.d.ts +1 -0
  91. package/dist/test/fuse/bulk.test.js +111 -0
  92. package/dist/test/fuse/bulk.test.js.map +1 -0
  93. package/dist/test/fuse/const.test.d.ts +1 -0
  94. package/dist/test/fuse/const.test.js +118 -0
  95. package/dist/test/fuse/const.test.js.map +1 -0
  96. package/dist/test/fuse/exp.test.d.ts +1 -0
  97. package/dist/test/fuse/exp.test.js +225 -0
  98. package/dist/test/fuse/exp.test.js.map +1 -0
  99. package/dist/test/fuse/lambda.test.d.ts +1 -0
  100. package/dist/test/fuse/lambda.test.js +139 -0
  101. package/dist/test/fuse/lambda.test.js.map +1 -0
  102. package/dist/test/fuse/loop.test.d.ts +1 -0
  103. package/dist/test/fuse/loop.test.js +39 -0
  104. package/dist/test/fuse/loop.test.js.map +1 -0
  105. package/dist/test/fuse/seq.test.d.ts +1 -0
  106. package/dist/test/fuse/seq.test.js +64 -0
  107. package/dist/test/fuse/seq.test.js.map +1 -0
  108. package/dist/test/fuse/space.test.d.ts +1 -0
  109. package/dist/test/fuse/space.test.js +136 -0
  110. package/dist/test/fuse/space.test.js.map +1 -0
  111. package/dist/test/lambda/evaluation.test.d.ts +1 -0
  112. package/dist/test/lambda/evaluation.test.js +24 -0
  113. package/dist/test/lambda/evaluation.test.js.map +1 -0
  114. package/dist/test/lambda/lambda.test.d.ts +1 -0
  115. package/dist/test/lambda/lambda.test.js +45 -0
  116. package/dist/test/lambda/lambda.test.js.map +1 -0
  117. package/dist/test/lambdalize/lambdalize.test.d.ts +1 -0
  118. package/dist/test/lambdalize/lambdalize.test.js +23 -0
  119. package/dist/test/lambdalize/lambdalize.test.js.map +1 -0
  120. package/dist/test/lambdalize/unLambdalize.test.d.ts +1 -0
  121. package/dist/test/lambdalize/unLambdalize.test.js +35 -0
  122. package/dist/test/lambdalize/unLambdalize.test.js.map +1 -0
  123. package/dist/test/partial/partial.test.d.ts +1 -0
  124. package/dist/test/partial/partial.test.js +35 -0
  125. package/dist/test/partial/partial.test.js.map +1 -0
  126. package/dist/test/partialEval/peval.test.d.ts +1 -0
  127. package/dist/test/partialEval/peval.test.js +29 -0
  128. package/dist/test/partialEval/peval.test.js.map +1 -0
  129. package/dist/test/partialEval/unPeval.test.d.ts +1 -0
  130. package/dist/test/partialEval/unPeval.test.js +40 -0
  131. package/dist/test/partialEval/unPeval.test.js.map +1 -0
  132. package/dist/test/surface/AST.test.d.ts +1 -0
  133. package/dist/test/surface/AST.test.js +41 -0
  134. package/dist/test/surface/AST.test.js.map +1 -0
  135. package/dist/test/translate/translate.test.d.ts +1 -0
  136. package/dist/test/translate/translate.test.js +45 -0
  137. package/dist/test/translate/translate.test.js.map +1 -0
  138. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fuse.js","sourceRoot":"","sources":["../../../src/fuse/Fuse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { UpdateOperation } from "./Update";
2
+ export declare function operationToStr(op: UpdateOperation): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Print function
4
+ function operationToStr(op) {
5
+ switch (op.type) {
6
+ case 'insert':
7
+ return `insert "${op.str}" at ${op.position}`;
8
+ case 'delete':
9
+ return `delete "${op.str}" at ${op.position}`;
10
+ case 'replace':
11
+ return `replace "${op.str1}" with "${op.str2}" at ${op.position}`;
12
+ case 'bulk':
13
+ const bulkOps = op.operations.map(operationToStr).join(', ');
14
+ return `bulk(${bulkOps})`;
15
+ case 'id':
16
+ return 'id';
17
+ default:
18
+ throw new Error(`Unhandled operation type: ${op.type}`);
19
+ }
20
+ }
21
+ exports.operationToStr = operationToStr;
22
+ //# sourceMappingURL=Print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Print.js","sourceRoot":"","sources":["../../../src/fuse/Print.ts"],"names":[],"mappings":";;AAEA,iBAAiB;AACjB,SAAgB,cAAc,CAAC,EAAmB;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,QAAQ;YACX,OAAO,WAAW,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,WAAW,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAChD,KAAK,SAAS;YACZ,OAAO,YAAY,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpE,KAAK,MAAM;YACT,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,QAAQ,OAAO,GAAG,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd;YACE,MAAM,IAAI,KAAK,CAAC,6BAA8B,EAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;KAChF;AACH,CAAC;AAhBD,wCAgBC"}
@@ -0,0 +1,19 @@
1
+ export type UpdateOperation = {
2
+ type: 'insert';
3
+ str: string;
4
+ position: number;
5
+ } | {
6
+ type: 'delete';
7
+ str: string;
8
+ position: number;
9
+ } | {
10
+ type: 'replace';
11
+ str1: string;
12
+ str2: string;
13
+ position: number;
14
+ } | {
15
+ type: 'bulk';
16
+ operations: UpdateOperation[];
17
+ } | {
18
+ type: 'id';
19
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Update.js","sourceRoot":"","sources":["../../../src/fuse/Update.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import * as PartilAST from "../partial/AST";
2
+ import { Variable } from "../common/Exp";
3
+ import * as CoreAST from "../core/AST";
4
+ export type TermNode = PartilAST.ConstNode | PartilAST.SpaceNode | CoreAST.SepNode | PartilAST.ExpNode | SeqNode | LambdaAppNode | PartilAST.BranchStartNode | PartilAST.BranchEndNode | PartilAST.LoopFrontNode | PartilAST.LoopRearNode | PartilAST.EndNode | PartilAST.NopNode | PartilAST.BotNode | PartilAST.CallStartNode | PartilAST.CallEndNode;
5
+ export interface SeqNode {
6
+ type: 'seq';
7
+ nodes: TermNode[];
8
+ }
9
+ export interface LambdaAppNode {
10
+ type: 'lambda';
11
+ variable: Variable;
12
+ body: TermNode;
13
+ binding: PartilAST.Binding;
14
+ marker: Marker;
15
+ }
16
+ type Marker = PartilAST.LoopItemMarker | DeclareMarker | AssignMarker;
17
+ export interface DeclareMarker {
18
+ type: 'declare';
19
+ }
20
+ export interface AssignMarker {
21
+ type: 'assign';
22
+ }
23
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AST.js","sourceRoot":"","sources":["../../../src/lambda/AST.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Value } from "../partial/AST";
2
+ import * as LambdaAST from "./AST";
3
+ export declare function evaluateTermNode(node: LambdaAST.TermNode): string;
4
+ export declare function printValue(value: Value): string;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function evaluateTermNode(node) {
4
+ switch (node.type) {
5
+ case 'const':
6
+ return node.value;
7
+ case 'sep':
8
+ return node.value;
9
+ case 'space':
10
+ return ' '.repeat(node.width);
11
+ case 'exp':
12
+ return String(evaluateBinding(node.binding));
13
+ case 'seq':
14
+ return node.nodes.map(subNode => evaluateTermNode(subNode)).join('');
15
+ case 'lambda':
16
+ return evaluateTermNode(node.body);
17
+ case 'branchstart':
18
+ case 'branchend':
19
+ case 'end':
20
+ case 'bot':
21
+ case 'nop':
22
+ return ''; // 返回空字符串,表示这些节点在输出中没有表示
23
+ case 'loopfront':
24
+ case 'looprear':
25
+ return node.value;
26
+ default:
27
+ throw new Error(`Unhandled term node type: ${node.type}`);
28
+ }
29
+ }
30
+ exports.evaluateTermNode = evaluateTermNode;
31
+ function evaluateConstant(constant) {
32
+ const { value } = constant;
33
+ if (value === null) {
34
+ return 'null';
35
+ }
36
+ else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'string') {
37
+ return String(value);
38
+ }
39
+ else if (Array.isArray(value)) {
40
+ return `[${value.map(item => String(item)).join(', ')}]`;
41
+ }
42
+ else if (typeof value === 'object' && value.type === 'object') {
43
+ const fields = Object.entries(value.fields).map(([key, val]) => `${key}: ${evaluateConstant(val)}`);
44
+ return `{ ${fields.join(', ')} }`;
45
+ }
46
+ else {
47
+ throw new Error(`Unhandled constant value type: ${typeof value}`);
48
+ }
49
+ }
50
+ function evaluateBinding(binding) {
51
+ let value = binding[1];
52
+ return printValue(value);
53
+ }
54
+ function printValue(value) {
55
+ if (value === null) {
56
+ return 'null';
57
+ }
58
+ else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'string') {
59
+ return value.toString();
60
+ }
61
+ else if (value.type === 'object') {
62
+ const objectValue = value;
63
+ let result = '{';
64
+ for (const key in objectValue.fields) {
65
+ if (objectValue.fields.hasOwnProperty(key)) {
66
+ result += `${key}: ${printValue(objectValue.fields[key])}, `;
67
+ }
68
+ }
69
+ if (result.length > 1) {
70
+ result = result.slice(0, -2); // 移除最后的逗号和空格
71
+ }
72
+ result += '}';
73
+ return result;
74
+ }
75
+ else if (Array.isArray(value)) {
76
+ const arrayValue = value;
77
+ let result = '[';
78
+ for (const element of arrayValue) {
79
+ result += `${printValue(element)}, `;
80
+ }
81
+ if (result.length > 1) {
82
+ result = result.slice(0, -2); // 移除最后的逗号和空格
83
+ }
84
+ result += ']';
85
+ return result;
86
+ }
87
+ else {
88
+ throw new Error(`Unhandled value type: ${typeof value}`);
89
+ }
90
+ }
91
+ exports.printValue = printValue;
92
+ function isObjectValue(value) {
93
+ return value.type === 'object';
94
+ }
95
+ function isArrayValue(value) {
96
+ return Array.isArray(value);
97
+ }
98
+ //# sourceMappingURL=Evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Evaluation.js","sourceRoot":"","sources":["../../../src/lambda/Evaluation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import * as LambdaAST from "./AST";
2
+ export declare function printNode(node: LambdaAST.TermNode, indent?: string): void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importStar = (this && this.__importStar) || function (mod) {
3
+ if (mod && mod.__esModule) return mod;
4
+ var result = {};
5
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6
+ result["default"] = mod;
7
+ return result;
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const PartialPrint = __importStar(require("../partial/Print"));
11
+ // Function to print LambdaAST nodes
12
+ function printNode(node, indent = "") {
13
+ switch (node.type) {
14
+ case 'lambda':
15
+ console.log(`${indent}LambdaAppNode:`);
16
+ console.log(`${indent} Variable: ${node.variable.name}`);
17
+ console.log(`${indent} Binding:`);
18
+ PartialPrint.printBinding(node.binding, indent + " ");
19
+ console.log(`${indent} Marker: ${node.marker.type}`);
20
+ console.log(`${indent} Body:`);
21
+ printNode(node.body, indent + " ");
22
+ break;
23
+ case 'seq':
24
+ node.nodes.forEach(n => printNode(n, indent + ' '));
25
+ break;
26
+ default:
27
+ PartialPrint.printNode(node, indent);
28
+ }
29
+ }
30
+ exports.printNode = printNode;
31
+ //# sourceMappingURL=Print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Print.js","sourceRoot":"","sources":["../../../src/lambda/Print.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+DAAiD;AAGjD,oCAAoC;AACpC,SAAgB,SAAS,CAAC,IAAwB,EAAE,SAAiB,EAAE;IACrE,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,gBAAgB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;YACnC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACtC,MAAM;QACR,KAAK,KAAK;YACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;YACrD,MAAM;QACR;YACE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACxC;AACH,CAAC;AAjBD,8BAiBC"}
@@ -0,0 +1,3 @@
1
+ import * as PartialAST from "../partial/AST";
2
+ import * as LambdaAST from "../lambda/AST";
3
+ export declare function lambdalize(partialAST: PartialAST.TermNode): LambdaAST.TermNode;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function lambdalize(partialAST) {
4
+ let nodeType = partialAST.type;
5
+ if (nodeType === 'seq') {
6
+ let seqNode = partialAST;
7
+ return lambdalizeSeq(seqNode);
8
+ }
9
+ else if (nodeType === "declare" || nodeType === 'assign') {
10
+ throw new Error("declare|assign node shall not be visible here.");
11
+ }
12
+ else if (nodeType === 'lambda') {
13
+ let lambdaAppNode = partialAST;
14
+ let body = lambdaAppNode.body;
15
+ let translatedBody = lambdalize(body);
16
+ let newLambdaAppNode = {
17
+ type: 'lambda',
18
+ variable: lambdaAppNode.variable,
19
+ body: translatedBody,
20
+ binding: lambdaAppNode.binding,
21
+ marker: lambdaAppNode.marker
22
+ };
23
+ return newLambdaAppNode;
24
+ }
25
+ else {
26
+ // @ts-ignore
27
+ return partialAST;
28
+ }
29
+ }
30
+ exports.lambdalize = lambdalize;
31
+ function lambdalizeSeq(seqNode) {
32
+ let nodes = seqNode.nodes;
33
+ let newNodes = [];
34
+ for (let i = 0; i < nodes.length; i++) {
35
+ let currentNode = nodes[i];
36
+ if (currentNode.type === 'declare' || currentNode.type === 'assign') {
37
+ let declareNode = currentNode;
38
+ let [innerNodes, nextIndex] = extractNodesUntilBranchEndOrLast(nodes, i + 1);
39
+ let { nodes: updatedInnerNodes } = lambdalizeSeq({ type: 'seq', nodes: innerNodes });
40
+ let lastNode = updatedInnerNodes.pop();
41
+ if (lastNode === undefined) {
42
+ // 数组为空,没有最后一个元素
43
+ throw new Error("Expected the last element to be a BranchEndNode, but the array was empty.");
44
+ }
45
+ else if ((lastNode === null || lastNode === void 0 ? void 0 : lastNode.type) !== 'branchend') {
46
+ updatedInnerNodes.push(lastNode);
47
+ }
48
+ let lambdaNode = {
49
+ type: 'lambda',
50
+ variable: declareNode.name,
51
+ body: { type: 'seq', nodes: updatedInnerNodes },
52
+ binding: declareNode.value,
53
+ marker: { type: currentNode.type }
54
+ };
55
+ newNodes.push(lambdaNode);
56
+ if ((lastNode === null || lastNode === void 0 ? void 0 : lastNode.type) === 'branchend') {
57
+ newNodes.push({ type: 'branchend' });
58
+ }
59
+ i = nextIndex; // Skip to the index after the matched BranchEndNode
60
+ }
61
+ else {
62
+ newNodes.push(lambdalize(currentNode));
63
+ }
64
+ }
65
+ return { type: 'seq', nodes: newNodes };
66
+ }
67
+ function extractNodesUntilBranchEndOrLast(nodes, startIndex) {
68
+ let innerNodes = [];
69
+ let branchStartCount = 0;
70
+ for (let i = startIndex; i < nodes.length; i++) {
71
+ // branch
72
+ if (nodes[i].type === 'branchstart') {
73
+ branchStartCount++;
74
+ }
75
+ else if (nodes[i].type === 'branchend') {
76
+ if (branchStartCount === 0) {
77
+ innerNodes.push(nodes[i]);
78
+ return [innerNodes, i];
79
+ }
80
+ else {
81
+ branchStartCount--;
82
+ }
83
+ }
84
+ // program
85
+ if (nodes[i].type === 'end') {
86
+ innerNodes.push(nodes[i]);
87
+ return [innerNodes, i];
88
+ }
89
+ // normal nodes, even till end of the sequence
90
+ innerNodes.push(nodes[i]);
91
+ }
92
+ return [innerNodes, nodes.length - 1];
93
+ }
94
+ //# sourceMappingURL=lambdalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdalize.js","sourceRoot":"","sources":["../../../src/lambdalize/lambdalize.ts"],"names":[],"mappings":";;AAIA,SAAgB,UAAU,CAAC,UAA+B;IACxD,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;IAC/B,IAAG,QAAQ,KAAK,KAAK,EAAC;QACpB,IAAI,OAAO,GAAG,UAAgC,CAAC;QAC/C,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;SAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;QAC1D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACnE;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;QAChC,IAAI,aAAa,GAAG,UAAsC,CAAC;QAC3D,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;QAC9B,IAAI,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,gBAAgB,GAA6B;YAC/C,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC;QACF,OAAO,gBAAgB,CAAC;KACzB;SAAM;QACL,aAAa;QACb,OAAO,UAAU,CAAC;KACnB;AACH,CAAC;AAvBD,gCAuBC;AAGD,SAAS,aAAa,CAAC,OAA2B;IAChD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,QAAQ,GAAyB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjE,IAAI,WAAW,GAAG,WAA2D,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,gCAAgC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,EAAC,KAAK,EAAE,iBAAiB,EAAC,GAAsB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACtG,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;YACvC,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,gBAAgB;gBAChB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;aAC9F;iBAAM,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,WAAW,EAAE;gBACzC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAClC;YACD,IAAI,UAAU,GAA4B;gBACtC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI,EAAE,EAAC,IAAI,EAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAC;gBAC5C,OAAO,EAAE,WAAW,CAAC,KAAK;gBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE;aACrC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,WAAW,EAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;aACtC;YACD,CAAC,GAAG,SAAS,CAAC,CAAC,oDAAoD;SACtE;aAAM;YACH,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SAC1C;KACJ;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAGD,SAAS,gCAAgC,CAAC,KAA4B,EAAE,UAAkB;IACxF,IAAI,UAAU,GAA0B,EAAE,CAAC;IAC3C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,SAAS;QACT,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;YACjC,gBAAgB,EAAE,CAAC;SACtB;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;YACtC,IAAI,gBAAgB,KAAK,CAAC,EAAE;gBACxB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aAC1B;iBAAM;gBACH,gBAAgB,EAAE,CAAC;aACtB;SACJ;QACD,WAAW;QACX,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SACxB;QACH,8CAA8C;QAC9C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3B;IACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as LambdaAST from "../lambda/AST";
2
+ import * as PartialAST from "../partial/AST";
3
+ export declare function unLambdalize(lambdaNode: LambdaAST.TermNode): PartialAST.TermNode;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Define the unLambdalize function
4
+ function unLambdalize(lambdaNode) {
5
+ switch (lambdaNode.type) {
6
+ case 'lambda': {
7
+ const { variable, body, binding, marker } = lambdaNode;
8
+ let newBody;
9
+ switch (marker.type) {
10
+ case 'declare': {
11
+ // Apply the [T-I-Declare] rule
12
+ newBody = unLambdalize(body);
13
+ return {
14
+ type: 'seq',
15
+ nodes: [
16
+ {
17
+ type: 'declare',
18
+ name: variable,
19
+ value: binding,
20
+ },
21
+ newBody,
22
+ ],
23
+ };
24
+ }
25
+ case 'assign': {
26
+ // Apply the [T-I-Assign] rule
27
+ newBody = unLambdalize(body);
28
+ return {
29
+ type: 'seq',
30
+ nodes: [
31
+ {
32
+ type: 'assign',
33
+ name: variable,
34
+ value: binding,
35
+ },
36
+ newBody,
37
+ ],
38
+ };
39
+ }
40
+ default: {
41
+ return { type: 'lambda', variable: variable, body: unLambdalize(body), binding: binding, marker: marker };
42
+ }
43
+ }
44
+ }
45
+ // Recursively handle other node types
46
+ case 'seq': {
47
+ return {
48
+ type: 'seq',
49
+ nodes: lambdaNode.nodes.map(unLambdalize),
50
+ };
51
+ }
52
+ default: {
53
+ // Return the node unchanged if it doesn't match any transformation rules
54
+ return lambdaNode;
55
+ }
56
+ }
57
+ }
58
+ exports.unLambdalize = unLambdalize;
59
+ //# sourceMappingURL=unLambdalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unLambdalize.js","sourceRoot":"","sources":["../../../src/lambdalize/unLambdalize.ts"],"names":[],"mappings":";;AAGA,mCAAmC;AACnC,SAAgB,YAAY,CAAC,UAA8B;IACzD,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;YACvD,IAAI,OAA4B,CAAC;YAEjC,QAAQ,MAAM,CAAC,IAAI,EAAE;gBACnB,KAAK,SAAS,CAAC,CAAC;oBACd,+BAA+B;oBAC/B,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO;wBACL,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,SAAS;gCACf,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,OAAO;6BACf;4BACD,OAAO;yBACR;qBACF,CAAC;iBACH;gBAED,KAAK,QAAQ,CAAC,CAAC;oBACb,8BAA8B;oBAC9B,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO;wBACL,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,OAAO;6BACf;4BACD,OAAO;yBACR;qBACF,CAAC;iBACH;gBAED,OAAO,CAAC,CAAC;oBACP,OAAO,EAAC,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,EAAE,CAAA;iBACrG;aACF;SACF;QAED,sCAAsC;QACtC,KAAK,KAAK,CAAC,CAAC;YACV,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;aAC1C,CAAC;SACH;QAED,OAAO,CAAC,CAAC;YACP,yEAAyE;YACzE,OAAO,UAAiC,CAAC;SAC1C;KACF;AACH,CAAC;AA1DD,oCA0DC"}
@@ -0,0 +1,86 @@
1
+ import * as CoreAST from "../core/AST";
2
+ import { Expr, Variable } from "../common/Exp";
3
+ export type TermNode = ConstNode | SpaceNode | DeclareNode | AssignNode | ExpNode | NopNode | SeqNode | BranchStartNode | BranchEndNode | CoreAST.SepNode | LambdaAppNode | LoopFrontNode | LoopRearNode | EndNode | BotNode | CallStartNode | CallEndNode;
4
+ export interface ConstNode {
5
+ type: 'const';
6
+ value: string;
7
+ }
8
+ export interface SpaceNode {
9
+ type: 'space';
10
+ width: number;
11
+ }
12
+ export interface DeclareNode {
13
+ type: 'declare';
14
+ name: Variable;
15
+ value: Binding;
16
+ }
17
+ export interface AssignNode {
18
+ type: 'assign';
19
+ name: Variable;
20
+ value: Binding;
21
+ }
22
+ export interface ExpNode {
23
+ type: 'exp';
24
+ binding: Binding;
25
+ }
26
+ export interface NopNode {
27
+ type: 'nop';
28
+ }
29
+ export interface SeqNode {
30
+ type: 'seq';
31
+ nodes: TermNode[];
32
+ }
33
+ export interface BranchStartNode {
34
+ type: 'branchstart';
35
+ condition: Binding;
36
+ trueBranch: CoreAST.TermNode;
37
+ falseBranch: CoreAST.TermNode;
38
+ }
39
+ export interface BranchEndNode {
40
+ type: 'branchend';
41
+ }
42
+ export interface LambdaAppNode {
43
+ type: 'lambda';
44
+ variable: Variable;
45
+ body: TermNode;
46
+ binding: Binding;
47
+ marker: Marker;
48
+ }
49
+ export type Marker = LoopItemMarker;
50
+ export interface LoopItemMarker {
51
+ type: 'loopitem';
52
+ lst: Expr;
53
+ }
54
+ export interface LoopFrontNode {
55
+ type: 'loopfront';
56
+ lst: Expr;
57
+ value: string;
58
+ body: CoreAST.Lambda;
59
+ separator: CoreAST.SepNode;
60
+ }
61
+ export interface LoopRearNode {
62
+ type: 'looprear';
63
+ lst: Expr;
64
+ value: string;
65
+ }
66
+ export interface EndNode {
67
+ type: 'end';
68
+ }
69
+ export interface BotNode {
70
+ type: 'bot';
71
+ }
72
+ export interface CallStartNode {
73
+ type: 'callstart';
74
+ name: string;
75
+ }
76
+ export interface CallEndNode {
77
+ type: 'callend';
78
+ }
79
+ export type Binding = [Expr, Value];
80
+ export type Value = number | boolean | string | null | ObjectValue | Value[];
81
+ export interface ObjectValue {
82
+ type: 'object';
83
+ fields: {
84
+ [key: string]: any;
85
+ };
86
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AST.js","sourceRoot":"","sources":["../../../src/partial/AST.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { TermNode, Marker, Value } from '../../src/partial/AST';
2
+ import { Expr } from "../common/Exp";
3
+ export declare function printNode(node: TermNode, indent?: string): void;
4
+ export declare function printBinding(binding: [Expr, Value], indent: string): void;
5
+ export declare function printValue(value: Value, indent: string): void;
6
+ export declare function printMarker(marker: Marker, indent?: string): void;