@lewin671/python-vm 0.1.2 → 0.1.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 (119) hide show
  1. package/README.md +58 -56
  2. package/README_zh-CN.md +58 -57
  3. package/dist/common/string-token.d.ts +5 -0
  4. package/dist/common/string-token.d.ts.map +1 -0
  5. package/dist/common/string-token.js +23 -0
  6. package/dist/common/string-token.js.map +1 -0
  7. package/dist/compiler/cfg_builder.d.ts +48 -0
  8. package/dist/compiler/cfg_builder.d.ts.map +1 -0
  9. package/dist/compiler/cfg_builder.js +1462 -0
  10. package/dist/compiler/cfg_builder.js.map +1 -0
  11. package/dist/compiler/compiler.d.ts.map +1 -0
  12. package/dist/compiler/compiler.js +27 -0
  13. package/dist/compiler/compiler.js.map +1 -0
  14. package/dist/compiler/index.d.ts.map +1 -0
  15. package/dist/compiler/index.js.map +1 -0
  16. package/dist/compiler/linearizer.d.ts +7 -0
  17. package/dist/compiler/linearizer.d.ts.map +1 -0
  18. package/dist/compiler/linearizer.js +112 -0
  19. package/dist/compiler/linearizer.js.map +1 -0
  20. package/dist/compiler/serializer.d.ts +17 -0
  21. package/dist/compiler/serializer.d.ts.map +1 -0
  22. package/dist/compiler/serializer.js +70 -0
  23. package/dist/compiler/serializer.js.map +1 -0
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +58 -8
  27. package/dist/index.js.map +1 -1
  28. package/dist/lexer/lexer.d.ts.map +1 -1
  29. package/dist/lexer/lexer.js +25 -11
  30. package/dist/lexer/lexer.js.map +1 -1
  31. package/dist/parser/expressions.d.ts.map +1 -1
  32. package/dist/parser/expressions.js +5 -2
  33. package/dist/parser/expressions.js.map +1 -1
  34. package/dist/parser/parser.js +3 -3
  35. package/dist/parser/parser.js.map +1 -1
  36. package/dist/parser/statements.d.ts.map +1 -1
  37. package/dist/parser/statements.js +60 -22
  38. package/dist/parser/statements.js.map +1 -1
  39. package/dist/python_compiler.d.ts +32 -0
  40. package/dist/python_compiler.d.ts.map +1 -0
  41. package/dist/{compiler.js → python_compiler.js} +19 -6
  42. package/dist/python_compiler.js.map +1 -0
  43. package/dist/types/ast.d.ts +286 -44
  44. package/dist/types/ast.d.ts.map +1 -1
  45. package/dist/types/ast.js +43 -36
  46. package/dist/types/ast.js.map +1 -1
  47. package/dist/types/bytecode.d.ts +106 -21
  48. package/dist/types/bytecode.d.ts.map +1 -1
  49. package/dist/types/bytecode.js +111 -23
  50. package/dist/types/bytecode.js.map +1 -1
  51. package/dist/types/cfg.d.ts +20 -0
  52. package/dist/types/cfg.d.ts.map +1 -0
  53. package/dist/types/cfg.js +3 -0
  54. package/dist/types/cfg.js.map +1 -0
  55. package/dist/types/index.d.ts +1 -0
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/index.js +1 -0
  58. package/dist/types/index.js.map +1 -1
  59. package/dist/vm/builtins.d.ts.map +1 -1
  60. package/dist/vm/builtins.js +23 -7
  61. package/dist/vm/builtins.js.map +1 -1
  62. package/dist/vm/callable.d.ts +6 -6
  63. package/dist/vm/callable.d.ts.map +1 -1
  64. package/dist/vm/callable.js +28 -7
  65. package/dist/vm/callable.js.map +1 -1
  66. package/dist/vm/execution-helpers.d.ts +17 -0
  67. package/dist/vm/execution-helpers.d.ts.map +1 -0
  68. package/dist/vm/execution-helpers.js +334 -0
  69. package/dist/vm/execution-helpers.js.map +1 -0
  70. package/dist/vm/execution.d.ts +4 -12
  71. package/dist/vm/execution.d.ts.map +1 -1
  72. package/dist/vm/execution.js +764 -255
  73. package/dist/vm/execution.js.map +1 -1
  74. package/dist/vm/expression-generator.d.ts +3 -1
  75. package/dist/vm/expression-generator.d.ts.map +1 -1
  76. package/dist/vm/expression-generator.js.map +1 -1
  77. package/dist/vm/expressions.d.ts +6 -6
  78. package/dist/vm/expressions.d.ts.map +1 -1
  79. package/dist/vm/expressions.js +29 -54
  80. package/dist/vm/expressions.js.map +1 -1
  81. package/dist/vm/imports.d.ts +4 -4
  82. package/dist/vm/imports.d.ts.map +1 -1
  83. package/dist/vm/imports.js.map +1 -1
  84. package/dist/vm/operations.d.ts +11 -10
  85. package/dist/vm/operations.d.ts.map +1 -1
  86. package/dist/vm/operations.js +83 -22
  87. package/dist/vm/operations.js.map +1 -1
  88. package/dist/vm/runtime-types.d.ts +64 -26
  89. package/dist/vm/runtime-types.d.ts.map +1 -1
  90. package/dist/vm/runtime-types.js +166 -19
  91. package/dist/vm/runtime-types.js.map +1 -1
  92. package/dist/vm/statements.d.ts +5 -5
  93. package/dist/vm/statements.d.ts.map +1 -1
  94. package/dist/vm/statements.js +95 -10
  95. package/dist/vm/statements.js.map +1 -1
  96. package/dist/vm/truthy.d.ts +2 -2
  97. package/dist/vm/truthy.d.ts.map +1 -1
  98. package/dist/vm/truthy.js +1 -1
  99. package/dist/vm/truthy.js.map +1 -1
  100. package/dist/vm/value-utils.d.ts +23 -25
  101. package/dist/vm/value-utils.d.ts.map +1 -1
  102. package/dist/vm/value-utils.js +216 -47
  103. package/dist/vm/value-utils.js.map +1 -1
  104. package/dist/vm/vm.d.ts +7 -3
  105. package/dist/vm/vm.d.ts.map +1 -1
  106. package/dist/vm/vm.js +3 -0
  107. package/dist/vm/vm.js.map +1 -1
  108. package/package.json +3 -3
  109. package/dist/compiler.d.ts +0 -20
  110. package/dist/compiler.d.ts.map +0 -1
  111. package/dist/compiler.js.map +0 -1
  112. package/dist/compiler_module/compiler.d.ts.map +0 -1
  113. package/dist/compiler_module/compiler.js +0 -22
  114. package/dist/compiler_module/compiler.js.map +0 -1
  115. package/dist/compiler_module/index.d.ts.map +0 -1
  116. package/dist/compiler_module/index.js.map +0 -1
  117. /package/dist/{compiler_module → compiler}/compiler.d.ts +0 -0
  118. /package/dist/{compiler_module → compiler}/index.d.ts +0 -0
  119. /package/dist/{compiler_module → compiler}/index.js +0 -0
@@ -1,35 +1,123 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpCode = void 0;
3
+ exports.CompareOp = exports.OpCode = void 0;
4
4
  var OpCode;
5
5
  (function (OpCode) {
6
6
  // Loading and storing
7
7
  OpCode[OpCode["LOAD_CONST"] = 0] = "LOAD_CONST";
8
8
  OpCode[OpCode["LOAD_NAME"] = 1] = "LOAD_NAME";
9
9
  OpCode[OpCode["STORE_NAME"] = 2] = "STORE_NAME";
10
+ OpCode[OpCode["DELETE_NAME"] = 3] = "DELETE_NAME";
11
+ OpCode[OpCode["LOAD_FAST"] = 4] = "LOAD_FAST";
12
+ OpCode[OpCode["STORE_FAST"] = 5] = "STORE_FAST";
13
+ OpCode[OpCode["DELETE_FAST"] = 6] = "DELETE_FAST";
14
+ OpCode[OpCode["LOAD_GLOBAL"] = 7] = "LOAD_GLOBAL";
15
+ OpCode[OpCode["STORE_GLOBAL"] = 8] = "STORE_GLOBAL";
16
+ OpCode[OpCode["DELETE_GLOBAL"] = 9] = "DELETE_GLOBAL";
17
+ OpCode[OpCode["LOAD_ATTR"] = 10] = "LOAD_ATTR";
18
+ OpCode[OpCode["STORE_ATTR"] = 11] = "STORE_ATTR";
19
+ OpCode[OpCode["DELETE_ATTR"] = 12] = "DELETE_ATTR";
20
+ OpCode[OpCode["LOAD_SUBSCR"] = 13] = "LOAD_SUBSCR";
21
+ OpCode[OpCode["STORE_SUBSCR"] = 14] = "STORE_SUBSCR";
22
+ OpCode[OpCode["DELETE_SUBSCR"] = 15] = "DELETE_SUBSCR";
23
+ // Stack operations
24
+ OpCode[OpCode["POP_TOP"] = 16] = "POP_TOP";
25
+ OpCode[OpCode["DUP_TOP"] = 17] = "DUP_TOP";
26
+ OpCode[OpCode["DUP_TOP_TWO"] = 18] = "DUP_TOP_TWO";
27
+ OpCode[OpCode["ROT_TWO"] = 19] = "ROT_TWO";
28
+ OpCode[OpCode["ROT_THREE"] = 20] = "ROT_THREE";
10
29
  // Binary operations
11
- OpCode[OpCode["BINARY_ADD"] = 3] = "BINARY_ADD";
12
- OpCode[OpCode["BINARY_SUBTRACT"] = 4] = "BINARY_SUBTRACT";
13
- OpCode[OpCode["BINARY_MULTIPLY"] = 5] = "BINARY_MULTIPLY";
14
- OpCode[OpCode["BINARY_DIVIDE"] = 6] = "BINARY_DIVIDE";
15
- OpCode[OpCode["BINARY_MODULO"] = 7] = "BINARY_MODULO";
16
- OpCode[OpCode["BINARY_POWER"] = 8] = "BINARY_POWER";
30
+ OpCode[OpCode["BINARY_ADD"] = 21] = "BINARY_ADD";
31
+ OpCode[OpCode["BINARY_SUBTRACT"] = 22] = "BINARY_SUBTRACT";
32
+ OpCode[OpCode["BINARY_MULTIPLY"] = 23] = "BINARY_MULTIPLY";
33
+ OpCode[OpCode["BINARY_DIVIDE"] = 24] = "BINARY_DIVIDE";
34
+ OpCode[OpCode["BINARY_FLOOR_DIVIDE"] = 25] = "BINARY_FLOOR_DIVIDE";
35
+ OpCode[OpCode["BINARY_MODULO"] = 26] = "BINARY_MODULO";
36
+ OpCode[OpCode["BINARY_POWER"] = 27] = "BINARY_POWER";
37
+ OpCode[OpCode["BINARY_LSHIFT"] = 28] = "BINARY_LSHIFT";
38
+ OpCode[OpCode["BINARY_RSHIFT"] = 29] = "BINARY_RSHIFT";
39
+ OpCode[OpCode["BINARY_AND"] = 30] = "BINARY_AND";
40
+ OpCode[OpCode["BINARY_XOR"] = 31] = "BINARY_XOR";
41
+ OpCode[OpCode["BINARY_OR"] = 32] = "BINARY_OR";
42
+ // In-place operations
43
+ OpCode[OpCode["INPLACE_ADD"] = 33] = "INPLACE_ADD";
44
+ OpCode[OpCode["INPLACE_SUBTRACT"] = 34] = "INPLACE_SUBTRACT";
45
+ OpCode[OpCode["INPLACE_MULTIPLY"] = 35] = "INPLACE_MULTIPLY";
46
+ OpCode[OpCode["INPLACE_DIVIDE"] = 36] = "INPLACE_DIVIDE";
47
+ OpCode[OpCode["INPLACE_FLOOR_DIVIDE"] = 37] = "INPLACE_FLOOR_DIVIDE";
48
+ OpCode[OpCode["INPLACE_MODULO"] = 38] = "INPLACE_MODULO";
49
+ OpCode[OpCode["INPLACE_POWER"] = 39] = "INPLACE_POWER";
50
+ OpCode[OpCode["INPLACE_LSHIFT"] = 40] = "INPLACE_LSHIFT";
51
+ OpCode[OpCode["INPLACE_RSHIFT"] = 41] = "INPLACE_RSHIFT";
52
+ OpCode[OpCode["INPLACE_AND"] = 42] = "INPLACE_AND";
53
+ OpCode[OpCode["INPLACE_XOR"] = 43] = "INPLACE_XOR";
54
+ OpCode[OpCode["INPLACE_OR"] = 44] = "INPLACE_OR";
55
+ // Unary operations
56
+ OpCode[OpCode["UNARY_POSITIVE"] = 45] = "UNARY_POSITIVE";
57
+ OpCode[OpCode["UNARY_NEGATIVE"] = 46] = "UNARY_NEGATIVE";
58
+ OpCode[OpCode["UNARY_NOT"] = 47] = "UNARY_NOT";
59
+ OpCode[OpCode["UNARY_INVERT"] = 48] = "UNARY_INVERT";
17
60
  // Comparison operations
18
- OpCode[OpCode["COMPARE_EQ"] = 9] = "COMPARE_EQ";
19
- OpCode[OpCode["COMPARE_NE"] = 10] = "COMPARE_NE";
20
- OpCode[OpCode["COMPARE_LT"] = 11] = "COMPARE_LT";
21
- OpCode[OpCode["COMPARE_GT"] = 12] = "COMPARE_GT";
22
- OpCode[OpCode["COMPARE_LE"] = 13] = "COMPARE_LE";
23
- OpCode[OpCode["COMPARE_GE"] = 14] = "COMPARE_GE";
24
- // Logical operations
25
- OpCode[OpCode["LOGICAL_AND"] = 15] = "LOGICAL_AND";
26
- OpCode[OpCode["LOGICAL_OR"] = 16] = "LOGICAL_OR";
27
- OpCode[OpCode["LOGICAL_NOT"] = 17] = "LOGICAL_NOT";
28
- // Function calls
29
- OpCode[OpCode["CALL_FUNCTION"] = 18] = "CALL_FUNCTION";
30
- OpCode[OpCode["RETURN_VALUE"] = 19] = "RETURN_VALUE";
31
- // Print
32
- OpCode[OpCode["PRINT_ITEM"] = 20] = "PRINT_ITEM";
33
- OpCode[OpCode["PRINT_NEWLINE"] = 21] = "PRINT_NEWLINE";
61
+ OpCode[OpCode["COMPARE_OP"] = 49] = "COMPARE_OP";
62
+ // Jump operations
63
+ OpCode[OpCode["JUMP_FORWARD"] = 50] = "JUMP_FORWARD";
64
+ OpCode[OpCode["JUMP_ABSOLUTE"] = 51] = "JUMP_ABSOLUTE";
65
+ OpCode[OpCode["POP_JUMP_IF_FALSE"] = 52] = "POP_JUMP_IF_FALSE";
66
+ OpCode[OpCode["POP_JUMP_IF_TRUE"] = 53] = "POP_JUMP_IF_TRUE";
67
+ OpCode[OpCode["JUMP_IF_FALSE_OR_POP"] = 54] = "JUMP_IF_FALSE_OR_POP";
68
+ OpCode[OpCode["JUMP_IF_TRUE_OR_POP"] = 55] = "JUMP_IF_TRUE_OR_POP";
69
+ // Collection literals
70
+ OpCode[OpCode["BUILD_LIST"] = 56] = "BUILD_LIST";
71
+ OpCode[OpCode["BUILD_TUPLE"] = 57] = "BUILD_TUPLE";
72
+ OpCode[OpCode["BUILD_SET"] = 58] = "BUILD_SET";
73
+ OpCode[OpCode["BUILD_MAP"] = 59] = "BUILD_MAP";
74
+ OpCode[OpCode["BUILD_SLICE"] = 60] = "BUILD_SLICE";
75
+ OpCode[OpCode["UNPACK_SEQUENCE"] = 61] = "UNPACK_SEQUENCE";
76
+ OpCode[OpCode["UNPACK_EX"] = 62] = "UNPACK_EX";
77
+ OpCode[OpCode["BUILD_CONST_KEY_MAP"] = 63] = "BUILD_CONST_KEY_MAP";
78
+ // Container operations
79
+ OpCode[OpCode["LIST_APPEND"] = 64] = "LIST_APPEND";
80
+ OpCode[OpCode["SET_ADD"] = 65] = "SET_ADD";
81
+ OpCode[OpCode["MAP_ADD"] = 66] = "MAP_ADD";
82
+ // Function calls and returns
83
+ OpCode[OpCode["CALL_FUNCTION"] = 67] = "CALL_FUNCTION";
84
+ OpCode[OpCode["CALL_FUNCTION_KW"] = 68] = "CALL_FUNCTION_KW";
85
+ OpCode[OpCode["CALL_FUNCTION_EX"] = 69] = "CALL_FUNCTION_EX";
86
+ OpCode[OpCode["MAKE_FUNCTION"] = 70] = "MAKE_FUNCTION";
87
+ OpCode[OpCode["RETURN_VALUE"] = 71] = "RETURN_VALUE";
88
+ OpCode[OpCode["YIELD_VALUE"] = 72] = "YIELD_VALUE";
89
+ // Iterators
90
+ OpCode[OpCode["GET_ITER"] = 73] = "GET_ITER";
91
+ OpCode[OpCode["FOR_ITER"] = 74] = "FOR_ITER";
92
+ // Exceptions and Context Managers
93
+ OpCode[OpCode["SETUP_FINALLY"] = 75] = "SETUP_FINALLY";
94
+ OpCode[OpCode["SETUP_WITH"] = 76] = "SETUP_WITH";
95
+ OpCode[OpCode["WITH_EXCEPT_START"] = 77] = "WITH_EXCEPT_START";
96
+ OpCode[OpCode["POP_BLOCK"] = 78] = "POP_BLOCK";
97
+ OpCode[OpCode["RAISE_VARARGS"] = 79] = "RAISE_VARARGS";
98
+ // Imports
99
+ OpCode[OpCode["IMPORT_NAME"] = 80] = "IMPORT_NAME";
100
+ OpCode[OpCode["IMPORT_FROM"] = 81] = "IMPORT_FROM";
101
+ OpCode[OpCode["IMPORT_STAR"] = 82] = "IMPORT_STAR";
102
+ // Classes
103
+ OpCode[OpCode["LOAD_BUILD_CLASS"] = 83] = "LOAD_BUILD_CLASS";
104
+ // Print (Legacy/Helper)
105
+ OpCode[OpCode["PRINT_ITEM"] = 84] = "PRINT_ITEM";
106
+ OpCode[OpCode["PRINT_NEWLINE"] = 85] = "PRINT_NEWLINE";
107
+ // Internal helpers
108
+ OpCode[OpCode["EVAL_AST"] = 86] = "EVAL_AST";
34
109
  })(OpCode || (exports.OpCode = OpCode = {}));
110
+ var CompareOp;
111
+ (function (CompareOp) {
112
+ CompareOp[CompareOp["LT"] = 0] = "LT";
113
+ CompareOp[CompareOp["LE"] = 1] = "LE";
114
+ CompareOp[CompareOp["EQ"] = 2] = "EQ";
115
+ CompareOp[CompareOp["NE"] = 3] = "NE";
116
+ CompareOp[CompareOp["GT"] = 4] = "GT";
117
+ CompareOp[CompareOp["GE"] = 5] = "GE";
118
+ CompareOp[CompareOp["IN"] = 6] = "IN";
119
+ CompareOp[CompareOp["NOT_IN"] = 7] = "NOT_IN";
120
+ CompareOp[CompareOp["IS"] = 8] = "IS";
121
+ CompareOp[CompareOp["IS_NOT"] = 9] = "IS_NOT";
122
+ })(CompareOp || (exports.CompareOp = CompareOp = {}));
35
123
  //# sourceMappingURL=bytecode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytecode.js","sourceRoot":"","sources":["../../src/types/bytecode.ts"],"names":[],"mappings":";;;AAeA,IAAY,MAkCX;AAlCD,WAAY,MAAM;IAChB,sBAAsB;IACtB,+CAAU,CAAA;IACV,6CAAS,CAAA;IACT,+CAAU,CAAA;IAEV,oBAAoB;IACpB,+CAAU,CAAA;IACV,yDAAe,CAAA;IACf,yDAAe,CAAA;IACf,qDAAa,CAAA;IACb,qDAAa,CAAA;IACb,mDAAY,CAAA;IAEZ,wBAAwB;IACxB,+CAAU,CAAA;IACV,gDAAU,CAAA;IACV,gDAAU,CAAA;IACV,gDAAU,CAAA;IACV,gDAAU,CAAA;IACV,gDAAU,CAAA;IAEV,qBAAqB;IACrB,kDAAW,CAAA;IACX,gDAAU,CAAA;IACV,kDAAW,CAAA;IAEX,iBAAiB;IACjB,sDAAa,CAAA;IACb,oDAAY,CAAA;IAEZ,QAAQ;IACR,gDAAU,CAAA;IACV,sDAAa,CAAA;AACf,CAAC,EAlCW,MAAM,sBAAN,MAAM,QAkCjB"}
1
+ {"version":3,"file":"bytecode.js","sourceRoot":"","sources":["../../src/types/bytecode.ts"],"names":[],"mappings":";;;AAwBA,IAAY,MA2HX;AA3HD,WAAY,MAAM;IAChB,sBAAsB;IACtB,+CAAU,CAAA;IACV,6CAAS,CAAA;IACT,+CAAU,CAAA;IACV,iDAAW,CAAA;IAEX,6CAAS,CAAA;IACT,+CAAU,CAAA;IACV,iDAAW,CAAA;IAEX,iDAAW,CAAA;IACX,mDAAY,CAAA;IACZ,qDAAa,CAAA;IAEb,8CAAS,CAAA;IACT,gDAAU,CAAA;IACV,kDAAW,CAAA;IAEX,kDAAW,CAAA;IACX,oDAAY,CAAA;IACZ,sDAAa,CAAA;IAEb,mBAAmB;IACnB,0CAAO,CAAA;IACP,0CAAO,CAAA;IACP,kDAAW,CAAA;IACX,0CAAO,CAAA;IACP,8CAAS,CAAA;IAET,oBAAoB;IACpB,gDAAU,CAAA;IACV,0DAAe,CAAA;IACf,0DAAe,CAAA;IACf,sDAAa,CAAA;IACb,kEAAmB,CAAA;IACnB,sDAAa,CAAA;IACb,oDAAY,CAAA;IACZ,sDAAa,CAAA;IACb,sDAAa,CAAA;IACb,gDAAU,CAAA;IACV,gDAAU,CAAA;IACV,8CAAS,CAAA;IAET,sBAAsB;IACtB,kDAAW,CAAA;IACX,4DAAgB,CAAA;IAChB,4DAAgB,CAAA;IAChB,wDAAc,CAAA;IACd,oEAAoB,CAAA;IACpB,wDAAc,CAAA;IACd,sDAAa,CAAA;IACb,wDAAc,CAAA;IACd,wDAAc,CAAA;IACd,kDAAW,CAAA;IACX,kDAAW,CAAA;IACX,gDAAU,CAAA;IAEV,mBAAmB;IACnB,wDAAc,CAAA;IACd,wDAAc,CAAA;IACd,8CAAS,CAAA;IACT,oDAAY,CAAA;IAEZ,wBAAwB;IACxB,gDAAU,CAAA;IAEV,kBAAkB;IAClB,oDAAY,CAAA;IACZ,sDAAa,CAAA;IACb,8DAAiB,CAAA;IACjB,4DAAgB,CAAA;IAChB,oEAAoB,CAAA;IACpB,kEAAmB,CAAA;IAEnB,sBAAsB;IACtB,gDAAU,CAAA;IACV,kDAAW,CAAA;IACX,8CAAS,CAAA;IACT,8CAAS,CAAA;IACT,kDAAW,CAAA;IACX,0DAAe,CAAA;IACf,8CAAS,CAAA;IACT,kEAAmB,CAAA;IAEnB,uBAAuB;IACvB,kDAAW,CAAA;IACX,0CAAO,CAAA;IACP,0CAAO,CAAA;IAEP,6BAA6B;IAC7B,sDAAa,CAAA;IACb,4DAAgB,CAAA;IAChB,4DAAgB,CAAA;IAChB,sDAAa,CAAA;IACb,oDAAY,CAAA;IACZ,kDAAW,CAAA;IAEX,YAAY;IACZ,4CAAQ,CAAA;IACR,4CAAQ,CAAA;IAER,kCAAkC;IAClC,sDAAa,CAAA;IACb,gDAAU,CAAA;IACV,8DAAiB,CAAA;IACjB,8CAAS,CAAA;IACT,sDAAa,CAAA;IAEb,UAAU;IACV,kDAAW,CAAA;IACX,kDAAW,CAAA;IACX,kDAAW,CAAA;IAEX,UAAU;IACV,4DAAgB,CAAA;IAEhB,wBAAwB;IACxB,gDAAU,CAAA;IACV,sDAAa,CAAA;IAEb,mBAAmB;IACnB,4CAAQ,CAAA;AACV,CAAC,EA3HW,MAAM,sBAAN,MAAM,QA2HjB;AAED,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,qCAAM,CAAA;IACN,6CAAU,CAAA;IACV,qCAAM,CAAA;IACN,6CAAU,CAAA;AACZ,CAAC,EAXW,SAAS,yBAAT,SAAS,QAWpB"}
@@ -0,0 +1,20 @@
1
+ import { Instruction } from './bytecode';
2
+ /**
3
+ * 控制流图 (CFG) 相关类型定义
4
+ */
5
+ export interface BasicBlock {
6
+ id: number;
7
+ instructions: Instruction[];
8
+ next?: BasicBlock;
9
+ jumpTarget?: BasicBlock;
10
+ jumpCondition?: 'if_true' | 'if_false' | 'always' | 'if_false_or_pop' | 'if_true_or_pop';
11
+ exceptionTarget?: BasicBlock;
12
+ isProcessed?: boolean;
13
+ reachable?: boolean;
14
+ offset?: number;
15
+ }
16
+ export interface CFG {
17
+ entry: BasicBlock;
18
+ blocks: BasicBlock[];
19
+ }
20
+ //# sourceMappingURL=cfg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfg.d.ts","sourceRoot":"","sources":["../../src/types/cfg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AAEH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IAIzF,eAAe,CAAC,EAAE,UAAU,CAAC;IAG7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,GAAG;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;CACxB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cfg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfg.js","sourceRoot":"","sources":["../../src/types/cfg.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  export * from './token';
2
2
  export * from './ast';
3
3
  export * from './bytecode';
4
+ export * from './cfg';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC"}
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./token"), exports);
18
18
  __exportStar(require("./ast"), exports);
19
19
  __exportStar(require("./bytecode"), exports);
20
+ __exportStar(require("./cfg"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,wCAAsB;AACtB,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,wCAAsB;AACtB,6CAA2B;AAC3B,wCAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/vm/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAqD,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG3F,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,QAwOjE"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/vm/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAiF,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGvH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,QAsPjE"}
@@ -24,7 +24,7 @@ function installBuiltins(scope) {
24
24
  builtins.set('len', (value) => {
25
25
  if (typeof value === 'string' || Array.isArray(value))
26
26
  return value.length;
27
- if (value instanceof runtime_types_1.PyDict || value instanceof Set)
27
+ if (value instanceof runtime_types_1.PyDict || value instanceof runtime_types_1.PySet)
28
28
  return value.size;
29
29
  throw new runtime_types_1.PyException('TypeError', 'object has no len()');
30
30
  });
@@ -60,7 +60,7 @@ function installBuiltins(scope) {
60
60
  const listFn = (value) => {
61
61
  if (Array.isArray(value))
62
62
  return [...value];
63
- if (value instanceof Set)
63
+ if (value instanceof runtime_types_1.PySet)
64
64
  return Array.from(value.values());
65
65
  if (value && typeof value[Symbol.iterator] === 'function')
66
66
  return Array.from(value);
@@ -76,13 +76,13 @@ function installBuiltins(scope) {
76
76
  tupleFn.__typeName__ = 'tuple';
77
77
  builtins.set('tuple', tupleFn);
78
78
  const setFn = (value) => {
79
- if (value instanceof Set)
80
- return new Set(value);
79
+ if (value instanceof runtime_types_1.PySet)
80
+ return new runtime_types_1.PySet(value);
81
81
  if (Array.isArray(value))
82
- return new Set(value);
82
+ return new runtime_types_1.PySet(value);
83
83
  if (value && typeof value[Symbol.iterator] === 'function')
84
- return new Set(Array.from(value));
85
- return new Set();
84
+ return new runtime_types_1.PySet(Array.from(value));
85
+ return new runtime_types_1.PySet();
86
86
  };
87
87
  setFn.__typeName__ = 'set';
88
88
  builtins.set('set', setFn);
@@ -187,7 +187,17 @@ function installBuiltins(scope) {
187
187
  boolFn.__typeName__ = 'bool';
188
188
  builtins.set('bool', boolFn);
189
189
  builtins.set('type', (value) => ({ __typeName__: (0, value_utils_1.pyTypeName)(value) }));
190
+ const isSubclass = (klass, target) => {
191
+ if (klass === target)
192
+ return true;
193
+ return klass.bases.some((base) => isSubclass(base, target));
194
+ };
190
195
  builtins.set('isinstance', (value, typeObj) => {
196
+ if (typeObj instanceof runtime_types_1.PyClass) {
197
+ if (value instanceof runtime_types_1.PyInstance)
198
+ return isSubclass(value.klass, typeObj);
199
+ return false;
200
+ }
191
201
  if (typeObj && typeObj.__typeName__) {
192
202
  return (0, value_utils_1.pyTypeName)(value) === typeObj.__typeName__;
193
203
  }
@@ -260,10 +270,16 @@ function installBuiltins(scope) {
260
270
  const ExceptionBase = exceptionClass('Exception');
261
271
  builtins.set('Exception', ExceptionBase);
262
272
  builtins.set('AssertionError', exceptionClass('AssertionError', ExceptionBase));
273
+ builtins.set('AttributeError', exceptionClass('AttributeError', ExceptionBase));
274
+ const NameErrorBase = exceptionClass('NameError', ExceptionBase);
275
+ builtins.set('NameError', NameErrorBase);
276
+ builtins.set('UnboundLocalError', exceptionClass('UnboundLocalError', NameErrorBase));
263
277
  builtins.set('ZeroDivisionError', exceptionClass('ZeroDivisionError', ExceptionBase));
264
278
  builtins.set('ValueError', exceptionClass('ValueError', ExceptionBase));
265
279
  builtins.set('TypeError', exceptionClass('TypeError', ExceptionBase));
266
280
  builtins.set('FileNotFoundError', exceptionClass('FileNotFoundError', ExceptionBase));
281
+ builtins.set('StopIteration', exceptionClass('StopIteration', ExceptionBase));
267
282
  scope.values = new Map([...builtins.entries()]);
283
+ // console.log('Installed builtins:', Array.from(scope.values.keys()));
268
284
  }
269
285
  //# sourceMappingURL=builtins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/vm/builtins.ts"],"names":[],"mappings":";;AAIA,0CAwOC;AA3OD,mDAA2F;AAC3F,+CAAuG;AAEvG,SAAgB,eAAe,CAAuB,KAAY;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvC,IAAI,GAAG,GAAG,GAAG,CAAC;QACd,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC/B,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClD,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAK,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC;QAC3E,IAAI,KAAK,YAAY,sBAAM,IAAI,KAAK,YAAY,GAAG;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QACvE,MAAM,IAAI,2BAAW,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,GAAG,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,GAAG,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,CAAC;YAAE,MAAM,IAAI,2BAAW,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC;QACtF,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,GAAG;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACD,MAAc,CAAC,YAAY,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9H,GAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACD,OAAe,CAAC,YAAY,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,KAAU,EAAE,EAAE;QAC3B,IAAI,KAAK,YAAY,GAAG;YAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU;YAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC;IACD,KAAa,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAA,2BAAa,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,2BAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,IAAA,2BAAa,EAAC,CAAC,CAAC,GAAG,IAAA,2BAAa,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,2BAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,IAAA,2BAAa,EAAC,CAAC,CAAC,GAAG,IAAA,2BAAa,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAA,sBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,GAAG,GAAG,GAAG,OAAO;YAAE,OAAO,OAAO,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,GAAG,GAAG,GAAG,OAAO;YAAE,OAAO,OAAO,CAAC;QACzC,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,MAAe,EAAE,EAAE;QACvD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,eAAe,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,KAAU,EAAE,EAAE;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChD,IAAI,GAAG,GAAG,OAAO,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;gBACnC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,2BAAW,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,KAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACD,KAAa,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,CAAC,KAAW,EAAE,EAAE;QAC9B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,KAAK,YAAY,MAAM;YAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,2BAAW,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;gBAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YACpF,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtH,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAO,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,2BAAW,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAC/E,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,2BAAW,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC/E,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC;IACD,OAAe,CAAC,YAAY,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,IAAA,mBAAK,EAAC,KAAK,CAAC,CAAC;IAC1C,KAAa,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAc,CAAC,YAAY,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,IAAA,wBAAU,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAU,EAAE,OAAY,EAAE,EAAE;QACtD,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACpC,OAAO,IAAA,wBAAU,EAAC,KAAK,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC;QACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAa,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,GAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAgB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,GAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAa,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAa,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,CAAC,CAAC,GAAG,IAAA,sBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAa,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAO,EAAE,QAAa,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAO,EAAE,QAAa,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAa,EAAE,EAAE;QACrC,IAAI,QAAQ,YAAY,2BAAW,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM,IAAI,2BAAW,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YACzE,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,2BAAW,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,OAAY,GAAG,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,sBAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,2BAAW,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,IAAc,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,uBAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAClD,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IACtF,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEtF,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/vm/builtins.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { VirtualMachine } from './vm';
2
- import { Scope } from './runtime-types';
3
- export declare function callFunction(this: VirtualMachine, func: any, args: any[], scope: Scope, kwargs?: Record<string, any>): any;
4
- export declare function containsYield(this: VirtualMachine, body: any[]): boolean;
5
- export declare function evaluateComprehension(this: VirtualMachine, node: any, scope: Scope, emit: () => void): void;
6
- export declare function generateComprehension(this: VirtualMachine, node: any, scope: Scope, valueFactory: () => any): Generator<any, any, any>;
7
- export declare function expressionHasYield(this: VirtualMachine, node: any): boolean;
2
+ import { PyValue, Scope } from './runtime-types';
3
+ export declare function callFunction(this: VirtualMachine, func: PyValue, args: PyValue[], scope: Scope, kwargs?: Record<string, PyValue>): PyValue;
4
+ export declare function containsYield(this: VirtualMachine, body: PyValue[]): boolean;
5
+ export declare function evaluateComprehension(this: VirtualMachine, node: PyValue, scope: Scope, emit: () => void, outerScope?: Scope): void;
6
+ export declare function generateComprehension(this: VirtualMachine, node: PyValue, scope: Scope, valueFactory: () => PyValue, outerScope?: Scope): Generator<PyValue, PyValue>;
7
+ export declare function expressionHasYield(this: VirtualMachine, node: PyValue): boolean;
8
8
  //# sourceMappingURL=callable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../src/vm/callable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAmF,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEzH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAC/B,GAAG,CAkEL;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAQxE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,QAmBpG;AAED,wBAAiB,qBAAqB,CACpC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,GAAG,GACtB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAuB1B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAc3E"}
1
+ {"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../src/vm/callable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAmF,KAAK,EAAS,MAAM,iBAAiB,CAAC;AAEzI,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,OAAO,CAoFT;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAQ5E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,QAoB5H;AAED,wBAAiB,qBAAqB,CACpC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,OAAO,EAC3B,UAAU,CAAC,EAAE,KAAK,GACjB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAyB7B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAc/E"}
@@ -8,11 +8,21 @@ exports.expressionHasYield = expressionHasYield;
8
8
  const types_1 = require("../types");
9
9
  const runtime_types_1 = require("./runtime-types");
10
10
  function callFunction(func, args, scope, kwargs = {}) {
11
+ // console.log('Calling', func, 'with', args);
11
12
  if (!kwargs) {
12
13
  kwargs = {};
13
14
  }
14
15
  if (func instanceof runtime_types_1.PyFunction) {
15
16
  const callScope = new runtime_types_1.Scope(func.closure);
17
+ callScope.locals = new Set(func.localNames);
18
+ if (func.bytecode) {
19
+ if (func.bytecode.globals) {
20
+ func.bytecode.globals.forEach((g) => callScope.globals.add(g));
21
+ }
22
+ if (func.bytecode.nonlocals) {
23
+ func.bytecode.nonlocals.forEach((n) => callScope.nonlocals.add(n));
24
+ }
25
+ }
16
26
  for (const param of func.params) {
17
27
  if (param.type === 'Param') {
18
28
  let argValue;
@@ -54,6 +64,14 @@ function callFunction(func, args, scope, kwargs = {}) {
54
64
  const iterator = this.executeBlockGenerator(func.body, callScope);
55
65
  return new runtime_types_1.PyGenerator(iterator);
56
66
  }
67
+ if (func.bytecode && func.bytecode.instructions) {
68
+ const frame = new runtime_types_1.Frame(func.bytecode, callScope);
69
+ for (let i = 0; i < (func.bytecode.argcount || 0); i++) {
70
+ const varname = func.bytecode.varnames[i];
71
+ frame.locals[i] = callScope.values.get(varname);
72
+ }
73
+ return this.executeFrame(frame);
74
+ }
57
75
  const result = this.executeBlock(func.body, callScope);
58
76
  return result;
59
77
  }
@@ -95,7 +113,7 @@ function containsYield(body) {
95
113
  }
96
114
  return false;
97
115
  }
98
- function evaluateComprehension(node, scope, emit) {
116
+ function evaluateComprehension(node, scope, emit, outerScope) {
99
117
  const clauses = node.clauses || [];
100
118
  const walk = (index) => {
101
119
  if (index >= clauses.length) {
@@ -103,7 +121,8 @@ function evaluateComprehension(node, scope, emit) {
103
121
  return;
104
122
  }
105
123
  const clause = clauses[index];
106
- const iterable = this.evaluateExpression(clause.iter, scope);
124
+ const iterScope = (index === 0 && outerScope) ? outerScope : scope;
125
+ const iterable = this.evaluateExpression(clause.iter, iterScope);
107
126
  const items = Array.isArray(iterable) ? iterable : Array.from(iterable);
108
127
  for (const item of items) {
109
128
  this.assignTarget(clause.target, item, scope);
@@ -115,21 +134,23 @@ function evaluateComprehension(node, scope, emit) {
115
134
  };
116
135
  walk(0);
117
136
  }
118
- function* generateComprehension(node, scope, valueFactory) {
137
+ function* generateComprehension(node, scope, valueFactory, outerScope) {
119
138
  const clauses = node.clauses || [];
139
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
140
+ const vm = this;
120
141
  const walk = (index) => {
121
- const self = this;
122
142
  return (function* () {
123
143
  if (index >= clauses.length) {
124
144
  yield valueFactory();
125
145
  return;
126
146
  }
127
147
  const clause = clauses[index];
128
- const iterable = self.evaluateExpression(clause.iter, scope);
148
+ const iterScope = (index === 0 && outerScope) ? outerScope : scope;
149
+ const iterable = vm.evaluateExpression(clause.iter, iterScope);
129
150
  const items = Array.isArray(iterable) ? iterable : Array.from(iterable);
130
151
  for (const item of items) {
131
- self.assignTarget(clause.target, item, scope);
132
- const passes = clause.ifs.every((cond) => self.isTruthy(self.evaluateExpression(cond, scope), scope));
152
+ vm.assignTarget(clause.target, item, scope);
153
+ const passes = clause.ifs.every((cond) => vm.isTruthy(vm.evaluateExpression(cond, scope), scope));
133
154
  if (passes) {
134
155
  yield* walk(index + 1);
135
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"callable.js","sourceRoot":"","sources":["../../src/vm/callable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callable.js","sourceRoot":"","sources":["../../src/vm/callable.ts"],"names":[],"mappings":";;AAIA,oCA0FC;AAED,sCAQC;AAED,sDAoBC;AAED,sDA+BC;AAED,gDAcC;AA9KD,oCAAuC;AACvC,mDAAyI;AAEzI,SAAgB,YAAY,CAE1B,IAAa,EACb,IAAe,EACf,KAAY,EACZ,SAAkC,EAAE;IAEpC,8CAA8C;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IACD,IAAI,IAAI,YAAY,0BAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,qBAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,IAAI,QAAiB,CAAC;gBACtB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;oBAChC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;qBAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAChD,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACpC,CAAC;qBAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC9B,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACzB,OAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,IAAI,GAAG,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,sBAAM,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzB,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClC,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAClE,OAAO,IAAI,2BAAW,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,IAAI,qBAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC1C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,4BAAY;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC;YAClD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,IAAI,YAAY,uBAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,0BAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,IAAI,YAAY,0BAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,2BAAW,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,aAAa,CAAuB,IAAe;IACjE,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAW,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACjD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnE,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,qBAAqB,CAAuB,IAAa,EAAE,KAAY,EAAE,IAAgB,EAAE,UAAkB;IAC3H,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE;QAC7B,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/G,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AAED,QAAe,CAAC,CAAC,qBAAqB,CAEpC,IAAa,EACb,KAAY,EACZ,YAA2B,EAC3B,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,4DAA4D;IAC5D,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,MAAM,IAAI,GAAG,CAAC,KAAa,EAA+B,EAAE;QAC1D,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,YAAY,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3G,IAAI,MAAM,EAAE,CAAC;oBACX,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IACF,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,kBAAkB,CAAuB,IAAa;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAW,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAI,IAAgB,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC5F,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { VirtualMachine } from './vm';
2
+ import { CompareOp } from '../types';
3
+ import { PyValue, Scope } from './runtime-types';
4
+ export declare function applyCompare(this: VirtualMachine, op: CompareOp, a: PyValue, b: PyValue): boolean;
5
+ export declare function iterableToArray(this: VirtualMachine, iterable: PyValue): PyValue[];
6
+ export declare function matchValueEquals(left: PyValue, right: PyValue): boolean;
7
+ export declare function applyBindings(bindings: Map<string, PyValue>, scope: Scope): void;
8
+ export declare function matchPattern(this: VirtualMachine, node: PyValue, value: PyValue, scope: Scope): {
9
+ matched: boolean;
10
+ bindings: Map<string, PyValue>;
11
+ };
12
+ export declare function evaluateExpression(this: VirtualMachine, _node: PyValue, _scope: Scope): PyValue;
13
+ export declare function executeStatement(this: VirtualMachine, _node: PyValue, _scope: Scope): PyValue;
14
+ export declare function executeBlockGenerator(this: VirtualMachine, body: PyValue[], scope: Scope): Generator<PyValue, PyValue>;
15
+ export declare function executeStatementGenerator(this: VirtualMachine, node: PyValue, scope: Scope): Generator<PyValue, PyValue>;
16
+ export declare function executeBlock(this: VirtualMachine, _body: PyValue[], _scope: Scope): PyValue;
17
+ //# sourceMappingURL=execution-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-helpers.d.ts","sourceRoot":"","sources":["../../src/vm/execution-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAe,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,OAAO,EAA8F,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7I,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAyBjG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,CAMlF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBvE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAIhF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,KAAK,GACX;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAoCtD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAE/F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAE7F;AAED,wBAAiB,qBAAqB,CACpC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,KAAK,GACX,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAK7B;AAED,wBAAiB,yBAAyB,CACxC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,KAAK,GACX,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CA+L7B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAM3F"}