@rcrsr/rill 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 (295) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +187 -0
  3. package/dist/cli.d.ts +11 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +69 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/demo.d.ts +6 -0
  8. package/dist/demo.d.ts.map +1 -0
  9. package/dist/demo.js +121 -0
  10. package/dist/demo.js.map +1 -0
  11. package/dist/index.d.ts +10 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +9 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lexer/errors.d.ts +9 -0
  16. package/dist/lexer/errors.d.ts.map +1 -0
  17. package/dist/lexer/errors.js +12 -0
  18. package/dist/lexer/errors.js.map +1 -0
  19. package/dist/lexer/helpers.d.ts +14 -0
  20. package/dist/lexer/helpers.d.ts.map +1 -0
  21. package/dist/lexer/helpers.js +30 -0
  22. package/dist/lexer/helpers.js.map +1 -0
  23. package/dist/lexer/index.d.ts +8 -0
  24. package/dist/lexer/index.d.ts.map +1 -0
  25. package/dist/lexer/index.js +8 -0
  26. package/dist/lexer/index.js.map +1 -0
  27. package/dist/lexer/operators.d.ts +11 -0
  28. package/dist/lexer/operators.d.ts.map +1 -0
  29. package/dist/lexer/operators.js +58 -0
  30. package/dist/lexer/operators.js.map +1 -0
  31. package/dist/lexer/readers.d.ts +12 -0
  32. package/dist/lexer/readers.d.ts.map +1 -0
  33. package/dist/lexer/readers.js +144 -0
  34. package/dist/lexer/readers.js.map +1 -0
  35. package/dist/lexer/state.d.ts +18 -0
  36. package/dist/lexer/state.d.ts.map +1 -0
  37. package/dist/lexer/state.js +37 -0
  38. package/dist/lexer/state.js.map +1 -0
  39. package/dist/lexer/tokenizer.d.ts +9 -0
  40. package/dist/lexer/tokenizer.d.ts.map +1 -0
  41. package/dist/lexer/tokenizer.js +100 -0
  42. package/dist/lexer/tokenizer.js.map +1 -0
  43. package/dist/lexer.d.ts +19 -0
  44. package/dist/lexer.d.ts.map +1 -0
  45. package/dist/lexer.js +344 -0
  46. package/dist/lexer.js.map +1 -0
  47. package/dist/parser/arithmetic.d.ts +16 -0
  48. package/dist/parser/arithmetic.d.ts.map +1 -0
  49. package/dist/parser/arithmetic.js +128 -0
  50. package/dist/parser/arithmetic.js.map +1 -0
  51. package/dist/parser/boolean.d.ts +15 -0
  52. package/dist/parser/boolean.d.ts.map +1 -0
  53. package/dist/parser/boolean.js +20 -0
  54. package/dist/parser/boolean.js.map +1 -0
  55. package/dist/parser/control-flow.d.ts +56 -0
  56. package/dist/parser/control-flow.d.ts.map +1 -0
  57. package/dist/parser/control-flow.js +167 -0
  58. package/dist/parser/control-flow.js.map +1 -0
  59. package/dist/parser/expressions.d.ts +23 -0
  60. package/dist/parser/expressions.d.ts.map +1 -0
  61. package/dist/parser/expressions.js +950 -0
  62. package/dist/parser/expressions.js.map +1 -0
  63. package/dist/parser/extraction.d.ts +48 -0
  64. package/dist/parser/extraction.d.ts.map +1 -0
  65. package/dist/parser/extraction.js +279 -0
  66. package/dist/parser/extraction.js.map +1 -0
  67. package/dist/parser/functions.d.ts +20 -0
  68. package/dist/parser/functions.d.ts.map +1 -0
  69. package/dist/parser/functions.js +96 -0
  70. package/dist/parser/functions.js.map +1 -0
  71. package/dist/parser/helpers.d.ts +94 -0
  72. package/dist/parser/helpers.d.ts.map +1 -0
  73. package/dist/parser/helpers.js +225 -0
  74. package/dist/parser/helpers.js.map +1 -0
  75. package/dist/parser/index.d.ts +49 -0
  76. package/dist/parser/index.d.ts.map +1 -0
  77. package/dist/parser/index.js +73 -0
  78. package/dist/parser/index.js.map +1 -0
  79. package/dist/parser/literals.d.ts +37 -0
  80. package/dist/parser/literals.d.ts.map +1 -0
  81. package/dist/parser/literals.js +373 -0
  82. package/dist/parser/literals.js.map +1 -0
  83. package/dist/parser/parser-collect.d.ts +16 -0
  84. package/dist/parser/parser-collect.d.ts.map +1 -0
  85. package/dist/parser/parser-collect.js +125 -0
  86. package/dist/parser/parser-collect.js.map +1 -0
  87. package/dist/parser/parser-control.d.ts +20 -0
  88. package/dist/parser/parser-control.d.ts.map +1 -0
  89. package/dist/parser/parser-control.js +120 -0
  90. package/dist/parser/parser-control.js.map +1 -0
  91. package/dist/parser/parser-expr.d.ts +37 -0
  92. package/dist/parser/parser-expr.d.ts.map +1 -0
  93. package/dist/parser/parser-expr.js +639 -0
  94. package/dist/parser/parser-expr.js.map +1 -0
  95. package/dist/parser/parser-extract.d.ts +17 -0
  96. package/dist/parser/parser-extract.d.ts.map +1 -0
  97. package/dist/parser/parser-extract.js +222 -0
  98. package/dist/parser/parser-extract.js.map +1 -0
  99. package/dist/parser/parser-functions.d.ts +21 -0
  100. package/dist/parser/parser-functions.d.ts.map +1 -0
  101. package/dist/parser/parser-functions.js +155 -0
  102. package/dist/parser/parser-functions.js.map +1 -0
  103. package/dist/parser/parser-literals.d.ts +22 -0
  104. package/dist/parser/parser-literals.d.ts.map +1 -0
  105. package/dist/parser/parser-literals.js +288 -0
  106. package/dist/parser/parser-literals.js.map +1 -0
  107. package/dist/parser/parser-script.d.ts +21 -0
  108. package/dist/parser/parser-script.d.ts.map +1 -0
  109. package/dist/parser/parser-script.js +174 -0
  110. package/dist/parser/parser-script.js.map +1 -0
  111. package/dist/parser/parser-variables.d.ts +20 -0
  112. package/dist/parser/parser-variables.d.ts.map +1 -0
  113. package/dist/parser/parser-variables.js +146 -0
  114. package/dist/parser/parser-variables.js.map +1 -0
  115. package/dist/parser/parser.d.ts +49 -0
  116. package/dist/parser/parser.d.ts.map +1 -0
  117. package/dist/parser/parser.js +54 -0
  118. package/dist/parser/parser.js.map +1 -0
  119. package/dist/parser/script.d.ts +14 -0
  120. package/dist/parser/script.d.ts.map +1 -0
  121. package/dist/parser/script.js +196 -0
  122. package/dist/parser/script.js.map +1 -0
  123. package/dist/parser/state.d.ts +40 -0
  124. package/dist/parser/state.d.ts.map +1 -0
  125. package/dist/parser/state.js +129 -0
  126. package/dist/parser/state.js.map +1 -0
  127. package/dist/parser/variables.d.ts +10 -0
  128. package/dist/parser/variables.d.ts.map +1 -0
  129. package/dist/parser/variables.js +215 -0
  130. package/dist/parser/variables.js.map +1 -0
  131. package/dist/runtime/ast-equals.d.ts +13 -0
  132. package/dist/runtime/ast-equals.d.ts.map +1 -0
  133. package/dist/runtime/ast-equals.js +447 -0
  134. package/dist/runtime/ast-equals.js.map +1 -0
  135. package/dist/runtime/builtins.d.ts +13 -0
  136. package/dist/runtime/builtins.d.ts.map +1 -0
  137. package/dist/runtime/builtins.js +180 -0
  138. package/dist/runtime/builtins.js.map +1 -0
  139. package/dist/runtime/callable.d.ts +88 -0
  140. package/dist/runtime/callable.d.ts.map +1 -0
  141. package/dist/runtime/callable.js +98 -0
  142. package/dist/runtime/callable.js.map +1 -0
  143. package/dist/runtime/context.d.ts +13 -0
  144. package/dist/runtime/context.d.ts.map +1 -0
  145. package/dist/runtime/context.js +73 -0
  146. package/dist/runtime/context.js.map +1 -0
  147. package/dist/runtime/core/callable.d.ts +171 -0
  148. package/dist/runtime/core/callable.d.ts.map +1 -0
  149. package/dist/runtime/core/callable.js +246 -0
  150. package/dist/runtime/core/callable.js.map +1 -0
  151. package/dist/runtime/core/context.d.ts +29 -0
  152. package/dist/runtime/core/context.d.ts.map +1 -0
  153. package/dist/runtime/core/context.js +154 -0
  154. package/dist/runtime/core/context.js.map +1 -0
  155. package/dist/runtime/core/equals.d.ts +9 -0
  156. package/dist/runtime/core/equals.d.ts.map +1 -0
  157. package/dist/runtime/core/equals.js +381 -0
  158. package/dist/runtime/core/equals.js.map +1 -0
  159. package/dist/runtime/core/eval/base.d.ts +65 -0
  160. package/dist/runtime/core/eval/base.d.ts.map +1 -0
  161. package/dist/runtime/core/eval/base.js +112 -0
  162. package/dist/runtime/core/eval/base.js.map +1 -0
  163. package/dist/runtime/core/eval/evaluator.d.ts +47 -0
  164. package/dist/runtime/core/eval/evaluator.d.ts.map +1 -0
  165. package/dist/runtime/core/eval/evaluator.js +73 -0
  166. package/dist/runtime/core/eval/evaluator.js.map +1 -0
  167. package/dist/runtime/core/eval/index.d.ts +57 -0
  168. package/dist/runtime/core/eval/index.d.ts.map +1 -0
  169. package/dist/runtime/core/eval/index.js +95 -0
  170. package/dist/runtime/core/eval/index.js.map +1 -0
  171. package/dist/runtime/core/eval/mixins/annotations.d.ts +19 -0
  172. package/dist/runtime/core/eval/mixins/annotations.d.ts.map +1 -0
  173. package/dist/runtime/core/eval/mixins/annotations.js +146 -0
  174. package/dist/runtime/core/eval/mixins/annotations.js.map +1 -0
  175. package/dist/runtime/core/eval/mixins/closures.d.ts +49 -0
  176. package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -0
  177. package/dist/runtime/core/eval/mixins/closures.js +479 -0
  178. package/dist/runtime/core/eval/mixins/closures.js.map +1 -0
  179. package/dist/runtime/core/eval/mixins/collections.d.ts +24 -0
  180. package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -0
  181. package/dist/runtime/core/eval/mixins/collections.js +466 -0
  182. package/dist/runtime/core/eval/mixins/collections.js.map +1 -0
  183. package/dist/runtime/core/eval/mixins/control-flow.d.ts +27 -0
  184. package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +1 -0
  185. package/dist/runtime/core/eval/mixins/control-flow.js +369 -0
  186. package/dist/runtime/core/eval/mixins/control-flow.js.map +1 -0
  187. package/dist/runtime/core/eval/mixins/core.d.ts +24 -0
  188. package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -0
  189. package/dist/runtime/core/eval/mixins/core.js +335 -0
  190. package/dist/runtime/core/eval/mixins/core.js.map +1 -0
  191. package/dist/runtime/core/eval/mixins/expressions.d.ts +19 -0
  192. package/dist/runtime/core/eval/mixins/expressions.d.ts.map +1 -0
  193. package/dist/runtime/core/eval/mixins/expressions.js +202 -0
  194. package/dist/runtime/core/eval/mixins/expressions.js.map +1 -0
  195. package/dist/runtime/core/eval/mixins/extraction.d.ts +10 -0
  196. package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -0
  197. package/dist/runtime/core/eval/mixins/extraction.js +250 -0
  198. package/dist/runtime/core/eval/mixins/extraction.js.map +1 -0
  199. package/dist/runtime/core/eval/mixins/literals.d.ts +23 -0
  200. package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -0
  201. package/dist/runtime/core/eval/mixins/literals.js +180 -0
  202. package/dist/runtime/core/eval/mixins/literals.js.map +1 -0
  203. package/dist/runtime/core/eval/mixins/types.d.ts +20 -0
  204. package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -0
  205. package/dist/runtime/core/eval/mixins/types.js +109 -0
  206. package/dist/runtime/core/eval/mixins/types.js.map +1 -0
  207. package/dist/runtime/core/eval/mixins/variables.d.ts +34 -0
  208. package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -0
  209. package/dist/runtime/core/eval/mixins/variables.js +247 -0
  210. package/dist/runtime/core/eval/mixins/variables.js.map +1 -0
  211. package/dist/runtime/core/eval/types.d.ts +41 -0
  212. package/dist/runtime/core/eval/types.d.ts.map +1 -0
  213. package/dist/runtime/core/eval/types.js +10 -0
  214. package/dist/runtime/core/eval/types.js.map +1 -0
  215. package/dist/runtime/core/evaluate.d.ts +42 -0
  216. package/dist/runtime/core/evaluate.d.ts.map +1 -0
  217. package/dist/runtime/core/evaluate.debug.js +1251 -0
  218. package/dist/runtime/core/evaluate.js +1913 -0
  219. package/dist/runtime/core/evaluate.js.map +1 -0
  220. package/dist/runtime/core/execute.d.ts +26 -0
  221. package/dist/runtime/core/execute.d.ts.map +1 -0
  222. package/dist/runtime/core/execute.js +177 -0
  223. package/dist/runtime/core/execute.js.map +1 -0
  224. package/dist/runtime/core/signals.d.ts +19 -0
  225. package/dist/runtime/core/signals.d.ts.map +1 -0
  226. package/dist/runtime/core/signals.js +26 -0
  227. package/dist/runtime/core/signals.js.map +1 -0
  228. package/dist/runtime/core/types.d.ts +177 -0
  229. package/dist/runtime/core/types.d.ts.map +1 -0
  230. package/dist/runtime/core/types.js +50 -0
  231. package/dist/runtime/core/types.js.map +1 -0
  232. package/dist/runtime/core/values.d.ts +66 -0
  233. package/dist/runtime/core/values.d.ts.map +1 -0
  234. package/dist/runtime/core/values.js +240 -0
  235. package/dist/runtime/core/values.js.map +1 -0
  236. package/dist/runtime/evaluate.d.ts +32 -0
  237. package/dist/runtime/evaluate.d.ts.map +1 -0
  238. package/dist/runtime/evaluate.js +1111 -0
  239. package/dist/runtime/evaluate.js.map +1 -0
  240. package/dist/runtime/execute.d.ts +26 -0
  241. package/dist/runtime/execute.d.ts.map +1 -0
  242. package/dist/runtime/execute.js +121 -0
  243. package/dist/runtime/execute.js.map +1 -0
  244. package/dist/runtime/ext/builtins.d.ts +16 -0
  245. package/dist/runtime/ext/builtins.d.ts.map +1 -0
  246. package/dist/runtime/ext/builtins.js +528 -0
  247. package/dist/runtime/ext/builtins.js.map +1 -0
  248. package/dist/runtime/ext/content-parser.d.ts +83 -0
  249. package/dist/runtime/ext/content-parser.d.ts.map +1 -0
  250. package/dist/runtime/ext/content-parser.js +536 -0
  251. package/dist/runtime/ext/content-parser.js.map +1 -0
  252. package/dist/runtime/index.d.ts +28 -0
  253. package/dist/runtime/index.d.ts.map +1 -0
  254. package/dist/runtime/index.js +34 -0
  255. package/dist/runtime/index.js.map +1 -0
  256. package/dist/runtime/signals.d.ts +19 -0
  257. package/dist/runtime/signals.d.ts.map +1 -0
  258. package/dist/runtime/signals.js +26 -0
  259. package/dist/runtime/signals.js.map +1 -0
  260. package/dist/runtime/types.d.ts +169 -0
  261. package/dist/runtime/types.d.ts.map +1 -0
  262. package/dist/runtime/types.js +50 -0
  263. package/dist/runtime/types.js.map +1 -0
  264. package/dist/runtime/values.d.ts +50 -0
  265. package/dist/runtime/values.d.ts.map +1 -0
  266. package/dist/runtime/values.js +209 -0
  267. package/dist/runtime/values.js.map +1 -0
  268. package/dist/runtime.d.ts +254 -0
  269. package/dist/runtime.d.ts.map +1 -0
  270. package/dist/runtime.js +2014 -0
  271. package/dist/runtime.js.map +1 -0
  272. package/dist/types.d.ts +752 -0
  273. package/dist/types.d.ts.map +1 -0
  274. package/dist/types.js +189 -0
  275. package/dist/types.js.map +1 -0
  276. package/docs/00_INDEX.md +65 -0
  277. package/docs/01_guide.md +390 -0
  278. package/docs/02_types.md +399 -0
  279. package/docs/03_variables.md +314 -0
  280. package/docs/04_operators.md +551 -0
  281. package/docs/05_control-flow.md +350 -0
  282. package/docs/06_closures.md +353 -0
  283. package/docs/07_collections.md +686 -0
  284. package/docs/08_iterators.md +330 -0
  285. package/docs/09_strings.md +205 -0
  286. package/docs/10_parsing.md +366 -0
  287. package/docs/11_reference.md +350 -0
  288. package/docs/12_examples.md +771 -0
  289. package/docs/13_modules.md +519 -0
  290. package/docs/14_host-integration.md +826 -0
  291. package/docs/15_grammar.ebnf +693 -0
  292. package/docs/16_conventions.md +696 -0
  293. package/docs/99_llm-reference.txt +300 -0
  294. package/docs/assets/logo.png +0 -0
  295. package/package.json +70 -0
@@ -0,0 +1,381 @@
1
+ /**
2
+ * AST Structural Equality
3
+ *
4
+ * Compares AST nodes for structural equality, ignoring source locations.
5
+ * Used for closure equality: two closures with identical structure are equal.
6
+ */
7
+ /**
8
+ * Compare two AST nodes for structural equality.
9
+ * Ignores source locations (span) - only compares structure and values.
10
+ */
11
+ /**
12
+ * Helper to compare two nullable values for structural equality.
13
+ * Returns false if nullability differs, otherwise compares with astEquals.
14
+ */
15
+ function nullableEquals(a, b) {
16
+ if (a === null && b === null)
17
+ return true;
18
+ if (a === null || b === null)
19
+ return false;
20
+ return astEquals(a, b);
21
+ }
22
+ export function astEquals(a, b) {
23
+ // Different node types are never equal
24
+ if (a.type !== b.type)
25
+ return false;
26
+ switch (a.type) {
27
+ case 'Block':
28
+ return blockEquals(a, b);
29
+ case 'Statement':
30
+ return statementEquals(a, b);
31
+ case 'AnnotatedStatement':
32
+ return annotatedStatementEquals(a, b);
33
+ case 'PipeChain':
34
+ return pipeChainEquals(a, b);
35
+ case 'PostfixExpr':
36
+ return postfixExprEquals(a, b);
37
+ case 'StringLiteral':
38
+ return stringLiteralEquals(a, b);
39
+ case 'NumberLiteral':
40
+ return a.value === b.value;
41
+ case 'BoolLiteral':
42
+ return a.value === b.value;
43
+ case 'Variable':
44
+ return variableEquals(a, b);
45
+ case 'HostCall':
46
+ return functionCallEquals(a, b);
47
+ case 'ClosureCall':
48
+ return closureCallEquals(a, b);
49
+ case 'MethodCall':
50
+ return methodCallEquals(a, b);
51
+ case 'Invoke':
52
+ return invokeEquals(a, b);
53
+ case 'PipeInvoke':
54
+ return pipeInvokeEquals(a, b);
55
+ case 'Conditional':
56
+ return conditionalEquals(a, b);
57
+ case 'WhileLoop':
58
+ return whileLoopEquals(a, b);
59
+ case 'DoWhileLoop':
60
+ return doWhileLoopEquals(a, b);
61
+ case 'Tuple':
62
+ return tupleEquals(a, b);
63
+ case 'Dict':
64
+ return dictEquals(a, b);
65
+ case 'DictEntry':
66
+ return dictEntryEquals(a, b);
67
+ case 'Closure':
68
+ return closureEquals(a, b);
69
+ case 'ClosureParam':
70
+ return closureParamEquals(a, b);
71
+ case 'BinaryExpr':
72
+ return binaryExprEquals(a, b);
73
+ case 'UnaryExpr':
74
+ return unaryExprEquals(a, b);
75
+ case 'GroupedExpr':
76
+ return groupedExprEquals(a, b);
77
+ case 'ClosureChain':
78
+ return closureChainEquals(a, b);
79
+ case 'Destructure':
80
+ return destructureEquals(a, b);
81
+ case 'DestructPattern':
82
+ return destructElemEquals(a, b);
83
+ case 'Slice':
84
+ return sliceEquals(a, b);
85
+ case 'Spread':
86
+ return spreadEquals(a, b);
87
+ case 'Capture':
88
+ return (a.name === b.name &&
89
+ a.typeName === b.typeName);
90
+ case 'Break':
91
+ case 'Return':
92
+ return true; // Break and Return nodes have no value property
93
+ case 'Interpolation':
94
+ return expressionEquals(a.expression, b.expression);
95
+ default:
96
+ // For any unhandled node types, fall back to false
97
+ return false;
98
+ }
99
+ }
100
+ function blockEquals(a, b) {
101
+ if (a.statements.length !== b.statements.length)
102
+ return false;
103
+ for (let i = 0; i < a.statements.length; i++) {
104
+ const stmtA = a.statements[i];
105
+ const stmtB = b.statements[i];
106
+ if (stmtA.type !== stmtB.type)
107
+ return false;
108
+ if (stmtA.type === 'AnnotatedStatement') {
109
+ if (!annotatedStatementEquals(stmtA, stmtB))
110
+ return false;
111
+ }
112
+ else {
113
+ if (!statementEquals(stmtA, stmtB))
114
+ return false;
115
+ }
116
+ }
117
+ return true;
118
+ }
119
+ function statementEquals(a, b) {
120
+ return expressionEquals(a.expression, b.expression);
121
+ }
122
+ function annotatedStatementEquals(a, b) {
123
+ if (a.annotations.length !== b.annotations.length)
124
+ return false;
125
+ for (let i = 0; i < a.annotations.length; i++) {
126
+ if (!annotationArgEquals(a.annotations[i], b.annotations[i]))
127
+ return false;
128
+ }
129
+ return statementEquals(a.statement, b.statement);
130
+ }
131
+ function annotationArgEquals(a, b) {
132
+ if (a.type !== b.type)
133
+ return false;
134
+ if (a.type === 'NamedArg') {
135
+ const bNamed = b;
136
+ if (a.name !== bNamed.name)
137
+ return false;
138
+ return expressionEquals(a.value, bNamed.value);
139
+ }
140
+ else {
141
+ // SpreadArg
142
+ const aSpread = a;
143
+ const bSpread = b;
144
+ return expressionEquals(aSpread.expression, bSpread.expression);
145
+ }
146
+ }
147
+ function expressionEquals(a, b) {
148
+ return pipeChainEquals(a, b);
149
+ }
150
+ function pipeChainEquals(a, b) {
151
+ if (!astEquals(a.head, b.head))
152
+ return false;
153
+ if (a.pipes.length !== b.pipes.length)
154
+ return false;
155
+ for (let i = 0; i < a.pipes.length; i++) {
156
+ if (!astEquals(a.pipes[i], b.pipes[i]))
157
+ return false;
158
+ }
159
+ return nullableEquals(a.terminator, b.terminator);
160
+ }
161
+ function postfixExprEquals(a, b) {
162
+ if (!astEquals(a.primary, b.primary))
163
+ return false;
164
+ if (a.methods.length !== b.methods.length)
165
+ return false;
166
+ for (let i = 0; i < a.methods.length; i++) {
167
+ // Methods array can contain MethodCallNode or InvokeNode
168
+ if (!astEquals(a.methods[i], b.methods[i]))
169
+ return false;
170
+ }
171
+ return true;
172
+ }
173
+ function stringLiteralEquals(a, b) {
174
+ if (a.isHeredoc !== b.isHeredoc)
175
+ return false;
176
+ if (a.parts.length !== b.parts.length)
177
+ return false;
178
+ for (let i = 0; i < a.parts.length; i++) {
179
+ const aPart = a.parts[i];
180
+ const bPart = b.parts[i];
181
+ if (typeof aPart === 'string') {
182
+ if (typeof bPart !== 'string' || aPart !== bPart)
183
+ return false;
184
+ }
185
+ else {
186
+ if (typeof bPart === 'string')
187
+ return false;
188
+ if (!expressionEquals(aPart.expression, bPart.expression))
189
+ return false;
190
+ }
191
+ }
192
+ return true;
193
+ }
194
+ function fieldAccessEquals(a, b) {
195
+ if (a.kind !== b.kind)
196
+ return false;
197
+ switch (a.kind) {
198
+ case 'literal':
199
+ return a.field === b.field;
200
+ case 'variable':
201
+ return a.variableName === b.variableName;
202
+ case 'computed':
203
+ return astEquals(a.expression, b.expression);
204
+ case 'block':
205
+ return astEquals(a.block, b.block);
206
+ case 'alternatives':
207
+ return (a.alternatives.length === b.alternatives.length &&
208
+ a.alternatives.every((alt, i) => alt === b.alternatives[i]));
209
+ }
210
+ }
211
+ function variableEquals(a, b) {
212
+ if (a.name !== b.name)
213
+ return false;
214
+ if (a.isPipeVar !== b.isPipeVar)
215
+ return false;
216
+ if (a.accessChain.length !== b.accessChain.length)
217
+ return false;
218
+ for (let i = 0; i < a.accessChain.length; i++) {
219
+ if (!propertyAccessEquals(a.accessChain[i], b.accessChain[i]))
220
+ return false;
221
+ }
222
+ return true;
223
+ }
224
+ function propertyAccessEquals(a, b) {
225
+ // Check if both are bracket access
226
+ const aIsBracket = 'accessKind' in a && a.accessKind === 'bracket';
227
+ const bIsBracket = 'accessKind' in b && b.accessKind === 'bracket';
228
+ if (aIsBracket !== bIsBracket)
229
+ return false;
230
+ if (aIsBracket && bIsBracket) {
231
+ return expressionEquals(a.expression, b.expression);
232
+ }
233
+ // Both are field access
234
+ return fieldAccessEquals(a, b);
235
+ }
236
+ function functionCallEquals(a, b) {
237
+ if (a.name !== b.name)
238
+ return false;
239
+ return argsListEquals(a.args, b.args);
240
+ }
241
+ function closureCallEquals(a, b) {
242
+ if (a.name !== b.name)
243
+ return false;
244
+ if (a.accessChain.length !== b.accessChain.length)
245
+ return false;
246
+ for (let i = 0; i < a.accessChain.length; i++) {
247
+ if (a.accessChain[i] !== b.accessChain[i])
248
+ return false;
249
+ }
250
+ return argsListEquals(a.args, b.args);
251
+ }
252
+ function methodCallEquals(a, b) {
253
+ if (a.name !== b.name)
254
+ return false;
255
+ return argsListEquals(a.args, b.args);
256
+ }
257
+ function invokeEquals(a, b) {
258
+ return argsListEquals(a.args, b.args);
259
+ }
260
+ function pipeInvokeEquals(a, b) {
261
+ return argsListEquals(a.args, b.args);
262
+ }
263
+ function argsListEquals(a, b) {
264
+ if (a.length !== b.length)
265
+ return false;
266
+ for (let i = 0; i < a.length; i++) {
267
+ if (!expressionEquals(a[i], b[i]))
268
+ return false;
269
+ }
270
+ return true;
271
+ }
272
+ function conditionalEquals(a, b) {
273
+ if (!nullableEquals(a.input, b.input))
274
+ return false;
275
+ if (!nullableEquals(a.condition, b.condition))
276
+ return false;
277
+ if (!simpleBodyEquals(a.thenBranch, b.thenBranch))
278
+ return false;
279
+ return nullableEquals(a.elseBranch, b.elseBranch);
280
+ }
281
+ function whileLoopEquals(a, b) {
282
+ if (!astEquals(a.condition, b.condition))
283
+ return false;
284
+ return simpleBodyEquals(a.body, b.body);
285
+ }
286
+ function doWhileLoopEquals(a, b) {
287
+ if (!nullableEquals(a.input, b.input))
288
+ return false;
289
+ if (!simpleBodyEquals(a.condition, b.condition))
290
+ return false;
291
+ return simpleBodyEquals(a.body, b.body);
292
+ }
293
+ function simpleBodyEquals(a, b) {
294
+ if (a.type !== b.type)
295
+ return false;
296
+ return astEquals(a, b);
297
+ }
298
+ function binaryExprEquals(a, b) {
299
+ if (a.op !== b.op)
300
+ return false;
301
+ if (!astEquals(a.left, b.left))
302
+ return false;
303
+ return astEquals(a.right, b.right);
304
+ }
305
+ function unaryExprEquals(a, b) {
306
+ if (a.op !== b.op)
307
+ return false;
308
+ return astEquals(a.operand, b.operand);
309
+ }
310
+ function groupedExprEquals(a, b) {
311
+ return pipeChainEquals(a.expression, b.expression);
312
+ }
313
+ function tupleEquals(a, b) {
314
+ return argsListEquals(a.elements, b.elements);
315
+ }
316
+ function dictEquals(a, b) {
317
+ if (a.entries.length !== b.entries.length)
318
+ return false;
319
+ for (let i = 0; i < a.entries.length; i++) {
320
+ if (!dictEntryEquals(a.entries[i], b.entries[i]))
321
+ return false;
322
+ }
323
+ return true;
324
+ }
325
+ function dictEntryEquals(a, b) {
326
+ if (a.key !== b.key)
327
+ return false;
328
+ return expressionEquals(a.value, b.value);
329
+ }
330
+ function closureEquals(a, b) {
331
+ if (a.params.length !== b.params.length)
332
+ return false;
333
+ for (let i = 0; i < a.params.length; i++) {
334
+ if (!closureParamEquals(a.params[i], b.params[i]))
335
+ return false;
336
+ }
337
+ return simpleBodyEquals(a.body, b.body);
338
+ }
339
+ function closureParamEquals(a, b) {
340
+ if (a.name !== b.name)
341
+ return false;
342
+ if (a.typeName !== b.typeName)
343
+ return false;
344
+ return nullableEquals(a.defaultValue, b.defaultValue);
345
+ }
346
+ function closureChainEquals(a, b) {
347
+ return expressionEquals(a.target, b.target);
348
+ }
349
+ function destructureEquals(a, b) {
350
+ if (a.elements.length !== b.elements.length)
351
+ return false;
352
+ for (let i = 0; i < a.elements.length; i++) {
353
+ if (!destructElemEquals(a.elements[i], b.elements[i]))
354
+ return false;
355
+ }
356
+ return true;
357
+ }
358
+ function destructElemEquals(a, b) {
359
+ if (a.kind !== b.kind)
360
+ return false;
361
+ if (a.name !== b.name)
362
+ return false;
363
+ if (a.key !== b.key)
364
+ return false;
365
+ if (a.typeName !== b.typeName)
366
+ return false;
367
+ return nullableEquals(a.nested, b.nested);
368
+ }
369
+ function sliceEquals(a, b) {
370
+ if (!nullableEquals(a.start, b.start))
371
+ return false;
372
+ if (!nullableEquals(a.stop, b.stop))
373
+ return false;
374
+ if (!nullableEquals(a.step, b.step))
375
+ return false;
376
+ return true;
377
+ }
378
+ function spreadEquals(a, b) {
379
+ return nullableEquals(a.operand, b.operand);
380
+ }
381
+ //# sourceMappingURL=equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../src/runtime/core/equals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Evaluator Base Class
3
+ *
4
+ * Foundation for the class-based evaluator architecture.
5
+ * Provides shared utilities and context access for all mixins.
6
+ *
7
+ * @internal
8
+ */
9
+ import type { ASTNode, CaptureNode, SourceLocation } from '../../../types.js';
10
+ import type { RuntimeContext } from '../types.js';
11
+ import type { RillValue } from '../values.js';
12
+ /**
13
+ * Base class for the evaluator.
14
+ * Contains shared utilities used by all mixins.
15
+ * All internal methods are protected to enable mixin access.
16
+ */
17
+ export declare class EvaluatorBase {
18
+ protected ctx: RuntimeContext;
19
+ constructor(ctx: RuntimeContext);
20
+ /**
21
+ * Get source location from an AST node.
22
+ * Used for error reporting with precise location information.
23
+ */
24
+ protected getNodeLocation(node?: ASTNode): SourceLocation | undefined;
25
+ /**
26
+ * Check if execution has been aborted via AbortSignal.
27
+ * Throws AbortError if signal is aborted.
28
+ */
29
+ protected checkAborted(node?: ASTNode): void;
30
+ /**
31
+ * Check if the current pipe value matches any autoException pattern.
32
+ * Only checks string values. Throws AutoExceptionError on match.
33
+ */
34
+ protected checkAutoExceptions(value: RillValue, node?: ASTNode): void;
35
+ /**
36
+ * Wrap a promise with a timeout.
37
+ * Returns original promise if no timeout configured.
38
+ */
39
+ protected withTimeout<T>(promise: Promise<T>, timeoutMs: number | undefined, functionName: string, node?: ASTNode): Promise<T>;
40
+ /**
41
+ * Handle statement capture: set variable and fire observability event.
42
+ * Returns capture info if a capture occurred.
43
+ *
44
+ * NOTE: Stub implementation - actual implementation requires VariablesMixin.
45
+ * This method will only be called after full mixin composition in Phase 4.
46
+ * Phase 1-3 use the functional evaluator which has its own handleCapture.
47
+ */
48
+ protected handleCapture(_capture: CaptureNode | null, _value: RillValue): {
49
+ name: string;
50
+ value: RillValue;
51
+ } | undefined;
52
+ /**
53
+ * Access a field on a dict value with property-style callable auto-invocation.
54
+ * Shared by ClosuresMixin and VariablesMixin for consistent property access.
55
+ *
56
+ * @param value - The dict to access
57
+ * @param field - The field name
58
+ * @param location - Source location for error reporting
59
+ * @param allowMissing - If true, returns null for missing fields instead of throwing
60
+ * @returns The field value
61
+ * @throws RuntimeError if value is not a dict or field is missing (unless allowMissing)
62
+ */
63
+ protected accessDictField(value: RillValue, field: string, location?: SourceLocation, allowMissing?: boolean): Promise<RillValue>;
64
+ }
65
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/runtime/core/eval/base.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQ9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,qBAAa,aAAa;IACZ,SAAS,CAAC,GAAG,EAAE,cAAc;gBAAnB,GAAG,EAAE,cAAc;IAEzC;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAIrE;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAgBrE;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,EACrB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAqBb;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CACrB,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,MAAM,EAAE,SAAS,GAChB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,SAAS;IAMjD;;;;;;;;;;OAUG;cACa,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,cAAc,EACzB,YAAY,UAAQ,GACnB,OAAO,CAAC,SAAS,CAAC;CAqCtB"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Evaluator Base Class
3
+ *
4
+ * Foundation for the class-based evaluator architecture.
5
+ * Provides shared utilities and context access for all mixins.
6
+ *
7
+ * @internal
8
+ */
9
+ import { AbortError, AutoExceptionError, RuntimeError, RILL_ERROR_CODES, TimeoutError, } from '../../../types.js';
10
+ import { isCallable, isDict } from '../callable.js';
11
+ /**
12
+ * Base class for the evaluator.
13
+ * Contains shared utilities used by all mixins.
14
+ * All internal methods are protected to enable mixin access.
15
+ */
16
+ export class EvaluatorBase {
17
+ ctx;
18
+ constructor(ctx) {
19
+ this.ctx = ctx;
20
+ }
21
+ /**
22
+ * Get source location from an AST node.
23
+ * Used for error reporting with precise location information.
24
+ */
25
+ getNodeLocation(node) {
26
+ return node?.span.start;
27
+ }
28
+ /**
29
+ * Check if execution has been aborted via AbortSignal.
30
+ * Throws AbortError if signal is aborted.
31
+ */
32
+ checkAborted(node) {
33
+ if (this.ctx.signal?.aborted) {
34
+ throw new AbortError(this.getNodeLocation(node));
35
+ }
36
+ }
37
+ /**
38
+ * Check if the current pipe value matches any autoException pattern.
39
+ * Only checks string values. Throws AutoExceptionError on match.
40
+ */
41
+ checkAutoExceptions(value, node) {
42
+ if (typeof value !== 'string' || this.ctx.autoExceptions.length === 0) {
43
+ return;
44
+ }
45
+ for (const pattern of this.ctx.autoExceptions) {
46
+ if (pattern.test(value)) {
47
+ throw new AutoExceptionError(pattern.source, value, this.getNodeLocation(node));
48
+ }
49
+ }
50
+ }
51
+ /**
52
+ * Wrap a promise with a timeout.
53
+ * Returns original promise if no timeout configured.
54
+ */
55
+ withTimeout(promise, timeoutMs, functionName, node) {
56
+ if (timeoutMs === undefined) {
57
+ return promise;
58
+ }
59
+ return Promise.race([
60
+ promise,
61
+ new Promise((_, reject) => {
62
+ setTimeout(() => {
63
+ reject(new TimeoutError(functionName, timeoutMs, this.getNodeLocation(node)));
64
+ }, timeoutMs);
65
+ }),
66
+ ]);
67
+ }
68
+ /**
69
+ * Handle statement capture: set variable and fire observability event.
70
+ * Returns capture info if a capture occurred.
71
+ *
72
+ * NOTE: Stub implementation - actual implementation requires VariablesMixin.
73
+ * This method will only be called after full mixin composition in Phase 4.
74
+ * Phase 1-3 use the functional evaluator which has its own handleCapture.
75
+ */
76
+ handleCapture(_capture, _value) {
77
+ throw new Error('handleCapture requires full Evaluator composition with VariablesMixin');
78
+ }
79
+ /**
80
+ * Access a field on a dict value with property-style callable auto-invocation.
81
+ * Shared by ClosuresMixin and VariablesMixin for consistent property access.
82
+ *
83
+ * @param value - The dict to access
84
+ * @param field - The field name
85
+ * @param location - Source location for error reporting
86
+ * @param allowMissing - If true, returns null for missing fields instead of throwing
87
+ * @returns The field value
88
+ * @throws RuntimeError if value is not a dict or field is missing (unless allowMissing)
89
+ */
90
+ async accessDictField(value, field, location, allowMissing = false) {
91
+ if (!isDict(value)) {
92
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Cannot access field '${field}' on non-dict`, location);
93
+ }
94
+ const dictValue = value[field];
95
+ // Check if field exists
96
+ if (dictValue === undefined || dictValue === null) {
97
+ if (allowMissing) {
98
+ return null;
99
+ }
100
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Dict has no field '${field}'`, location);
101
+ }
102
+ // Property-style callable: auto-invoke when accessed
103
+ if (isCallable(dictValue)) {
104
+ if (dictValue.isProperty) {
105
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
+ return await this.invokeCallable(dictValue, [value], location);
107
+ }
108
+ }
109
+ return dictValue;
110
+ }
111
+ }
112
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/runtime/core/eval/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Composed Evaluator
3
+ *
4
+ * The complete evaluator class composed from all mixins.
5
+ * Uses WeakMap caching to reuse evaluator instances per RuntimeContext.
6
+ *
7
+ * Mixin composition order (bottom to top):
8
+ * 1. EvaluatorBase - Foundation utilities
9
+ * 2. CoreMixin - Expression dispatch
10
+ * 3. LiteralsMixin - String, dict, tuple, closure literals
11
+ * 4. VariablesMixin - Variable resolution and access chains
12
+ * 5. CollectionsMixin - each, map, fold, filter operators
13
+ * 6. ExtractionMixin - Destructure, slice, spread operators
14
+ * 7. ControlFlowMixin - Conditionals, loops, blocks
15
+ * 8. ClosuresMixin - Function calls and invocation
16
+ * 9. ExpressionsMixin - Binary, unary, grouped expressions
17
+ * 10. TypesMixin - Type assertions and checks
18
+ * 11. AnnotationsMixin - Annotated statement execution (outermost)
19
+ *
20
+ * The order ensures that each mixin can depend on the methods provided
21
+ * by mixins below it in the stack.
22
+ *
23
+ * @internal
24
+ */
25
+ import type { RuntimeContext } from '../types.js';
26
+ /**
27
+ * Complete Evaluator class composed from all mixins.
28
+ *
29
+ * This is the final, fully-composed evaluator that has all evaluation
30
+ * capabilities. The composition order is carefully chosen to ensure
31
+ * dependencies are satisfied.
32
+ */
33
+ export declare const Evaluator: any;
34
+ export type Evaluator = InstanceType<typeof Evaluator>;
35
+ /**
36
+ * Get or create an evaluator instance for a given RuntimeContext.
37
+ *
38
+ * Evaluator instances are cached per context to avoid recreating
39
+ * the same evaluator multiple times during script execution.
40
+ *
41
+ * @param ctx - The runtime context
42
+ * @returns Evaluator instance (cached or newly created)
43
+ *
44
+ * @internal
45
+ */
46
+ export declare function getEvaluator(ctx: RuntimeContext): InstanceType<typeof Evaluator>;
47
+ //# sourceMappingURL=evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/runtime/core/eval/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAaH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,KAcrB,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAgBvD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,GAClB,YAAY,CAAC,OAAO,SAAS,CAAC,CAOhC"}