@lewin671/python-vm 0.1.0 → 0.1.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 (142) hide show
  1. package/dist/compiler.d.ts.map +1 -0
  2. package/dist/compiler.js.map +1 -0
  3. package/dist/compiler_module/compiler.d.ts.map +1 -0
  4. package/dist/compiler_module/compiler.js.map +1 -0
  5. package/dist/compiler_module/index.d.ts.map +1 -0
  6. package/dist/compiler_module/index.js.map +1 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lexer/index.d.ts.map +1 -0
  10. package/dist/lexer/index.js.map +1 -0
  11. package/dist/lexer/lexer.d.ts.map +1 -0
  12. package/dist/lexer/lexer.js.map +1 -0
  13. package/dist/parser/expressions.d.ts.map +1 -0
  14. package/dist/parser/expressions.js.map +1 -0
  15. package/dist/parser/index.d.ts.map +1 -0
  16. package/dist/parser/index.js.map +1 -0
  17. package/dist/parser/parser.d.ts.map +1 -0
  18. package/dist/parser/parser.js.map +1 -0
  19. package/dist/parser/statements.d.ts.map +1 -0
  20. package/dist/parser/statements.js.map +1 -0
  21. package/dist/parser/targets.d.ts.map +1 -0
  22. package/dist/parser/targets.js.map +1 -0
  23. package/dist/types/ast.d.ts.map +1 -0
  24. package/dist/types/ast.js.map +1 -0
  25. package/dist/types/bytecode.d.ts.map +1 -0
  26. package/dist/types/bytecode.js.map +1 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/index.js.map +1 -0
  29. package/dist/types/token.d.ts.map +1 -0
  30. package/dist/types/token.js.map +1 -0
  31. package/dist/vm/builtins.d.ts.map +1 -0
  32. package/dist/vm/builtins.js.map +1 -0
  33. package/dist/vm/callable.d.ts.map +1 -0
  34. package/dist/vm/callable.js.map +1 -0
  35. package/dist/vm/execution.d.ts.map +1 -0
  36. package/dist/vm/execution.js.map +1 -0
  37. package/dist/vm/expression-generator.d.ts.map +1 -0
  38. package/dist/vm/expression-generator.js.map +1 -0
  39. package/dist/vm/expressions.d.ts.map +1 -0
  40. package/dist/vm/expressions.js.map +1 -0
  41. package/dist/vm/imports.d.ts.map +1 -0
  42. package/dist/vm/imports.js.map +1 -0
  43. package/dist/vm/index.d.ts.map +1 -0
  44. package/dist/vm/index.js.map +1 -0
  45. package/dist/vm/operations.d.ts.map +1 -0
  46. package/dist/vm/operations.js.map +1 -0
  47. package/dist/vm/runtime-types.d.ts.map +1 -0
  48. package/dist/vm/runtime-types.js.map +1 -0
  49. package/dist/vm/statements.d.ts.map +1 -0
  50. package/dist/vm/statements.js.map +1 -0
  51. package/dist/vm/truthy.d.ts.map +1 -0
  52. package/dist/vm/truthy.js.map +1 -0
  53. package/dist/vm/value-utils.d.ts.map +1 -0
  54. package/dist/vm/value-utils.js.map +1 -0
  55. package/dist/vm/vm.d.ts.map +1 -0
  56. package/dist/vm/vm.js.map +1 -0
  57. package/package.json +7 -1
  58. package/.claude/settings.local.json +0 -3
  59. package/.prettierrc +0 -7
  60. package/Agents.md +0 -66
  61. package/SETUP.md +0 -171
  62. package/examples/assert_testing.py +0 -38
  63. package/examples/big_int_precision.py +0 -2
  64. package/examples/boolean_logic.py +0 -35
  65. package/examples/break_continue.py +0 -43
  66. package/examples/classes_objects.py +0 -43
  67. package/examples/compiler_killer_async.py +0 -6
  68. package/examples/compiler_killer_bigint.py +0 -3
  69. package/examples/compiler_killer_bool_int_dict_key.py +0 -5
  70. package/examples/compiler_killer_bool_len.py +0 -9
  71. package/examples/compiler_killer_floor_division.py +0 -4
  72. package/examples/compiler_killer_is_identity.py +0 -3
  73. package/examples/compiler_killer_list_sort_return.py +0 -3
  74. package/examples/compiler_killer_match.py +0 -13
  75. package/examples/compiler_killer_negative_repeat.py +0 -3
  76. package/examples/compiler_killer_negative_zero_repr.py +0 -3
  77. package/examples/compiler_killer_rounding.py +0 -4
  78. package/examples/compiler_killer_slice_assign.py +0 -3
  79. package/examples/comprehensions.py +0 -28
  80. package/examples/conditions.py +0 -13
  81. package/examples/context_manager.py +0 -35
  82. package/examples/decorators.py +0 -50
  83. package/examples/exceptions.py +0 -40
  84. package/examples/fibonacci.py +0 -10
  85. package/examples/functions.py +0 -38
  86. package/examples/generator.py +0 -51
  87. package/examples/global_nonlocal.py +0 -48
  88. package/examples/hello.py +0 -3
  89. package/examples/itertools_example.py +0 -33
  90. package/examples/lists_dicts.py +0 -29
  91. package/examples/loops.py +0 -19
  92. package/examples/math_ops.py +0 -15
  93. package/examples/nan_set.py +0 -6
  94. package/examples/numbers_operators.py +0 -51
  95. package/examples/sets.py +0 -36
  96. package/examples/slicing.py +0 -29
  97. package/examples/starred_unpacking.py +0 -3
  98. package/examples/string_formatting.py +0 -36
  99. package/examples/strings.py +0 -22
  100. package/examples/tuples.py +0 -45
  101. package/examples/type_conversion.py +0 -41
  102. package/jest.config.js +0 -15
  103. package/notes/iterations/compiler-runtime/compiler-runtime_2025-09-16.md +0 -25
  104. package/notes/iterations/compiler-runtime/compiler-runtime_2026-01-16.md +0 -24
  105. package/notes/iterations/compiler-runtime/compiler-runtime_test_2026-01-16.md +0 -21
  106. package/notes/iterations/floor-division/floor-division_2026-01-16.md +0 -29
  107. package/prompts/commit.txt +0 -9
  108. package/prompts/task.txt +0 -21
  109. package/prompts/test.txt +0 -23
  110. package/scripts/codex-loop.js +0 -215
  111. package/scripts/verify.sh +0 -12
  112. package/src/compiler.ts +0 -58
  113. package/src/compiler_module/compiler.ts +0 -19
  114. package/src/compiler_module/index.ts +0 -1
  115. package/src/index.ts +0 -39
  116. package/src/lexer/index.ts +0 -1
  117. package/src/lexer/lexer.ts +0 -402
  118. package/src/parser/expressions.ts +0 -462
  119. package/src/parser/index.ts +0 -1
  120. package/src/parser/parser.ts +0 -102
  121. package/src/parser/statements.ts +0 -366
  122. package/src/parser/targets.ts +0 -71
  123. package/src/types/ast.ts +0 -64
  124. package/src/types/bytecode.ts +0 -50
  125. package/src/types/index.ts +0 -3
  126. package/src/types/token.ts +0 -44
  127. package/src/vm/builtins.ts +0 -237
  128. package/src/vm/callable.ts +0 -154
  129. package/src/vm/execution.ts +0 -251
  130. package/src/vm/expression-generator.ts +0 -65
  131. package/src/vm/expressions.ts +0 -373
  132. package/src/vm/imports.ts +0 -61
  133. package/src/vm/index.ts +0 -2
  134. package/src/vm/operations.ts +0 -414
  135. package/src/vm/runtime-types.ts +0 -292
  136. package/src/vm/statements.ts +0 -358
  137. package/src/vm/truthy.ts +0 -36
  138. package/src/vm/value-utils.ts +0 -173
  139. package/src/vm/vm.ts +0 -80
  140. package/tests/compiler.test.ts +0 -111
  141. package/tsconfig.json +0 -20
  142. package/vitest.config.ts +0 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truthy.js","sourceRoot":"","sources":["../../src/vm/truthy.ts"],"names":[],"mappings":";;AAIA,4BA+BC;AAlCD,mDAAyE;AACzE,+CAAwD;AAExD,SAAgB,QAAQ,CAAuB,KAAU,EAAE,KAAY;IACrE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,KAAK,EAAE,CAAC;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,KAAK,YAAY,sBAAM;QAAE,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACnD,IAAI,KAAK,YAAY,GAAG;QAAE,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAChD,IAAI,KAAK,YAAY,0BAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7D,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,2BAAW,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7D,IAAI,CAAC,IAAA,2BAAa,EAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,2BAAW,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAA,sBAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-utils.d.ts","sourceRoot":"","sources":["../../src/vm/value-utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,YAAmB,CAAC;AAEvD,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAAmC,CAAC;AACnF,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,OAAqE,CAAC;AAC/G,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,OAAyD,CAAC;AACrG,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,OAA0F,CAAC;AACpI,eAAO,MAAM,SAAS,GAAI,OAAO,GAAG,KAAG,OAKnB,CAAC;AACrB,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,OAC4D,CAAC;AACxG,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,MAKrC,CAAC;AACF,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,MAK1C,CAAC;AACF,eAAO,MAAM,eAAe,GAAI,MAAM,GAAG,EAAE,OAAO,GAAG,KAAG,OAC0B,CAAC;AACnF,eAAO,MAAM,aAAa,GAAI,MAAM,GAAG,EAAE,OAAO,GAAG,KAAG,OAUrD,CAAC;AACF,eAAO,MAAM,cAAc,GACzB,MAAM,GAAG,EACT,OAAO,GAAG,KACT;IAAE,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAM7E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAK5D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,KAAG,MAevC,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,OAAO,GAAG,KAAG,MAwCnC,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,OAAO,GAAG,KAAG,MAMlC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,GAAG,QAA+B,CAAC;AAEpE,eAAO,MAAM,SAAS,GAAI,OAAO,GAAG,QAInC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,GAAG,EAAE,OAAO,GAAG,6BAmBjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAiBxF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-utils.js","sourceRoot":"","sources":["../../src/vm/value-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../src/vm/vm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC3H,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtK,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACrG,OAAO,EACL,eAAe,EACf,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,qBAAa,cAAc;IAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAC1C,iBAAiB,EAAE,MAAM,EAAE,CAAC;gBAEvB,iBAAiB,GAAE,MAAM,EAAoB;IAIzD,OAAO,iBAAW;IAClB,eAAe,yBAAmB;IAClC,YAAY,sBAAgB;IAC5B,mBAAmB,6BAAuB;IAC1C,kBAAkB,4BAAsB;IACxC,iBAAiB,2BAAqB;IACtC,YAAY,sBAAgB;IAC5B,eAAe,yBAAmB;IAClC,gBAAgB,0BAAoB;IACpC,YAAY,sBAAgB;IAC5B,aAAa,uBAAiB;IAC9B,qBAAqB,+BAAyB;IAC9C,yBAAyB,mCAA6B;IACtD,2BAA2B,qCAA+B;IAC1D,gBAAgB,0BAAoB;IACpC,YAAY,sBAAgB;IAC5B,eAAe,yBAAmB;IAClC,YAAY,sBAAgB;IAC5B,kBAAkB,4BAAsB;IACxC,wBAAwB,kCAA4B;IACpD,uBAAuB,iCAA2B;IAClD,eAAe,yBAAmB;IAClC,eAAe,yBAAmB;IAClC,UAAU,oBAAc;IACxB,QAAQ,kBAAY;IACpB,QAAQ,kBAAY;IACpB,WAAW,qBAAe;IAC1B,aAAa,uBAAiB;IAC9B,YAAY,sBAAgB;IAC5B,kBAAkB,4BAAsB;IACxC,mBAAmB,6BAAuB;IAC1C,kBAAkB,4BAAsB;IACxC,YAAY,sBAAgB;IAC5B,YAAY,sBAAgB;IAC5B,kBAAkB,4BAAsB;IACxC,YAAY,sBAAgB;IAC5B,aAAa,uBAAiB;IAC9B,qBAAqB,+BAAyB;IAC9C,qBAAqB,+BAAyB;IAC9C,kBAAkB,4BAAsB;CACzC;AAED,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm.js","sourceRoot":"","sources":["../../src/vm/vm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAA6C;AAC7C,yCAA2H;AAC3H,2CAAsK;AACtK,iEAAqE;AACrE,uCAAqG;AACrG,+CAQuB;AACvB,6CAA6F;AAC7F,6CAUsB;AACtB,qCAAoC;AAGpC,MAAa,cAAc;IAIzB,YAAY,oBAA8B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAHlD,gBAAW,GAAqB,IAAI,GAAG,EAAE,CAAC;QAOjD,YAAO,GAAG,mBAAO,CAAC;QAClB,oBAAe,GAAG,0BAAe,CAAC;QAClC,iBAAY,GAAG,sBAAY,CAAC;QAC5B,wBAAmB,GAAG,6BAAmB,CAAC;QAC1C,uBAAkB,GAAG,4BAAkB,CAAC;QACxC,sBAAiB,GAAG,2BAAiB,CAAC;QACtC,iBAAY,GAAG,wBAAY,CAAC;QAC5B,oBAAe,GAAG,2BAAe,CAAC;QAClC,qBAAgB,GAAG,4BAAgB,CAAC;QACpC,iBAAY,GAAG,wBAAY,CAAC;QAC5B,kBAAa,GAAG,yBAAa,CAAC;QAC9B,0BAAqB,GAAG,iCAAqB,CAAC;QAC9C,8BAAyB,GAAG,qCAAyB,CAAC;QACtD,gCAA2B,GAAG,kDAA2B,CAAC;QAC1D,qBAAgB,GAAG,6BAAgB,CAAC;QACpC,iBAAY,GAAG,yBAAY,CAAC;QAC5B,oBAAe,GAAG,4BAAe,CAAC;QAClC,iBAAY,GAAG,yBAAY,CAAC;QAC5B,uBAAkB,GAAG,gCAAkB,CAAC;QACxC,6BAAwB,GAAG,sCAAwB,CAAC;QACpD,4BAAuB,GAAG,qCAAuB,CAAC;QAClD,oBAAe,GAAG,6BAAe,CAAC;QAClC,oBAAe,GAAG,6BAAe,CAAC;QAClC,eAAU,GAAG,wBAAU,CAAC;QACxB,aAAQ,GAAG,sBAAQ,CAAC;QACpB,aAAQ,GAAG,iBAAQ,CAAC;QACpB,gBAAW,GAAG,wBAAW,CAAC;QAC1B,kBAAa,GAAG,0BAAa,CAAC;QAC9B,iBAAY,GAAG,yBAAY,CAAC;QAC5B,uBAAkB,GAAG,+BAAkB,CAAC;QACxC,wBAAmB,GAAG,gCAAmB,CAAC;QAC1C,uBAAkB,GAAG,+BAAkB,CAAC;QACxC,iBAAY,GAAG,yBAAY,CAAC;QAC5B,iBAAY,GAAG,yBAAY,CAAC;QAC5B,uBAAkB,GAAG,+BAAkB,CAAC;QACxC,iBAAY,GAAG,uBAAY,CAAC;QAC5B,kBAAa,GAAG,wBAAa,CAAC;QAC9B,0BAAqB,GAAG,gCAAqB,CAAC;QAC9C,0BAAqB,GAAG,gCAAqB,CAAC;QAC9C,uBAAkB,GAAG,6BAAkB,CAAC;QA1CtC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CA0CF;AAhDD,wCAgDC;AAED,kDAAgC"}
package/package.json CHANGED
@@ -1,9 +1,15 @@
1
1
  {
2
2
  "name": "@lewin671/python-vm",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "A Python compiler and interpreter implemented in TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "README_zh-CN.md",
11
+ "LICENSE"
12
+ ],
7
13
  "scripts": {
8
14
  "build": "tsc",
9
15
  "dev": "tsc --watch",
@@ -1,3 +0,0 @@
1
- {
2
- "outputStyle": "default"
3
- }
package/.prettierrc DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "semi": true,
3
- "trailingComma": "all",
4
- "singleQuote": true,
5
- "printWidth": 100,
6
- "tabWidth": 2
7
- }
package/Agents.md DELETED
@@ -1,66 +0,0 @@
1
- # Python Compiler Architecture (TypeScript)
2
-
3
- ## Overview
4
-
5
- This project is a Python compiler + interpreter written in TypeScript.
6
- It follows a classic 4-stage pipeline:
7
-
8
- **Lex → Parse → Compile → Execute**
9
-
10
- Goal: keep the system **modular, testable, and easy to extend.**
11
-
12
- ## Architecture
13
-
14
- ```
15
- Python Source
16
-
17
- Lexer → Tokens
18
-
19
- Parser → AST
20
-
21
- Compiler → Bytecode
22
-
23
- VM → Result
24
- ```
25
-
26
- Each stage must:
27
-
28
- * Do one job only
29
- * Have clear input/output types
30
- * Avoid cross-stage coupling
31
-
32
- ## Engineering Rules
33
-
34
- ### 1. 500-Line Rule
35
-
36
- * **Hard limit:** No `.ts` file over **500 lines**
37
- * **Refactor early:** At **400 lines**, start splitting
38
- * **Why:**
39
-
40
- * Easier to read and review
41
- * Faster debugging
42
- * Better AI/code-assist context
43
-
44
- ### 2. Modularity
45
-
46
- * One file = one main responsibility
47
- * No “god files”
48
- * Shared logic goes into `utils/` or `common/`
49
-
50
- ### 3. Stage Isolation
51
-
52
- * Lexer never touches AST
53
- * Parser never emits bytecode
54
- * Compiler never executes
55
- * VM never parses
56
-
57
- Each layer talks only through well-defined data structures.
58
-
59
- ### 4. Test by Stage
60
-
61
- * Unit test each stage independently:
62
-
63
- * Lexer → tokens
64
- * Parser → AST
65
- * Compiler → bytecode
66
- * VM → runtime result
package/SETUP.md DELETED
@@ -1,171 +0,0 @@
1
- # 项目设置和测试说明
2
-
3
- ## 项目概览
4
-
5
- 这是一个用 TypeScript 实现的 Python 编译器项目。目前编译器核心功能尚未完全实现,使用方法壳来定义接口。
6
-
7
- ## 当前状态
8
-
9
- ### ✅ 已完成
10
- - 项目结构搭建
11
- - 配置文件(TypeScript, Jest, ESLint, Prettier)
12
- - 编译器接口定义(方法壳)
13
- - 完整的测试用例
14
- - Python 示例脚本(可在 shell 中正常运行)
15
-
16
- ### 🚧 待实现
17
- - 词法分析器(Tokenizer)
18
- - 语法分析器(Parser)
19
- - 编译器(Compiler)
20
- - 虚拟机(VM)
21
-
22
- ## 快速开始
23
-
24
- ### 安装依赖
25
- ```bash
26
- npm install
27
- ```
28
-
29
- ### 编译项目
30
- ```bash
31
- npm run build
32
- ```
33
-
34
- ### 运行测试
35
- ```bash
36
- npm test
37
- ```
38
-
39
- **注意:** 测试预期会失败,因为编译器核心功能尚未实现。所有 24 个测试都会报错:
40
- ```
41
- Error: Tokenizer not implemented yet
42
- ```
43
-
44
- 这是正常的!这表明:
45
- 1. 测试框架正常工作
46
- 2. 测试用例正确配置
47
- 3. 编译器接口定义完整
48
- 4. 现在可以开始实现各个模块
49
-
50
- ## 验证 Python 脚本
51
-
52
- 所有示例 Python 脚本都可以在 shell 中正常运行:
53
-
54
- ```bash
55
- # Hello World
56
- python3 examples/hello.py
57
-
58
- # 数学运算
59
- python3 examples/math.py
60
-
61
- # 斐波那契数列
62
- python3 examples/fibonacci.py
63
-
64
- # 条件语句
65
- python3 examples/conditions.py
66
-
67
- # 循环
68
- python3 examples/loops.py
69
- ```
70
-
71
- ## 项目结构
72
-
73
- ```
74
- python-compiler-ts/
75
- ├── src/
76
- │ ├── compiler.ts # 编译器主类(方法壳)
77
- │ └── index.ts # CLI 入口
78
- ├── tests/
79
- │ └── compiler.test.ts # 24 个测试用例
80
- ├── examples/ # Python 示例脚本
81
- │ ├── hello.py # Hello World
82
- │ ├── math.py # 数学运算
83
- │ ├── fibonacci.py # 递归函数
84
- │ ├── conditions.py # 条件语句
85
- │ └── loops.py # 循环语句
86
- ├── dist/ # 编译输出(npm run build)
87
- ├── package.json
88
- ├── tsconfig.json
89
- ├── jest.config.js
90
- └── README.md
91
- ```
92
-
93
- ## 测试覆盖范围
94
-
95
- 测试用例涵盖以下 Python 特性:
96
-
97
- 1. **Hello World** (2 tests)
98
- - 简单的 print 语句
99
- - 运行 hello.py 文件
100
-
101
- 2. **变量和算术运算** (3 tests)
102
- - 变量赋值
103
- - 基本算术运算
104
- - 运行 math.py 文件
105
-
106
- 3. **函数** (4 tests)
107
- - 函数定义
108
- - 函数调用
109
- - 递归函数
110
- - 运行 fibonacci.py 文件
111
-
112
- 4. **控制流** (3 tests)
113
- - if 语句
114
- - if-elif-else 语句
115
- - 运行 conditions.py 文件
116
-
117
- 5. **循环** (4 tests)
118
- - for 循环(range)
119
- - while 循环
120
- - 列表迭代
121
- - 运行 loops.py 文件
122
-
123
- 6. **数据类型** (5 tests)
124
- - 整数
125
- - 浮点数
126
- - 字符串
127
- - 布尔值
128
- - 列表
129
-
130
- 7. **运算符** (3 tests)
131
- - 算术运算符(+, -, *, /, %, **)
132
- - 比较运算符(==, !=, <, >, <=, >=)
133
- - 逻辑运算符(and, or, not)
134
-
135
- **总计:24 个测试用例,全部预期失败**
136
-
137
- ## 下一步
138
-
139
- 1. 实现 `tokenize()` 方法 - 词法分析
140
- 2. 实现 `parse()` 方法 - 语法分析
141
- 3. 实现 `compile()` 方法 - 编译到字节码
142
- 4. 实现 `execute()` 方法 - 虚拟机执行
143
- 5. 逐步通过测试用例
144
-
145
- ## 开发命令
146
-
147
- ```bash
148
- # 开发模式(监听文件变化)
149
- npm run dev
150
-
151
- # 运行测试(监听模式)
152
- npm run test:watch
153
-
154
- # 测试覆盖率
155
- npm run test:coverage
156
-
157
- # 代码检查
158
- npm run lint
159
-
160
- # 代码格式化
161
- npm run format
162
- ```
163
-
164
- ## 贡献指南
165
-
166
- 1. 从简单的功能开始实现(如:整数字面量、变量赋值)
167
- 2. 确保每次实现后运行测试
168
- 3. 逐步增加复杂度
169
- 4. 保持代码整洁和文档更新
170
-
171
- 祝你编码愉快!🚀
@@ -1,38 +0,0 @@
1
- # Assert 语句进行简单测试
2
- def test_addition():
3
- assert 2 + 2 == 4, "Addition failed"
4
- assert 1 + 1 == 2
5
- print("Addition tests passed")
6
-
7
- def test_string():
8
- assert "hello".upper() == "HELLO"
9
- assert "hello" == "hello"
10
- print("String tests passed")
11
-
12
- def test_list():
13
- lst = [1, 2, 3]
14
- assert len(lst) == 3
15
- assert 2 in lst
16
- assert 4 not in lst
17
- print("List tests passed")
18
-
19
- def test_comparison():
20
- assert 5 > 3
21
- assert 2 < 5
22
- assert 5 >= 5
23
- print("Comparison tests passed")
24
-
25
- # 运行测试
26
- test_addition()
27
- test_string()
28
- test_list()
29
- test_comparison()
30
-
31
- print("\nAll tests passed!")
32
-
33
- # 测试失败的示例
34
- print("\nTesting failure case:")
35
- try:
36
- assert 1 == 2, "This assertion will fail"
37
- except AssertionError as e:
38
- print(f"Caught AssertionError: {e}")
@@ -1,2 +0,0 @@
1
- # Exposes JS-number precision loss if integers are not BigInt-backed.
2
- print(10**20 + 1 == 10**20)
@@ -1,35 +0,0 @@
1
- # 布尔类型和逻辑运算
2
- x = True
3
- y = False
4
-
5
- print("x and y:", x and y)
6
- print("x or y:", x or y)
7
- print("not x:", not x)
8
-
9
- # 比较运算
10
- a = 10
11
- b = 20
12
-
13
- print(f"{a} == {b}:", a == b)
14
- print(f"{a} != {b}:", a != b)
15
- print(f"{a} < {b}:", a < b)
16
- print(f"{a} > {b}:", a > b)
17
- print(f"{a} <= {b}:", a <= b)
18
- print(f"{a} >= {b}:", a >= b)
19
-
20
- # 链式比较
21
- c = 15
22
- print(f"{a} < {c} < {b}:", a < c < b)
23
-
24
- # 成员运算符
25
- numbers = [1, 2, 3, 4, 5]
26
- print("3 in numbers:", 3 in numbers)
27
- print("6 not in numbers:", 6 not in numbers)
28
-
29
- # 布尔条件
30
- if (x or (a < b and not y)):
31
- print("Complex condition is true")
32
-
33
- # 三元运算符
34
- result = "positive" if a > 0 else "non-positive"
35
- print(f"a is {result}")
@@ -1,43 +0,0 @@
1
- # Break 和 Continue 语句
2
- print("Break example:")
3
- for i in range(10):
4
- if i == 5:
5
- break
6
- print(i, end=" ")
7
- print()
8
-
9
- print("\nContinue example:")
10
- for i in range(10):
11
- if i % 2 == 0:
12
- continue
13
- print(i, end=" ")
14
- print()
15
-
16
- # 嵌套循环中的 break
17
- print("\nNested loop with break:")
18
- for i in range(3):
19
- for j in range(3):
20
- if j == 1:
21
- break
22
- print(f"({i}, {j})", end=" ")
23
- print()
24
-
25
- # While 循环中的 break 和 continue
26
- print("\nWhile with break and continue:")
27
- count = 0
28
- while count < 10:
29
- count += 1
30
- if count == 3:
31
- continue
32
- if count == 8:
33
- break
34
- print(count, end=" ")
35
- print()
36
-
37
- # Pass 语句
38
- print("\nPass statement:")
39
- for i in range(3):
40
- if i == 1:
41
- pass # 占位符
42
- else:
43
- print(f"i = {i}")
@@ -1,43 +0,0 @@
1
- # 类定义和对象
2
- class Dog:
3
- species = "Canis familiaris"
4
-
5
- def __init__(self, name, age):
6
- self.name = name
7
- self.age = age
8
-
9
- def bark(self):
10
- return f"{self.name} says: Woof!"
11
-
12
- def birthday(self):
13
- self.age += 1
14
- return f"{self.name} is now {self.age} years old"
15
-
16
- # 创建对象
17
- dog1 = Dog("Rex", 3)
18
- dog2 = Dog("Buddy", 5)
19
-
20
- print(dog1.bark())
21
- print(dog2.bark())
22
-
23
- # 访问属性
24
- print(f"{dog1.name} is {dog1.age} years old")
25
-
26
- # 调用方法
27
- print(dog1.birthday())
28
- print(f"Species: {dog1.species}")
29
-
30
- # 继承
31
- class Animal:
32
- def __init__(self, name):
33
- self.name = name
34
-
35
- def speak(self):
36
- return f"{self.name} makes a sound"
37
-
38
- class Cat(Animal):
39
- def speak(self):
40
- return f"{self.name} says: Meow!"
41
-
42
- cat = Cat("Whiskers")
43
- print(cat.speak())
@@ -1,6 +0,0 @@
1
- import asyncio
2
-
3
- async def main():
4
- return 3
5
-
6
- print(asyncio.run(main()))
@@ -1,3 +0,0 @@
1
- # Exploit: bool is a subclass of int; indexing should treat True as 1
2
- arr = [10, 20]
3
- print(arr[True])
@@ -1,5 +0,0 @@
1
- d = {1: "int", True: "bool"}
2
- print(len(d))
3
- print(d[1])
4
- print(d[True])
5
- print(list(d.keys()))
@@ -1,9 +0,0 @@
1
- class Trick:
2
- def __bool__(self):
3
- return False
4
- def __len__(self):
5
- return 1
6
-
7
- t = Trick()
8
- print(bool(t))
9
- print("truthy" if t else "falsy")
@@ -1,4 +0,0 @@
1
- x = -3
2
- print(x // 2)
3
- print(x % 2)
4
- print((x // 2) * 2 + (x % 2))
@@ -1,3 +0,0 @@
1
- a = int("257")
2
- b = int("257")
3
- print(a is b)
@@ -1,3 +0,0 @@
1
- a = [3, 1]
2
- print(a.sort())
3
- print(a)
@@ -1,13 +0,0 @@
1
- def classify(value):
2
- match value:
3
- case 0 | 1:
4
- return "small"
5
- case [a, b]:
6
- return a + b
7
- case _:
8
- return "other"
9
-
10
-
11
- print(classify([2, 3]))
12
- print(classify(1))
13
- print(classify("x"))
@@ -1,3 +0,0 @@
1
- print('start')
2
- print('a' * -1)
3
- print('end')
@@ -1,3 +0,0 @@
1
- # CPython preserves the sign of negative zero in float formatting.
2
- print(-0.0)
3
- print(float("-0.0"))
@@ -1,4 +0,0 @@
1
- # Adversarial: Python round uses bankers rounding (ties to even)
2
-
3
- print(round(2.5))
4
- print(round(3.5))
@@ -1,3 +0,0 @@
1
- a = [0, 1, 2, 3, 4, 5]
2
- a[1:5:2] = [9, 9]
3
- print(a)
@@ -1,28 +0,0 @@
1
- # 列表推导式
2
- numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3
-
4
- # 简单推导式
5
- squares = [x**2 for x in numbers]
6
- print("Squares:", squares)
7
-
8
- # 带条件的推导式
9
- evens = [x for x in numbers if x % 2 == 0]
10
- print("Even numbers:", evens)
11
-
12
- # 嵌套推导式
13
- matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
14
- flattened = [x for row in matrix for x in row]
15
- print("Flattened:", flattened)
16
-
17
- # 字典推导式
18
- word = "hello"
19
- char_count = {char: word.count(char) for char in word}
20
- print("Character count:", char_count)
21
-
22
- # 集合推导式
23
- unique_chars = {char for char in "programming"}
24
- print("Unique chars:", sorted(unique_chars))
25
-
26
- # 生成器表达式
27
- gen = (x**2 for x in range(5))
28
- print("Generator:", list(gen))
@@ -1,13 +0,0 @@
1
- # 条件语句示例
2
- def check_number(num):
3
- if num > 0:
4
- print(f"{num} is positive")
5
- elif num < 0:
6
- print(f"{num} is negative")
7
- else:
8
- print(f"{num} is zero")
9
-
10
- # 测试不同的数字
11
- check_number(10)
12
- check_number(-5)
13
- check_number(0)
@@ -1,35 +0,0 @@
1
- # 上下文管理器
2
- class SimpleContextManager:
3
- def __init__(self, name):
4
- self.name = name
5
-
6
- def __enter__(self):
7
- print(f"Entering {self.name}")
8
- return self
9
-
10
- def __exit__(self, exc_type, exc_val, exc_tb):
11
- print(f"Exiting {self.name}")
12
- return False
13
-
14
- print("Context manager example:")
15
- with SimpleContextManager("My Context") as ctx:
16
- print(f"Inside context: {ctx.name}")
17
-
18
- # 文件处理(最常见的上下文管理器)
19
- print("\nFile handling:")
20
- try:
21
- with open("/tmp/test.txt", "w") as f:
22
- f.write("Hello, World!")
23
- print("File written successfully")
24
- except Exception as e:
25
- print(f"Error: {e}")
26
-
27
- # 多个上下文管理器
28
- print("\nMultiple contexts:")
29
- try:
30
- with SimpleContextManager("First"):
31
- print("In first")
32
- with SimpleContextManager("Second"):
33
- print("In second")
34
- except Exception as e:
35
- print(f"Error: {e}")