@katnip-org/compiler 0.1.0

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 (70) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +42 -0
  4. package/build/cli.d.ts +2 -0
  5. package/build/cli.js +141 -0
  6. package/build/cli.js.map +1 -0
  7. package/build/codegen/SB3Generator.d.ts +1 -0
  8. package/build/codegen/SB3Generator.js +2 -0
  9. package/build/codegen/SB3Generator.js.map +1 -0
  10. package/build/index.d.ts +3 -0
  11. package/build/index.js +26 -0
  12. package/build/index.js.map +1 -0
  13. package/build/ir/IRGenerator.d.ts +1 -0
  14. package/build/ir/IRGenerator.js +2 -0
  15. package/build/ir/IRGenerator.js.map +1 -0
  16. package/build/ir/IRNode.d.ts +1 -0
  17. package/build/ir/IRNode.js +2 -0
  18. package/build/ir/IRNode.js.map +1 -0
  19. package/build/lexer/Lexer.d.ts +69 -0
  20. package/build/lexer/Lexer.js +441 -0
  21. package/build/lexer/Lexer.js.map +1 -0
  22. package/build/lexer/LexerState.d.ts +14 -0
  23. package/build/lexer/LexerState.js +16 -0
  24. package/build/lexer/LexerState.js.map +1 -0
  25. package/build/lexer/Token.d.ts +105 -0
  26. package/build/lexer/Token.js +114 -0
  27. package/build/lexer/Token.js.map +1 -0
  28. package/build/parser/AST-nodes.d.ts +230 -0
  29. package/build/parser/AST-nodes.js +10 -0
  30. package/build/parser/AST-nodes.js.map +1 -0
  31. package/build/parser/BindingPowerTable.d.ts +8 -0
  32. package/build/parser/BindingPowerTable.js +37 -0
  33. package/build/parser/BindingPowerTable.js.map +1 -0
  34. package/build/parser/Parser.d.ts +208 -0
  35. package/build/parser/Parser.js +1215 -0
  36. package/build/parser/Parser.js.map +1 -0
  37. package/build/semantic/InternalTypes.d.ts +43 -0
  38. package/build/semantic/InternalTypes.js +95 -0
  39. package/build/semantic/InternalTypes.js.map +1 -0
  40. package/build/semantic/SemanticAnalyzer.d.ts +109 -0
  41. package/build/semantic/SemanticAnalyzer.js +998 -0
  42. package/build/semantic/SemanticAnalyzer.js.map +1 -0
  43. package/build/semantic/StdlibLoader.d.ts +18 -0
  44. package/build/semantic/StdlibLoader.js +42 -0
  45. package/build/semantic/StdlibLoader.js.map +1 -0
  46. package/build/semantic/SymbolTable.d.ts +64 -0
  47. package/build/semantic/SymbolTable.js +28 -0
  48. package/build/semantic/SymbolTable.js.map +1 -0
  49. package/build/utils/ErrorReporter.d.ts +29 -0
  50. package/build/utils/ErrorReporter.js +84 -0
  51. package/build/utils/ErrorReporter.js.map +1 -0
  52. package/build/utils/Logger.d.ts +32 -0
  53. package/build/utils/Logger.js +62 -0
  54. package/build/utils/Logger.js.map +1 -0
  55. package/build/utils/colors.d.ts +8 -0
  56. package/build/utils/colors.js +14 -0
  57. package/build/utils/colors.js.map +1 -0
  58. package/package.json +58 -0
  59. package/stdlib/clone.knip +5 -0
  60. package/stdlib/console.knip +6 -0
  61. package/stdlib/control.knip +3 -0
  62. package/stdlib/dict.knip +7 -0
  63. package/stdlib/events.knip +3 -0
  64. package/stdlib/list.knip +10 -0
  65. package/stdlib/looks.knip +4 -0
  66. package/stdlib/math.knip +7 -0
  67. package/stdlib/motion.knip +25 -0
  68. package/stdlib/pen.knip +14 -0
  69. package/stdlib/prelude.knip +25 -0
  70. package/stdlib/str.knip +3 -0
@@ -0,0 +1,25 @@
1
+ #> motion.knip ~ sprite motion blocks. <#
2
+
3
+ public enum Target { RANDOM, MOUSE }
4
+ public enum RotationStyle { LEFT, RIGHT }
5
+
6
+ proc move(@opcode = "motion_movesteps", steps: num) -> void {}
7
+ proc turn(@opcode = "motion_turnright", degrees: num) -> void {}
8
+
9
+ proc goTo(@opcode = "motion_goto", position: Target | str) -> void {}
10
+ proc goTo(@opcode = "motion_gotoxy", x: num, y: num) -> void {}
11
+ proc glideTo(@opcode = "motion_glideto", time: num, position: Target | str) -> void {}
12
+ proc glideTo(@opcode = "motion_glidetoxy", time: num, x: num, y: num) -> void {}
13
+
14
+ proc point(@opcode = "motion_pointindirection", degrees: num) -> void {}
15
+ proc point(@opcode = "motion_pointtowards", target: Target) -> void {}
16
+
17
+ proc changeX(@opcode = "motion_changexby", dX: num) -> void {}
18
+ proc setX(@opcode = "motion_setx", x: num) -> void {}
19
+ proc changeY(@opcode = "motion_changeyby", dY: num) -> void {}
20
+ proc setY(@opcode = "motion_sety", y: num) -> void {}
21
+
22
+ proc ifOnEdgeBounce(@opcode = "motion_ifonedgebounce") -> void {}
23
+ proc setRotationStyle(@opcode = "motion_setrotationstyle", style: RotationStyle) -> void {}
24
+
25
+ proc getPosition(@opcode = "katnip_motion_position") -> (num, num) {}
@@ -0,0 +1,14 @@
1
+ #> pen.knip ~ pen extension blocks. <#
2
+
3
+ public enum ColorParam { COLOR, SATURATION, BRIGHTNESS, TRANSPARENCY }
4
+
5
+ proc down(@opcode = "pen_penDown") -> void {}
6
+ proc up(@opcode = "pen_penUp") -> void {}
7
+ proc clear(@opcode = "pen_clear") -> void {}
8
+ proc setHex(@opcode = "pen_setPenColorToColor", hex: str) -> void {}
9
+
10
+ proc setAttr(@opcode = "pen_setPenColorParamTo", attr: ColorParam, value: num) -> void {}
11
+ proc changeAttr(@opcode = "pen_changePenColorParamBy", attr: ColorParam, dA: num) -> void {}
12
+
13
+ proc setSize(@opcode = "pen_setPenSizeTo", size: num) -> void {}
14
+ proc changeSize(@opcode = "pen_changePenSizeBy", dS: num) -> void {}
@@ -0,0 +1,25 @@
1
+ #> prelude.knip ~ bare global builtins, available without a namespace. <#
2
+
3
+ proc typeof(@opcode = "katnip_typeof", value: any) -> str {} # TODO: use the katnip one
4
+
5
+ # casts
6
+ proc Num(@opcode = "katnip_cast_num", value: any) -> num {}
7
+ proc Str(@opcode = "katnip_cast_str", value: any) -> str {}
8
+ proc Bool(@opcode = "katnip_cast_bool", value: any) -> bool {}
9
+ proc List(@opcode = "katnip_cast_list", value: any) -> list<str> {}
10
+
11
+ proc wait(@opcode = "control_wait", seconds: num) -> void {}
12
+
13
+ # iter helpers
14
+ proc range(@opcode = "katnip_range", stop: num) -> list<num> {}
15
+ proc range(@opcode = "katnip_range", start: num, stop: num, step: num = 1) -> list<num> {}
16
+
17
+ proc zip(@opcode = "katnip_zip", l1: list<T>, l2: list<U>) -> (list<T>, list<U>) {}
18
+ proc enumerate(@opcode = "katnip_enumerate", items: list<T>) -> (list<num>, list<T>) {}
19
+
20
+ # constants
21
+ public true: bool = "true" == "true";
22
+ public false: bool = "false" == "";
23
+
24
+ # misc
25
+ proc len(@opcode = "operator_length", input: str) -> num {}
@@ -0,0 +1,3 @@
1
+ #> str.knip ~ methods on string values (first param `self` marks a method). <#
2
+
3
+ proc contains(@opcode = "operator_contains", self: str, substring: str) -> bool {}