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.
Files changed (113) hide show
  1. package/package.json +4 -2
  2. package/dist/src/bx/biEval.js +0 -59
  3. package/dist/src/bx/biEval.js.map +0 -1
  4. package/dist/src/common/Exp.js +0 -44
  5. package/dist/src/common/Exp.js.map +0 -1
  6. package/dist/src/common/PrettyPrint.js +0 -32
  7. package/dist/src/common/PrettyPrint.js.map +0 -1
  8. package/dist/src/common/Print.js +0 -73
  9. package/dist/src/common/Print.js.map +0 -1
  10. package/dist/src/core/AST.js +0 -47
  11. package/dist/src/core/AST.js.map +0 -1
  12. package/dist/src/core/PrettyPrint.js +0 -64
  13. package/dist/src/core/PrettyPrint.js.map +0 -1
  14. package/dist/src/core/Print.js +0 -77
  15. package/dist/src/core/Print.js.map +0 -1
  16. package/dist/src/fuse/Fuse.js +0 -1436
  17. package/dist/src/fuse/Fuse.js.map +0 -1
  18. package/dist/src/fuse/Print.js +0 -22
  19. package/dist/src/fuse/Print.js.map +0 -1
  20. package/dist/src/fuse/Update.js +0 -3
  21. package/dist/src/fuse/Update.js.map +0 -1
  22. package/dist/src/lambda/AST.js +0 -3
  23. package/dist/src/lambda/AST.js.map +0 -1
  24. package/dist/src/lambda/Evaluation.js +0 -98
  25. package/dist/src/lambda/Evaluation.js.map +0 -1
  26. package/dist/src/lambda/Print.js +0 -31
  27. package/dist/src/lambda/Print.js.map +0 -1
  28. package/dist/src/lambdalize/lambdalize.js +0 -94
  29. package/dist/src/lambdalize/lambdalize.js.map +0 -1
  30. package/dist/src/lambdalize/unLambdalize.js +0 -59
  31. package/dist/src/lambdalize/unLambdalize.js.map +0 -1
  32. package/dist/src/partial/AST.js +0 -3
  33. package/dist/src/partial/AST.js.map +0 -1
  34. package/dist/src/partial/Print.js +0 -93
  35. package/dist/src/partial/Print.js.map +0 -1
  36. package/dist/src/partialEval/peval.js +0 -322
  37. package/dist/src/partialEval/peval.js.map +0 -1
  38. package/dist/src/partialEval/unpeval.js +0 -360
  39. package/dist/src/partialEval/unpeval.js.map +0 -1
  40. package/dist/src/surface/AST.js +0 -3
  41. package/dist/src/surface/AST.js.map +0 -1
  42. package/dist/src/surface/Parser.js +0 -314
  43. package/dist/src/surface/Parser.js.map +0 -1
  44. package/dist/src/translate/Translate.js +0 -91
  45. package/dist/src/translate/Translate.js.map +0 -1
  46. package/dist/src/utils/Utils.js +0 -7
  47. package/dist/src/utils/Utils.js.map +0 -1
  48. package/dist/test/bx/biEval.test.d.ts +0 -1
  49. package/dist/test/bx/biEval.test.js +0 -41
  50. package/dist/test/bx/biEval.test.js.map +0 -1
  51. package/dist/test/bx/test.d.ts +0 -1
  52. package/dist/test/bx/test.js +0 -29
  53. package/dist/test/bx/test.js.map +0 -1
  54. package/dist/test/core/0.simple.test.d.ts +0 -4
  55. package/dist/test/core/0.simple.test.js +0 -68
  56. package/dist/test/core/0.simple.test.js.map +0 -1
  57. package/dist/test/core/1.core.test.d.ts +0 -2
  58. package/dist/test/core/1.core.test.js +0 -30
  59. package/dist/test/core/1.core.test.js.map +0 -1
  60. package/dist/test/core/core.test.d.ts +0 -1
  61. package/dist/test/core/core.test.js +0 -28
  62. package/dist/test/core/core.test.js.map +0 -1
  63. package/dist/test/fuse/branchnop.test.d.ts +0 -1
  64. package/dist/test/fuse/branchnop.test.js +0 -47
  65. package/dist/test/fuse/branchnop.test.js.map +0 -1
  66. package/dist/test/fuse/bulk.test.d.ts +0 -1
  67. package/dist/test/fuse/bulk.test.js +0 -111
  68. package/dist/test/fuse/bulk.test.js.map +0 -1
  69. package/dist/test/fuse/const.test.d.ts +0 -1
  70. package/dist/test/fuse/const.test.js +0 -118
  71. package/dist/test/fuse/const.test.js.map +0 -1
  72. package/dist/test/fuse/exp.test.d.ts +0 -1
  73. package/dist/test/fuse/exp.test.js +0 -225
  74. package/dist/test/fuse/exp.test.js.map +0 -1
  75. package/dist/test/fuse/lambda.test.d.ts +0 -1
  76. package/dist/test/fuse/lambda.test.js +0 -139
  77. package/dist/test/fuse/lambda.test.js.map +0 -1
  78. package/dist/test/fuse/loop.test.d.ts +0 -1
  79. package/dist/test/fuse/loop.test.js +0 -39
  80. package/dist/test/fuse/loop.test.js.map +0 -1
  81. package/dist/test/fuse/seq.test.d.ts +0 -1
  82. package/dist/test/fuse/seq.test.js +0 -64
  83. package/dist/test/fuse/seq.test.js.map +0 -1
  84. package/dist/test/fuse/space.test.d.ts +0 -1
  85. package/dist/test/fuse/space.test.js +0 -136
  86. package/dist/test/fuse/space.test.js.map +0 -1
  87. package/dist/test/lambda/evaluation.test.d.ts +0 -1
  88. package/dist/test/lambda/evaluation.test.js +0 -24
  89. package/dist/test/lambda/evaluation.test.js.map +0 -1
  90. package/dist/test/lambda/lambda.test.d.ts +0 -1
  91. package/dist/test/lambda/lambda.test.js +0 -45
  92. package/dist/test/lambda/lambda.test.js.map +0 -1
  93. package/dist/test/lambdalize/lambdalize.test.d.ts +0 -1
  94. package/dist/test/lambdalize/lambdalize.test.js +0 -23
  95. package/dist/test/lambdalize/lambdalize.test.js.map +0 -1
  96. package/dist/test/lambdalize/unLambdalize.test.d.ts +0 -1
  97. package/dist/test/lambdalize/unLambdalize.test.js +0 -35
  98. package/dist/test/lambdalize/unLambdalize.test.js.map +0 -1
  99. package/dist/test/partial/partial.test.d.ts +0 -1
  100. package/dist/test/partial/partial.test.js +0 -35
  101. package/dist/test/partial/partial.test.js.map +0 -1
  102. package/dist/test/partialEval/peval.test.d.ts +0 -1
  103. package/dist/test/partialEval/peval.test.js +0 -29
  104. package/dist/test/partialEval/peval.test.js.map +0 -1
  105. package/dist/test/partialEval/unPeval.test.d.ts +0 -1
  106. package/dist/test/partialEval/unPeval.test.js +0 -40
  107. package/dist/test/partialEval/unPeval.test.js.map +0 -1
  108. package/dist/test/surface/AST.test.d.ts +0 -1
  109. package/dist/test/surface/AST.test.js +0 -41
  110. package/dist/test/surface/AST.test.js.map +0 -1
  111. package/dist/test/translate/translate.test.d.ts +0 -1
  112. package/dist/test/translate/translate.test.js +0 -45
  113. package/dist/test/translate/translate.test.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bit2",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "dist/bit2.js",
5
5
  "types": "dist/bit2.d.ts",
6
6
  "dependencies": {
@@ -42,7 +42,9 @@
42
42
  "translate": "node dist/test/translate/translate.test.js"
43
43
  },
44
44
  "files": [
45
- "dist"
45
+ "dist/bit2.js",
46
+ "dist/bit2.d.ts",
47
+ "dist/src/**/*.d.ts"
46
48
  ],
47
49
  "author": "steanzan",
48
50
  "keywords": ["bx", "live programming", "bidirectional live programming", "template language"]
@@ -1,59 +0,0 @@
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 peval_1 = require("../partialEval/peval");
11
- const lambdalize_1 = require("../lambdalize/lambdalize");
12
- const Evaluation = __importStar(require("../lambda/Evaluation"));
13
- const UnEvaluation = __importStar(require("../../src/partialEval/unpeval"));
14
- const Parser = __importStar(require("../surface/Parser"));
15
- const Translator = __importStar(require("../translate/Translate"));
16
- const CorePretty = __importStar(require("../core/PrettyPrint"));
17
- const Fuse_1 = require("../../src/fuse/Fuse");
18
- const unLambdalize_1 = require("../../src/lambdalize/unLambdalize");
19
- const peval_2 = require("../../src/partialEval/peval");
20
- function evaluateToLambdaAST(core) {
21
- const initialEnvironment = new Map();
22
- const [_, partialNode] = peval_1.partialEval(initialEnvironment, core);
23
- // console.log("----------------------------");
24
- // PartialPrint.printNode(partialNode);
25
- const lambdaAST = lambdalize_1.lambdalize(partialNode);
26
- // console.log("----------------------------");
27
- // LambdaPrint.printNode(lambdaAST);
28
- return lambdaAST;
29
- }
30
- exports.evaluateToLambdaAST = evaluateToLambdaAST;
31
- function forward(str) {
32
- let surface = Parser.parse(str);
33
- let core = Translator.translate(surface);
34
- // CorePrint.printAST(core);
35
- let result = Evaluation.evaluateTermNode(evaluateToLambdaAST(core));
36
- return result;
37
- }
38
- exports.forward = forward;
39
- function backward(str, operation) {
40
- let surface = Parser.parse(str);
41
- let core = Translator.translate(surface);
42
- let lambdaAST = evaluateToLambdaAST(core);
43
- // LambdaPrint.printNode(lambdaAST,"");
44
- let env = {};
45
- return Fuse_1.fuse(env, operation, lambdaAST)
46
- .map(({ newTermNode: newTerm, remainingOperation: newOp }) => {
47
- let partialAST = peval_2.flatten(unLambdalize_1.unLambdalize(newTerm));
48
- // console.log("--------updatedPartialAST------------");
49
- // PartialPrint.printNode(partialAST);
50
- let updatedCoreAST = UnEvaluation.flatten(UnEvaluation.unPartialEval(partialAST));
51
- // console.log("--------updatedCoreAST------------");
52
- // CorePrint.printAST(updatedCoreAST);
53
- let surfaceText = CorePretty.printToSurface(updatedCoreAST);
54
- // console.log("result in backward:\n", surfaceText);
55
- return surfaceText;
56
- });
57
- }
58
- exports.backward = backward;
59
- //# sourceMappingURL=biEval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"biEval.js","sourceRoot":"","sources":["../../../src/bx/biEval.ts"],"names":[],"mappings":";;;;;;;;;AAGA,gDAAmD;AACnD,yDAAsD;AACtD,iEAAmD;AACnD,4EAA8D;AAC9D,0DAA4C;AAC5C,mEAAqD;AAErD,gEAAkD;AAOlD,8CAA0E;AAE1E,oEAAiE;AACjE,uDAAsD;AAGtD,SAAgB,mBAAmB,CAAC,IAAsB;IACxD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAe,CAAC;IAClD,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,mBAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC/D,+CAA+C;IAC/C,uCAAuC;IACvC,MAAM,SAAS,GAAG,uBAAU,CAAC,WAAW,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,oCAAoC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AATD,kDASC;AAGD,SAAgB,OAAO,CAAC,GAAW;IACjC,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACxC,4BAA4B;IAC5B,IAAI,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,0BAMC;AAGD,SAAgB,QAAQ,CAAC,GAAW,EAAE,SAA0B;IAC9D,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACzC,uCAAuC;IACvC,IAAI,GAAG,GAAgB,EAAE,CAAC;IAC1B,OAAO,WAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC;SACrC,GAAG,CAAC,CAAC,EAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAC,EAAE,EAAE;QACzD,IAAI,UAAU,GAAG,eAAO,CAAC,2BAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,wDAAwD;QACxD,sCAAsC;QACtC,IAAI,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,qDAAqD;QACrD,sCAAsC;QACtC,IAAI,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5D,qDAAqD;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAlBD,4BAkBC"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function findVariablesAndFields(exp) {
4
- let variables = [];
5
- let fields = [];
6
- function traverse(node) {
7
- switch (node.type) {
8
- case 'variable':
9
- variables.push(node);
10
- break;
11
- case 'field':
12
- if (node.object.type === 'variable') {
13
- fields.push({ variable: node.object, field: node.field });
14
- }
15
- else {
16
- traverse(node.object);
17
- }
18
- break;
19
- case 'binary':
20
- traverse(node.left);
21
- traverse(node.right);
22
- break;
23
- case 'unary':
24
- traverse(node.operand);
25
- break;
26
- case 'array':
27
- node.elements.forEach(traverse);
28
- break;
29
- case 'object':
30
- Object.values(node.fields).forEach(traverse);
31
- break;
32
- case 'freeze':
33
- traverse(node.expression);
34
- break;
35
- // Add other cases as needed
36
- default:
37
- break;
38
- }
39
- }
40
- traverse(exp);
41
- return { variables, fields };
42
- }
43
- exports.findVariablesAndFields = findVariablesAndFields;
44
- //# sourceMappingURL=Exp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Exp.js","sourceRoot":"","sources":["../../../src/common/Exp.ts"],"names":[],"mappings":";;AAgEA,SAAgB,sBAAsB,CAAC,GAAS;IAC9C,IAAI,SAAS,GAAe,EAAE,CAAC;IAC/B,IAAI,MAAM,GAA4C,EAAE,CAAC;IAEzD,SAAS,QAAQ,CAAC,IAAU;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,UAAU;gBACb,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;iBAC3D;qBAAM;oBACL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACvB;gBACD,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM;YACR,4BAA4B;YAC5B;gBACE,MAAM;SACT;IACH,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAxCD,wDAwCC"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function prettyPrint(node) {
4
- switch (node.type) {
5
- case 'constant':
6
- return String(node.value);
7
- case 'variable':
8
- return node.name;
9
- case 'binary':
10
- return prettyPrint(node.left) + prettyPrintBinaryOperator(node.operator) + prettyPrint(node.right);
11
- case 'unary':
12
- return prettyPrintUnaryOperator(node.operator) + prettyPrint(node.operand);
13
- case 'field':
14
- return prettyPrint(node.object) + "." + node.field;
15
- case 'array':
16
- return "[" + node.elements.map(ele => prettyPrint(ele)).join(",") + "]";
17
- case 'freeze':
18
- return "!" + prettyPrint(node.expression);
19
- default:
20
- return "";
21
- }
22
- }
23
- exports.prettyPrint = prettyPrint;
24
- function prettyPrintBinaryOperator(node) {
25
- return node;
26
- }
27
- exports.prettyPrintBinaryOperator = prettyPrintBinaryOperator;
28
- function prettyPrintUnaryOperator(node) {
29
- return node;
30
- }
31
- exports.prettyPrintUnaryOperator = prettyPrintUnaryOperator;
32
- //# sourceMappingURL=PrettyPrint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PrettyPrint.js","sourceRoot":"","sources":["../../../src/common/PrettyPrint.ts"],"names":[],"mappings":";;AAEA,SAAgB,WAAW,CAAC,IAAa;IACvC,QAAO,IAAI,CAAC,IAAI,EAAC;QACf,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrG,KAAK,OAAO;YACV,OAAO,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,EAAE,CAAA,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C;YACE,OAAO,EAAE,CAAC;KACb;AACH,CAAC;AAnBD,kCAmBC;AAED,SAAgB,yBAAyB,CAAC,IAAwB;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,8DAEC;AAED,SAAgB,wBAAwB,CAAC,IAAuB;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,4DAEC"}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function printExpression(expr, indent = '') {
4
- switch (expr.type) {
5
- case 'constant':
6
- printConstantValue(expr.value, indent + ' ');
7
- break;
8
- case 'variable':
9
- console.log(`${indent}Variable: ${expr.name}`);
10
- break;
11
- case 'binary':
12
- console.log(`${indent}BinaryOperation: ${expr.operator}`);
13
- printExpression(expr.left, indent + ' ');
14
- printExpression(expr.right, indent + ' ');
15
- break;
16
- case 'unary':
17
- console.log(`${indent}UnaryOperation: ${expr.operator}`);
18
- printExpression(expr.operand, indent + ' ');
19
- break;
20
- case 'field':
21
- console.log(`${indent}FieldAccess: ${expr.field}`);
22
- printExpression(expr.object, indent + ' ');
23
- break;
24
- case 'array':
25
- console.log(`${indent}ArrayLiteral:`);
26
- expr.elements.forEach(element => printExpression(element, indent + ' '));
27
- break;
28
- case 'object':
29
- console.log(`${indent}ObjectLiteral:`);
30
- Object.keys(expr.fields).forEach(field => {
31
- console.log(`${indent}${field} = ${expr.fields[field].value}`);
32
- });
33
- break;
34
- case 'freeze':
35
- console.log(`${indent}Freeze:`);
36
- printExpression(expr.expression, indent + ' ');
37
- break;
38
- }
39
- }
40
- exports.printExpression = printExpression;
41
- // Function to print Value with indent
42
- function printConstantValue(value, indent) {
43
- if (value === null) {
44
- console.log(`${indent}null`);
45
- }
46
- else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'string') {
47
- console.log(`${indent}${value}`);
48
- }
49
- else if (typeof value === 'object') {
50
- // Assume value is an ObjectLiteral
51
- console.log(`${indent}{`);
52
- const objectValue = value; // Type assertion to ensure correct indexing
53
- for (const key in objectValue) {
54
- if (objectValue.hasOwnProperty(key)) {
55
- const newIndent = indent + " ";
56
- console.log(`${newIndent}${key}:`);
57
- //@ts-ignore
58
- printConstantValue(objectValue[key], newIndent + " ");
59
- }
60
- }
61
- console.log(`${indent}}`);
62
- // @ts-ignore
63
- }
64
- else if (typeof value === 'constant') {
65
- const constantValue = value; // Type assertion to ensure correct indexing
66
- printConstantValue(constantValue.value, indent + ' ');
67
- }
68
- else {
69
- throw new Error(`Unhandled value type: ${typeof value}`);
70
- }
71
- }
72
- exports.printConstantValue = printConstantValue;
73
- //# sourceMappingURL=Print.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Print.js","sourceRoot":"","sources":["../../../src/common/Print.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function seq(...nodes) {
4
- return { type: 'seq', nodes };
5
- }
6
- exports.seq = seq;
7
- function constNode(value) {
8
- return { type: 'const', value: value };
9
- }
10
- exports.constNode = constNode;
11
- function space(width) {
12
- return { type: 'space', width };
13
- }
14
- exports.space = space;
15
- function declare(name, value) {
16
- return { type: 'declare', name, value };
17
- }
18
- exports.declare = declare;
19
- function exp(expression) {
20
- return { type: 'exp', expression };
21
- }
22
- exports.exp = exp;
23
- function loop(lst, sep, front, rear, body) {
24
- return { type: 'loop', lst, separator: sep, front, rear, body };
25
- }
26
- exports.loop = loop;
27
- function ite(condition, trueBranch, falseBranch) {
28
- return { type: 'ite', condition, trueBranch, falseBranch };
29
- }
30
- exports.ite = ite;
31
- function assign(name, value) {
32
- return { type: 'assign', name, value };
33
- }
34
- exports.assign = assign;
35
- function nop() {
36
- return { type: 'nop' };
37
- }
38
- exports.nop = nop;
39
- function bot() {
40
- return { type: 'bot' };
41
- }
42
- exports.bot = bot;
43
- function end() {
44
- return { type: 'end' };
45
- }
46
- exports.end = end;
47
- //# sourceMappingURL=AST.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AST.js","sourceRoot":"","sources":["../../../src/core/AST.ts"],"names":[],"mappings":";;AA2GA,SAAgB,GAAG,CAAC,GAAG,KAAiB;IACtC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAFD,kBAEC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAC,KAAK,EAAE,CAAC;AACxC,CAAC;AAFD,8BAEC;AAED,SAAgB,KAAK,CAAC,KAAa;IACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAFD,sBAEC;AAED,SAAgB,OAAO,CAAC,IAAc,EAAE,KAAW;IACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAFD,0BAEC;AAED,SAAgB,GAAG,CAAC,UAAgB;IAClC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAFD,kBAEC;AAED,SAAgB,IAAI,CAAC,GAAS,EAAE,GAAY,EAAE,KAAgB,EAAE,IAAc,EAAE,IAAY;IAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClE,CAAC;AAFD,oBAEC;AAED,SAAgB,GAAG,CAAC,SAAe,EAAE,UAAoB,EAAE,WAAqB;IAC9E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC7D,CAAC;AAFD,kBAEC;AAED,SAAgB,MAAM,CAAC,IAAc,EAAE,KAAW;IAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAFD,wBAEC;AAED,SAAgB,GAAG;IACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG;IACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG;IACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAFD,kBAEC"}
@@ -1,64 +0,0 @@
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 Exp = __importStar(require("../common/PrettyPrint"));
11
- function printToSurface(node) {
12
- let str = "";
13
- switch (node.type) {
14
- case 'const':
15
- return node.value;
16
- case 'space':
17
- return " ".repeat(node.width);
18
- case 'declare':
19
- str = "«";
20
- str += "var ";
21
- str += Exp.prettyPrint(node.name);
22
- str += "=";
23
- str += Exp.prettyPrint(node.value);
24
- str += "»";
25
- // str += "\n";
26
- return str;
27
- case 'assign':
28
- str = "«";
29
- str += Exp.prettyPrint(node.name);
30
- str += "=";
31
- str += Exp.prettyPrint(node.value);
32
- str += "»";
33
- // str += "\n"
34
- return str;
35
- case 'exp':
36
- str = "«";
37
- str += Exp.prettyPrint(node.expression);
38
- str += "»";
39
- return str;
40
- case 'seq':
41
- return node.nodes.map(node => printToSurface(node)).join("");
42
- case 'ite':
43
- str = "«if " + Exp.prettyPrint(node.condition) + "»\n";
44
- str += printToSurface(node.trueBranch);
45
- str += "«endif»\n";
46
- return str;
47
- case 'loop':
48
- str = "«for " + Exp.prettyPrint(node.body.variable) + " :" + Exp.prettyPrint(node.lst) + "»\n";
49
- str += printToSurface(node.body.body);
50
- str += "«endfor»\n";
51
- return str;
52
- case 'nop':
53
- return "";
54
- case 'bot':
55
- return "";
56
- case 'end':
57
- return "";
58
- default:
59
- return "";
60
- }
61
- return "";
62
- }
63
- exports.printToSurface = printToSurface;
64
- //# sourceMappingURL=PrettyPrint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PrettyPrint.js","sourceRoot":"","sources":["../../../src/core/PrettyPrint.ts"],"names":[],"mappings":";;;;;;;;;AACA,2DAA6C;AAE7C,SAAgB,cAAc,CAAC,IAAiB;IAC9C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,QAAO,IAAI,CAAC,IAAI,EAAE;QAChB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,SAAS;YACZ,GAAG,GAAG,GAAG,CAAC;YACV,GAAG,IAAI,MAAM,CAAC;YACd,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,IAAI,GAAG,CAAC;YACX,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,IAAI,GAAG,CAAC;YACX,eAAe;YACf,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,GAAG,GAAG,GAAG,CAAC;YACV,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,IAAI,GAAG,CAAC;YACX,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,IAAI,GAAG,CAAC;YACX,cAAc;YACd,OAAO,GAAG,CAAC;QACb,KAAK,KAAK;YACR,GAAG,GAAG,GAAG,CAAC;YACV,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,GAAG,IAAI,GAAG,CAAC;YACX,OAAO,GAAG,CAAC;QACb,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,KAAK,KAAK;YACR,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YACvD,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,GAAG,IAAI,WAAW,CAAC;YACnB,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC/F,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,GAAG,IAAI,YAAY,CAAC;YACpB,OAAO,GAAG,CAAC;QACb,KAAK,KAAK;YACR,OAAO,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,EAAE,CAAC;KACb;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAnDD,wCAmDC"}
@@ -1,77 +0,0 @@
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 Print = __importStar(require("../common/Print"));
11
- // 测试函数,递归打印AST节点
12
- function printAST(node, indent = '') {
13
- switch (node.type) {
14
- case 'const':
15
- console.log(`${indent}Const: ${node.value}`);
16
- break;
17
- case 'space':
18
- console.log(`${indent}Space: ${node.width}`);
19
- break;
20
- case 'declare':
21
- console.log(`${indent}Declare: ${node.name.name} =`);
22
- Print.printExpression(node.value, indent + ' ');
23
- break;
24
- case 'assign':
25
- console.log(`${indent}Assign: ${node.name.name} =`);
26
- Print.printExpression(node.value, indent + ' ');
27
- break;
28
- case 'exp':
29
- console.log(`${indent}Exp:`);
30
- Print.printExpression(node.expression, indent + ' ');
31
- break;
32
- case 'seq':
33
- console.log(`${indent}Seq:`);
34
- node.nodes.forEach(n => printAST(n, indent + ' '));
35
- break;
36
- case 'ite':
37
- console.log(`${indent}If-Then-Else: if`);
38
- Print.printExpression(node.condition, indent + ' ');
39
- console.log(`${indent}Then:`);
40
- printAST(node.trueBranch, indent + ' ');
41
- console.log(`${indent}Else:`);
42
- printAST(node.falseBranch, indent + ' ');
43
- break;
44
- case 'loop':
45
- console.log(`${indent}Loop:`);
46
- Print.printExpression(node.lst, indent + ' ');
47
- console.log(`${indent}Separator: ${node.separator.value}`);
48
- console.log(`${indent}Front: ${node.front.value}`);
49
- console.log(`${indent}Rear: ${node.rear.value}`);
50
- printLambda(node.body, indent + ' ');
51
- break;
52
- case 'call':
53
- console.log(`${indent}Call:`);
54
- printAST(node.func, indent + ' ');
55
- Object.keys(node.args).forEach(arg => {
56
- console.log(`${indent} ${arg} =`);
57
- Print.printExpression(node.args[arg], indent + ' ');
58
- });
59
- break;
60
- case 'nop':
61
- console.log(`${indent}Nop`);
62
- break;
63
- case 'bot':
64
- console.log(`${indent}Bot`);
65
- break;
66
- case 'end':
67
- console.log(`${indent}End`);
68
- break;
69
- }
70
- }
71
- exports.printAST = printAST;
72
- function printLambda(lambda, indent = '') {
73
- console.log(`${indent}Lambda: ${lambda.variable.name}`);
74
- printAST(lambda.body, indent + ' ');
75
- }
76
- exports.printLambda = printLambda;
77
- //# sourceMappingURL=Print.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Print.js","sourceRoot":"","sources":["../../../src/core/Print.ts"],"names":[],"mappings":"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"}