@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,335 @@
1
+ /**
2
+ * CoreMixin: Main Expression Dispatch
3
+ *
4
+ * Provides the main entry points for expression evaluation and dispatches
5
+ * to specialized evaluators based on AST node type.
6
+ *
7
+ * This is the central coordination point that ties together all other mixins.
8
+ *
9
+ * Interface requirements (from spec IR-5 through IR-13):
10
+ * - evaluateExpression(expr) -> Promise<RillValue> [IR-8]
11
+ * - evaluatePipeChain(chain) -> Promise<RillValue> [IR-9]
12
+ * - evaluatePostfixExpr(expr) -> Promise<RillValue> [IR-10]
13
+ * - evaluatePrimary(primary) -> Promise<RillValue> [IR-11]
14
+ * - evaluatePipeTarget(target, input) -> Promise<RillValue> [IR-12]
15
+ * - evaluateArgs(argExprs) -> Promise<RillValue[]> [IR-13]
16
+ *
17
+ * Error Handling:
18
+ * - Unsupported expression types throw RuntimeError [EC-4]
19
+ * - Aborted execution throws AbortError [EC-5]
20
+ *
21
+ * @internal
22
+ */
23
+ import { RuntimeError, RILL_ERROR_CODES } from '../../../../types.js';
24
+ import { BreakSignal, ReturnSignal } from '../../signals.js';
25
+ /**
26
+ * CoreMixin implementation.
27
+ *
28
+ * Provides main dispatch methods for expression evaluation.
29
+ * This mixin coordinates with other mixins to provide complete evaluation.
30
+ *
31
+ * Depends on:
32
+ * - EvaluatorBase: ctx, checkAborted(), getNodeLocation()
33
+ * - ExpressionsMixin: evaluateBinaryExpr(), evaluateUnaryExpr(), evaluateGroupedExpr()
34
+ * - LiteralsMixin: evaluateString(), evaluateDict(), evaluateTuple(), createClosure()
35
+ * - VariablesMixin: evaluateVariable(), evaluateVariableAsync(), evaluatePipePropertyAccess(), evaluateVariableInvoke(), handleCapture()
36
+ * - ClosuresMixin: evaluateHostCall(), evaluateClosureCall(), evaluatePipeInvoke(), evaluateClosureChain()
37
+ * - ControlFlowMixin: evaluateConditional(), evaluateWhileLoop(), evaluateDoWhileLoop(), evaluateBlockExpression()
38
+ * - TypesMixin: evaluateTypeAssertion(), evaluateTypeCheck()
39
+ * - CollectionsMixin: evaluateEach(), evaluateMap(), evaluateFold(), evaluateFilter()
40
+ * - ExtractionMixin: evaluateDestructure(), evaluateSlice(), evaluateSpread()
41
+ *
42
+ * Methods added:
43
+ * - evaluateExpression(expr) -> Promise<RillValue>
44
+ * - evaluatePipeChain(chain) -> Promise<RillValue>
45
+ * - evaluatePostfixExpr(expr) -> Promise<RillValue>
46
+ * - evaluatePrimary(primary) -> Promise<RillValue>
47
+ * - evaluatePipeTarget(target, input) -> Promise<RillValue>
48
+ * - evaluateArgs(argExprs) -> Promise<RillValue[]>
49
+ */
50
+ function createCoreMixin(Base) {
51
+ return class CoreEvaluator extends Base {
52
+ /**
53
+ * Main expression evaluation entry point [IR-8].
54
+ * Delegates to pipe chain evaluator.
55
+ */
56
+ async evaluateExpression(expr) {
57
+ this.checkAborted();
58
+ return this.evaluatePipeChain(expr);
59
+ }
60
+ /**
61
+ * Evaluate pipe chain with left-to-right flow [IR-9].
62
+ *
63
+ * Pipe chains isolate their $ value from parent scope.
64
+ * The chain's result is returned, but $ modifications don't leak.
65
+ *
66
+ * Handles chain terminators:
67
+ * - Capture: stores value and returns it
68
+ * - Break: throws BreakSignal with value
69
+ * - Return: throws ReturnSignal with value
70
+ */
71
+ async evaluatePipeChain(chain) {
72
+ // Save parent's $ - chains don't leak $ modifications to parent scope
73
+ const savedPipeValue = this.ctx.pipeValue;
74
+ // Evaluate head (can be PostfixExpr, BinaryExpr, or UnaryExpr)
75
+ let value;
76
+ switch (chain.head.type) {
77
+ case 'BinaryExpr':
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ value = await this.evaluateBinaryExpr(chain.head);
80
+ break;
81
+ case 'UnaryExpr':
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ value = await this.evaluateUnaryExpr(chain.head);
84
+ break;
85
+ case 'PostfixExpr':
86
+ value = await this.evaluatePostfixExpr(chain.head);
87
+ break;
88
+ }
89
+ this.ctx.pipeValue = value; // OK: local to this chain evaluation
90
+ // Evaluate each pipe target in sequence
91
+ // [IR-8: BreakSignal and ReturnSignal propagate through to caller]
92
+ for (const target of chain.pipes) {
93
+ // Handle inline captures (act as identity: store and pass through)
94
+ if (target.type === 'Capture') {
95
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
+ this.handleCapture(target, value);
97
+ // Value flows through unchanged
98
+ continue;
99
+ }
100
+ value = await this.evaluatePipeTarget(target, value);
101
+ this.ctx.pipeValue = value; // OK: flows within chain
102
+ }
103
+ // Handle chain terminator (capture, break, return)
104
+ if (chain.terminator) {
105
+ if (chain.terminator.type === 'Break') {
106
+ // Restore parent's $ before throwing (cleanup)
107
+ this.ctx.pipeValue = savedPipeValue;
108
+ throw new BreakSignal(value);
109
+ }
110
+ if (chain.terminator.type === 'Return') {
111
+ // Restore parent's $ before throwing (cleanup)
112
+ this.ctx.pipeValue = savedPipeValue;
113
+ throw new ReturnSignal(value);
114
+ }
115
+ // Capture
116
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
+ this.handleCapture(chain.terminator, value);
118
+ }
119
+ // Restore parent's $ - chain result is returned, but $ doesn't leak
120
+ this.ctx.pipeValue = savedPipeValue;
121
+ return value;
122
+ }
123
+ /**
124
+ * Evaluate postfix expression: primary with method chain [IR-10].
125
+ *
126
+ * Example: obj.method1().method2().method3()
127
+ * Evaluates primary, then applies each method in sequence.
128
+ */
129
+ async evaluatePostfixExpr(expr) {
130
+ let value = await this.evaluatePrimary(expr.primary);
131
+ for (const method of expr.methods) {
132
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
+ value = await this.evaluateMethod(method, value);
134
+ }
135
+ return value;
136
+ }
137
+ /**
138
+ * Evaluate primary expression [IR-11].
139
+ *
140
+ * Primary expressions are the atomic units of expressions:
141
+ * - Literals (string, number, boolean, tuple, dict, closure)
142
+ * - Variables
143
+ * - Function calls
144
+ * - Control flow constructs
145
+ * - Grouped expressions
146
+ */
147
+ async evaluatePrimary(primary) {
148
+ switch (primary.type) {
149
+ case 'StringLiteral':
150
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
+ return this.evaluateString(primary);
152
+ case 'NumberLiteral':
153
+ return primary.value;
154
+ case 'BoolLiteral':
155
+ return primary.value;
156
+ case 'Tuple':
157
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
158
+ return this.evaluateTuple(primary);
159
+ case 'Dict':
160
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
161
+ return this.evaluateDict(primary);
162
+ case 'Closure':
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ return await this.createClosure(primary);
165
+ case 'Variable':
166
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
+ return this.evaluateVariableAsync(primary);
168
+ case 'HostCall':
169
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
170
+ return this.evaluateHostCall(primary);
171
+ case 'ClosureCall':
172
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
+ return this.evaluateClosureCall(primary);
174
+ case 'MethodCall':
175
+ if (this.ctx.pipeValue === null) {
176
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_UNDEFINED_VARIABLE, 'Undefined variable: $', primary.span?.start, { variable: '$' });
177
+ }
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ return this.evaluateMethod(primary, this.ctx.pipeValue);
180
+ case 'Conditional':
181
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
182
+ return this.evaluateConditional(primary);
183
+ case 'WhileLoop':
184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
+ return this.evaluateWhileLoop(primary);
186
+ case 'DoWhileLoop':
187
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
188
+ return this.evaluateDoWhileLoop(primary);
189
+ case 'Block':
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
+ return this.evaluateBlockExpression(primary);
192
+ case 'GroupedExpr':
193
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
194
+ return this.evaluateGroupedExpr(primary);
195
+ case 'Spread':
196
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
197
+ return this.evaluateSpread(primary);
198
+ case 'TypeAssertion': {
199
+ // Postfix type assertion: the operand is already evaluated
200
+ if (!primary.operand) {
201
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, 'Postfix type assertion requires operand', primary.span.start);
202
+ }
203
+ const assertValue = await this.evaluatePostfixExpr(primary.operand);
204
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
205
+ return this.evaluateTypeAssertion(primary, assertValue);
206
+ }
207
+ case 'TypeCheck': {
208
+ // Postfix type check: the operand is already evaluated
209
+ if (!primary.operand) {
210
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, 'Postfix type check requires operand', primary.span.start);
211
+ }
212
+ const checkValue = await this.evaluatePostfixExpr(primary.operand);
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
214
+ return this.evaluateTypeCheck(primary, checkValue);
215
+ }
216
+ default:
217
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Unsupported expression type: ${primary.type}`, this.getNodeLocation(primary));
218
+ }
219
+ }
220
+ /**
221
+ * Evaluate pipe target with input value [IR-12].
222
+ *
223
+ * Pipe targets are expressions that can receive piped values.
224
+ * Sets $ to the input value before evaluation.
225
+ */
226
+ async evaluatePipeTarget(target, input) {
227
+ this.ctx.pipeValue = input;
228
+ switch (target.type) {
229
+ case 'HostCall':
230
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
231
+ return this.evaluateHostCall(target);
232
+ case 'ClosureCall':
233
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
234
+ return this.evaluateClosureCallWithPipe(target, input);
235
+ case 'PipeInvoke':
236
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
237
+ return this.evaluatePipeInvoke(target, input);
238
+ case 'MethodCall':
239
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
240
+ return this.evaluateMethod(target, input);
241
+ case 'Conditional':
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
243
+ return this.evaluateConditional(target);
244
+ case 'WhileLoop':
245
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
+ return this.evaluateWhileLoop(target);
247
+ case 'DoWhileLoop':
248
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
249
+ return this.evaluateDoWhileLoop(target);
250
+ case 'Block':
251
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
+ return this.evaluateBlockExpression(target);
253
+ case 'StringLiteral':
254
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
255
+ return this.evaluateString(target);
256
+ case 'GroupedExpr':
257
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
258
+ return this.evaluateGroupedExpr(target);
259
+ case 'ClosureChain':
260
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
261
+ return this.evaluateClosureChain(target, input);
262
+ case 'Destructure':
263
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
264
+ return this.evaluateDestructure(target, input);
265
+ case 'Slice':
266
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
267
+ return this.evaluateSlice(target, input);
268
+ case 'Spread':
269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
270
+ return this.evaluateSpread(target);
271
+ case 'TypeAssertion':
272
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
273
+ return this.evaluateTypeAssertion(target, input);
274
+ case 'TypeCheck':
275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
276
+ return this.evaluateTypeCheck(target, input);
277
+ case 'EachExpr':
278
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
279
+ return this.evaluateEach(target, input);
280
+ case 'MapExpr':
281
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
282
+ return this.evaluateMap(target, input);
283
+ case 'FoldExpr':
284
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
285
+ return this.evaluateFold(target, input);
286
+ case 'FilterExpr':
287
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
288
+ return this.evaluateFilter(target, input);
289
+ case 'Variable':
290
+ // $.field is property access on pipe value, not closure invocation
291
+ if (target.isPipeVar &&
292
+ !target.name &&
293
+ target.accessChain.length > 0) {
294
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
295
+ return this.evaluatePipePropertyAccess(target, input);
296
+ }
297
+ // Variable in pipe chain: evaluate normally (preserves original error codes)
298
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
299
+ return this.evaluateVariableAsync(target);
300
+ case 'PostfixExpr': {
301
+ // Chained methods on pipe value: -> .a.b.c
302
+ // The primary is implicit $ (pipe value)
303
+ let value = input;
304
+ for (const method of target.methods) {
305
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
306
+ value = await this.evaluateMethod(method, value);
307
+ }
308
+ return value;
309
+ }
310
+ default:
311
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Unsupported pipe target type: ${target.type}`, this.getNodeLocation(target));
312
+ }
313
+ }
314
+ /**
315
+ * Evaluate argument expressions [IR-13].
316
+ *
317
+ * Evaluates arguments in order, preserving pipe value.
318
+ * The pipe value is saved and restored so arguments don't affect it.
319
+ */
320
+ async evaluateArgs(argExprs) {
321
+ const savedPipeValue = this.ctx.pipeValue;
322
+ const args = [];
323
+ for (const arg of argExprs) {
324
+ args.push(await this.evaluateExpression(arg));
325
+ }
326
+ this.ctx.pipeValue = savedPipeValue;
327
+ return args;
328
+ }
329
+ };
330
+ }
331
+ // Export with type assertion to work around TS4094 limitation
332
+ // TypeScript can't generate declarations for functions returning classes with protected members
333
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
334
+ export const CoreMixin = createCoreMixin;
335
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ExpressionsMixin: Binary and Unary Expressions
3
+ *
4
+ * Handles arithmetic, comparison, and logical operators.
5
+ * Provides evaluation for binary operations, unary operations, and grouped expressions.
6
+ *
7
+ * Interface requirements (from spec):
8
+ * - evaluateBinaryExpr(node) -> Promise<RillValue>
9
+ * - evaluateUnaryExpr(node) -> Promise<RillValue>
10
+ * - evaluateGroupedExpr(node) -> Promise<RillValue>
11
+ *
12
+ * Error Handling:
13
+ * - Type mismatches in operators throw RuntimeError(RUNTIME_TYPE_ERROR) [EC-22]
14
+ * - Nested expression evaluation errors are propagated [EC-23]
15
+ *
16
+ * @internal
17
+ */
18
+ export declare const ExpressionsMixin: any;
19
+ //# sourceMappingURL=expressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/expressions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuOH,eAAO,MAAM,gBAAgB,EAA6B,GAAG,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * ExpressionsMixin: Binary and Unary Expressions
3
+ *
4
+ * Handles arithmetic, comparison, and logical operators.
5
+ * Provides evaluation for binary operations, unary operations, and grouped expressions.
6
+ *
7
+ * Interface requirements (from spec):
8
+ * - evaluateBinaryExpr(node) -> Promise<RillValue>
9
+ * - evaluateUnaryExpr(node) -> Promise<RillValue>
10
+ * - evaluateGroupedExpr(node) -> Promise<RillValue>
11
+ *
12
+ * Error Handling:
13
+ * - Type mismatches in operators throw RuntimeError(RUNTIME_TYPE_ERROR) [EC-22]
14
+ * - Nested expression evaluation errors are propagated [EC-23]
15
+ *
16
+ * @internal
17
+ */
18
+ import { RuntimeError, RILL_ERROR_CODES } from '../../../../types.js';
19
+ import { inferType, isTruthy, deepEquals } from '../../values.js';
20
+ import { createChildContext } from '../../context.js';
21
+ /**
22
+ * ExpressionsMixin implementation.
23
+ *
24
+ * Evaluates binary expressions (arithmetic, comparison, logical),
25
+ * unary expressions (negation, logical NOT), and grouped expressions.
26
+ *
27
+ * Depends on:
28
+ * - EvaluatorBase: ctx, getNodeLocation()
29
+ * - evaluateExprHead() (internal helper, defined in this mixin)
30
+ * - evaluatePostfixExpr() (from future CoreMixin composition)
31
+ * - evaluatePipeChain() (from future CoreMixin composition)
32
+ *
33
+ * Methods added:
34
+ * - evaluateBinaryExpr(node) -> Promise<RillValue>
35
+ * - evaluateUnaryExpr(node) -> Promise<RillValue>
36
+ * - evaluateGroupedExpr(node) -> Promise<RillValue>
37
+ * - evaluateExprHead(node) -> Promise<RillValue> (helper)
38
+ * - evaluateExprHeadNumber(node) -> Promise<number> (helper)
39
+ * - evaluateBinaryComparison(left, right, op, node) -> boolean (helper)
40
+ */
41
+ function createExpressionsMixin(Base) {
42
+ return class ExpressionsEvaluator extends Base {
43
+ /**
44
+ * Evaluate binary expression: left op right.
45
+ * Handles arithmetic, comparison, and logical operators.
46
+ */
47
+ async evaluateBinaryExpr(node) {
48
+ const { op } = node;
49
+ // Logical operators with short-circuit evaluation
50
+ if (op === '||') {
51
+ const left = await this.evaluateExprHead(node.left);
52
+ if (isTruthy(left))
53
+ return true;
54
+ const right = await this.evaluateExprHead(node.right);
55
+ return isTruthy(right);
56
+ }
57
+ if (op === '&&') {
58
+ const left = await this.evaluateExprHead(node.left);
59
+ if (!isTruthy(left))
60
+ return false;
61
+ const right = await this.evaluateExprHead(node.right);
62
+ return isTruthy(right);
63
+ }
64
+ // Comparison operators - work on any values, return boolean
65
+ if (op === '==' ||
66
+ op === '!=' ||
67
+ op === '<' ||
68
+ op === '>' ||
69
+ op === '<=' ||
70
+ op === '>=') {
71
+ const left = await this.evaluateExprHead(node.left);
72
+ const right = await this.evaluateExprHead(node.right);
73
+ return this.evaluateBinaryComparison(left, right, op, node);
74
+ }
75
+ // Arithmetic operators - require numbers
76
+ const left = await this.evaluateExprHeadNumber(node.left);
77
+ const right = await this.evaluateExprHeadNumber(node.right);
78
+ switch (op) {
79
+ case '+':
80
+ return left + right;
81
+ case '-':
82
+ return left - right;
83
+ case '*':
84
+ return left * right;
85
+ case '/':
86
+ if (right === 0) {
87
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, 'Division by zero', node.span.start);
88
+ }
89
+ return left / right;
90
+ case '%':
91
+ if (right === 0) {
92
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, 'Modulo by zero', node.span.start);
93
+ }
94
+ return left % right;
95
+ }
96
+ }
97
+ /**
98
+ * Evaluate comparison between two values.
99
+ * Equality works on all types, ordering requires compatible types.
100
+ */
101
+ evaluateBinaryComparison(left, right, op, node) {
102
+ switch (op) {
103
+ case '==':
104
+ return deepEquals(left, right);
105
+ case '!=':
106
+ return !deepEquals(left, right);
107
+ case '<':
108
+ case '>':
109
+ case '<=':
110
+ case '>=':
111
+ // Ordering comparisons require compatible types
112
+ if (typeof left === 'number' && typeof right === 'number') {
113
+ return op === '<'
114
+ ? left < right
115
+ : op === '>'
116
+ ? left > right
117
+ : op === '<='
118
+ ? left <= right
119
+ : left >= right;
120
+ }
121
+ if (typeof left === 'string' && typeof right === 'string') {
122
+ return op === '<'
123
+ ? left < right
124
+ : op === '>'
125
+ ? left > right
126
+ : op === '<='
127
+ ? left <= right
128
+ : left >= right;
129
+ }
130
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Cannot compare ${inferType(left)} with ${inferType(right)} using ${op}`, node.span.start);
131
+ }
132
+ }
133
+ /**
134
+ * Evaluate unary expression: -operand or !operand.
135
+ */
136
+ async evaluateUnaryExpr(node) {
137
+ if (node.op === '!') {
138
+ const value = await this.evaluateExprHead(node.operand);
139
+ return !isTruthy(value);
140
+ }
141
+ // Unary minus
142
+ const operand = node.operand;
143
+ if (operand.type === 'UnaryExpr') {
144
+ const inner = await this.evaluateUnaryExpr(operand);
145
+ if (typeof inner !== 'number') {
146
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Unary minus requires number, got ${inferType(inner)}`, node.span.start);
147
+ }
148
+ return -inner;
149
+ }
150
+ const value = await this.evaluateExprHeadNumber(operand);
151
+ return -value;
152
+ }
153
+ /**
154
+ * Evaluate expression head, returning any RillValue.
155
+ * Helper for binary and unary expression evaluation.
156
+ */
157
+ async evaluateExprHead(node) {
158
+ switch (node.type) {
159
+ case 'BinaryExpr':
160
+ return this.evaluateBinaryExpr(node);
161
+ case 'UnaryExpr':
162
+ return this.evaluateUnaryExpr(node);
163
+ case 'PostfixExpr':
164
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
165
+ return this.evaluatePostfixExpr(node);
166
+ }
167
+ }
168
+ /**
169
+ * Evaluate expression head, requiring a number result.
170
+ * Helper for arithmetic operators.
171
+ */
172
+ async evaluateExprHeadNumber(node) {
173
+ const value = await this.evaluateExprHead(node);
174
+ if (typeof value !== 'number') {
175
+ throw new RuntimeError(RILL_ERROR_CODES.RUNTIME_TYPE_ERROR, `Arithmetic requires number, got ${inferType(value)}`, node.span.start);
176
+ }
177
+ return value;
178
+ }
179
+ /**
180
+ * Evaluate grouped expression: (expression).
181
+ * Provides scoping - captures inside are local and not visible outside.
182
+ */
183
+ async evaluateGroupedExpr(node) {
184
+ // Grouped expressions have their own scope (reads parent, writes local only)
185
+ const childCtx = createChildContext(this.ctx);
186
+ const savedCtx = this.ctx;
187
+ this.ctx = childCtx;
188
+ try {
189
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
190
+ return await this.evaluatePipeChain(node.expression);
191
+ }
192
+ finally {
193
+ this.ctx = savedCtx;
194
+ }
195
+ }
196
+ };
197
+ }
198
+ // Export with type assertion to work around TS4094 limitation
199
+ // TypeScript can't generate declarations for functions returning classes with protected members
200
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
201
+ export const ExpressionsMixin = createExpressionsMixin;
202
+ //# sourceMappingURL=expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/expressions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ExtractionMixin - Extraction Operators
3
+ *
4
+ * Handles destructure, slice, and spread operations for extracting
5
+ * values from lists and dicts.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare const ExtractionMixin: any;
10
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/extraction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwYH,eAAO,MAAM,eAAe,EAA4B,GAAG,CAAC"}