@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,447 @@
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
+ export function astEquals(a, b) {
12
+ // Different node types are never equal
13
+ if (a.type !== b.type)
14
+ return false;
15
+ switch (a.type) {
16
+ case 'Block':
17
+ return blockEquals(a, b);
18
+ case 'Statement':
19
+ return statementEquals(a, b);
20
+ case 'PipeChain':
21
+ return pipeChainEquals(a, b);
22
+ case 'PostfixExpr':
23
+ return postfixExprEquals(a, b);
24
+ case 'StringLiteral':
25
+ return stringLiteralEquals(a, b);
26
+ case 'NumberLiteral':
27
+ return a.value === b.value;
28
+ case 'BoolLiteral':
29
+ return a.value === b.value;
30
+ case 'Variable':
31
+ return variableEquals(a, b);
32
+ case 'FunctionCall':
33
+ return functionCallEquals(a, b);
34
+ case 'VariableCall':
35
+ return variableCallEquals(a, b);
36
+ case 'MethodCall':
37
+ return methodCallEquals(a, b);
38
+ case 'Invoke':
39
+ return invokeEquals(a, b);
40
+ case 'Conditional':
41
+ return conditionalEquals(a, b);
42
+ case 'WhileLoop':
43
+ return whileLoopEquals(a, b);
44
+ case 'ForLoop':
45
+ return forLoopEquals(a, b);
46
+ case 'Tuple':
47
+ return tupleEquals(a, b);
48
+ case 'Dict':
49
+ return dictEquals(a, b);
50
+ case 'DictEntry':
51
+ return dictEntryEquals(a, b);
52
+ case 'FunctionLiteral':
53
+ return functionLiteralEquals(a, b);
54
+ case 'FuncParam':
55
+ return funcParamEquals(a, b);
56
+ case 'Arithmetic':
57
+ return arithmeticEquals(a, b);
58
+ case 'BoolExpr':
59
+ return boolExprEquals(a, b);
60
+ case 'Comparison':
61
+ return comparisonEquals(a, b);
62
+ case 'ParallelSpread':
63
+ return parallelSpreadEquals(a, b);
64
+ case 'ParallelFilter':
65
+ return parallelFilterEquals(a, b);
66
+ case 'SequentialSpread':
67
+ return sequentialSpreadEquals(a, b);
68
+ case 'Destructure':
69
+ return destructureEquals(a, b);
70
+ case 'DestructElem':
71
+ return destructElemEquals(a, b);
72
+ case 'Slice':
73
+ return sliceEquals(a, b);
74
+ case 'Enumerate':
75
+ return true; // EnumerateNode has no fields besides type and span
76
+ case 'Spread':
77
+ return spreadEquals(a, b);
78
+ case 'Capture':
79
+ return a.name === b.name && a.typeName === b.typeName;
80
+ case 'Break':
81
+ case 'Return':
82
+ return a.value === null
83
+ ? b.value === null
84
+ : b.value !== null &&
85
+ astEquals(a.value, b.value);
86
+ case 'Interpolation':
87
+ return expressionEquals(a.expression, b.expression);
88
+ default:
89
+ // For any unhandled node types, fall back to false
90
+ return false;
91
+ }
92
+ }
93
+ function blockEquals(a, b) {
94
+ if (a.statements.length !== b.statements.length)
95
+ return false;
96
+ for (let i = 0; i < a.statements.length; i++) {
97
+ if (!statementEquals(a.statements[i], b.statements[i]))
98
+ return false;
99
+ }
100
+ return true;
101
+ }
102
+ function statementEquals(a, b) {
103
+ if (a.terminator !== b.terminator)
104
+ return false;
105
+ // Compare captures
106
+ if (a.capture === null && b.capture !== null)
107
+ return false;
108
+ if (a.capture !== null && b.capture === null)
109
+ return false;
110
+ if (a.capture !== null && b.capture !== null) {
111
+ if (a.capture.name !== b.capture.name)
112
+ return false;
113
+ if (a.capture.typeName !== b.capture.typeName)
114
+ return false;
115
+ }
116
+ return expressionEquals(a.expression, b.expression);
117
+ }
118
+ function expressionEquals(a, b) {
119
+ return pipeChainEquals(a, b);
120
+ }
121
+ function pipeChainEquals(a, b) {
122
+ if (!postfixExprEquals(a.head, b.head))
123
+ return false;
124
+ if (a.pipes.length !== b.pipes.length)
125
+ return false;
126
+ for (let i = 0; i < a.pipes.length; i++) {
127
+ if (!astEquals(a.pipes[i], b.pipes[i]))
128
+ return false;
129
+ }
130
+ return true;
131
+ }
132
+ function postfixExprEquals(a, b) {
133
+ if (!astEquals(a.primary, b.primary))
134
+ return false;
135
+ if (a.methods.length !== b.methods.length)
136
+ return false;
137
+ for (let i = 0; i < a.methods.length; i++) {
138
+ if (!methodCallEquals(a.methods[i], b.methods[i]))
139
+ return false;
140
+ }
141
+ return true;
142
+ }
143
+ function stringLiteralEquals(a, b) {
144
+ if (a.isHeredoc !== b.isHeredoc)
145
+ return false;
146
+ if (a.parts.length !== b.parts.length)
147
+ return false;
148
+ for (let i = 0; i < a.parts.length; i++) {
149
+ const aPart = a.parts[i];
150
+ const bPart = b.parts[i];
151
+ if (typeof aPart === 'string') {
152
+ if (typeof bPart !== 'string' || aPart !== bPart)
153
+ return false;
154
+ }
155
+ else {
156
+ if (typeof bPart === 'string')
157
+ return false;
158
+ if (!expressionEquals(aPart.expression, bPart.expression))
159
+ return false;
160
+ }
161
+ }
162
+ return true;
163
+ }
164
+ function variableEquals(a, b) {
165
+ if (a.name !== b.name)
166
+ return false;
167
+ if (a.isPipeVar !== b.isPipeVar)
168
+ return false;
169
+ if (a.fieldAccess.length !== b.fieldAccess.length)
170
+ return false;
171
+ for (let i = 0; i < a.fieldAccess.length; i++) {
172
+ if (a.fieldAccess[i].field !== b.fieldAccess[i].field)
173
+ return false;
174
+ }
175
+ return true;
176
+ }
177
+ function functionCallEquals(a, b) {
178
+ if (a.name !== b.name)
179
+ return false;
180
+ return argsListEquals(a.args, b.args);
181
+ }
182
+ function variableCallEquals(a, b) {
183
+ if (a.name !== b.name)
184
+ return false;
185
+ return argsListEquals(a.args, b.args);
186
+ }
187
+ function methodCallEquals(a, b) {
188
+ if (a.name !== b.name)
189
+ return false;
190
+ return argsListEquals(a.args, b.args);
191
+ }
192
+ function invokeEquals(a, b) {
193
+ return argsListEquals(a.args, b.args);
194
+ }
195
+ function argsListEquals(a, b) {
196
+ if (a.length !== b.length)
197
+ return false;
198
+ for (let i = 0; i < a.length; i++) {
199
+ if (!expressionEquals(a[i], b[i]))
200
+ return false;
201
+ }
202
+ return true;
203
+ }
204
+ function conditionalEquals(a, b) {
205
+ // Compare input
206
+ if (a.input === null && b.input !== null)
207
+ return false;
208
+ if (a.input !== null && b.input === null)
209
+ return false;
210
+ if (a.input !== null && b.input !== null) {
211
+ if (!expressionEquals(a.input, b.input))
212
+ return false;
213
+ }
214
+ // Compare condition
215
+ if (a.condition === null && b.condition !== null)
216
+ return false;
217
+ if (a.condition !== null && b.condition === null)
218
+ return false;
219
+ if (a.condition !== null && b.condition !== null) {
220
+ if (!boolExprEquals(a.condition, b.condition))
221
+ return false;
222
+ }
223
+ // Compare then block
224
+ if (!blockEquals(a.thenBlock, b.thenBlock))
225
+ return false;
226
+ // Compare else clause
227
+ if (a.elseClause === null && b.elseClause !== null)
228
+ return false;
229
+ if (a.elseClause !== null && b.elseClause === null)
230
+ return false;
231
+ if (a.elseClause !== null && b.elseClause !== null) {
232
+ if (!astEquals(a.elseClause, b.elseClause))
233
+ return false;
234
+ }
235
+ return true;
236
+ }
237
+ function whileLoopEquals(a, b) {
238
+ // Compare input
239
+ if (a.input === null && b.input !== null)
240
+ return false;
241
+ if (a.input !== null && b.input === null)
242
+ return false;
243
+ if (a.input !== null && b.input !== null) {
244
+ if (!expressionEquals(a.input, b.input))
245
+ return false;
246
+ }
247
+ // Compare condition
248
+ if (!boolExprEquals(a.condition, b.condition))
249
+ return false;
250
+ // Compare max iterations
251
+ if (a.maxIterations === null && b.maxIterations !== null)
252
+ return false;
253
+ if (a.maxIterations !== null && b.maxIterations === null)
254
+ return false;
255
+ if (a.maxIterations !== null && b.maxIterations !== null) {
256
+ if (!expressionEquals(a.maxIterations, b.maxIterations))
257
+ return false;
258
+ }
259
+ return blockEquals(a.body, b.body);
260
+ }
261
+ function forLoopEquals(a, b) {
262
+ // Compare input
263
+ if (a.input === null && b.input !== null)
264
+ return false;
265
+ if (a.input !== null && b.input === null)
266
+ return false;
267
+ if (a.input !== null && b.input !== null) {
268
+ if (!expressionEquals(a.input, b.input))
269
+ return false;
270
+ }
271
+ return blockEquals(a.body, b.body);
272
+ }
273
+ function tupleEquals(a, b) {
274
+ return argsListEquals(a.elements, b.elements);
275
+ }
276
+ function dictEquals(a, b) {
277
+ if (a.entries.length !== b.entries.length)
278
+ return false;
279
+ for (let i = 0; i < a.entries.length; i++) {
280
+ if (!dictEntryEquals(a.entries[i], b.entries[i]))
281
+ return false;
282
+ }
283
+ return true;
284
+ }
285
+ function dictEntryEquals(a, b) {
286
+ if (a.key !== b.key)
287
+ return false;
288
+ return expressionEquals(a.value, b.value);
289
+ }
290
+ function functionLiteralEquals(a, b) {
291
+ if (a.params.length !== b.params.length)
292
+ return false;
293
+ for (let i = 0; i < a.params.length; i++) {
294
+ if (!funcParamEquals(a.params[i], b.params[i]))
295
+ return false;
296
+ }
297
+ return blockEquals(a.body, b.body);
298
+ }
299
+ function funcParamEquals(a, b) {
300
+ if (a.name !== b.name)
301
+ return false;
302
+ if (a.typeName !== b.typeName)
303
+ return false;
304
+ if (a.defaultValue === null && b.defaultValue !== null)
305
+ return false;
306
+ if (a.defaultValue !== null && b.defaultValue === null)
307
+ return false;
308
+ if (a.defaultValue !== null && b.defaultValue !== null) {
309
+ if (!astEquals(a.defaultValue, b.defaultValue))
310
+ return false;
311
+ }
312
+ return true;
313
+ }
314
+ function arithmeticEquals(a, b) {
315
+ if (a.op !== b.op)
316
+ return false;
317
+ if (!astEquals(a.left, b.left))
318
+ return false;
319
+ if (a.right === null && b.right !== null)
320
+ return false;
321
+ if (a.right !== null && b.right === null)
322
+ return false;
323
+ if (a.right !== null && b.right !== null) {
324
+ if (!astEquals(a.right, b.right))
325
+ return false;
326
+ }
327
+ return true;
328
+ }
329
+ function boolExprEquals(a, b) {
330
+ if (a.type !== b.type)
331
+ return false;
332
+ if (a.type === 'Comparison') {
333
+ return comparisonEquals(a, b);
334
+ }
335
+ // BoolExpr nodes
336
+ if (a.op !== b.op)
337
+ return false;
338
+ if (a.op === 'not') {
339
+ return boolExprEquals(a.operand, b.operand);
340
+ }
341
+ // 'and' or 'or'
342
+ const aOperands = a.operands;
343
+ const bOperands = b.operands;
344
+ if (aOperands.length !== bOperands.length)
345
+ return false;
346
+ for (let i = 0; i < aOperands.length; i++) {
347
+ if (!boolExprEquals(aOperands[i], bOperands[i]))
348
+ return false;
349
+ }
350
+ return true;
351
+ }
352
+ function comparisonEquals(a, b) {
353
+ if (a.op !== b.op)
354
+ return false;
355
+ if (!astEquals(a.left, b.left))
356
+ return false;
357
+ if (a.right === null && b.right !== null)
358
+ return false;
359
+ if (a.right !== null && b.right === null)
360
+ return false;
361
+ if (a.right !== null && b.right !== null) {
362
+ if (!astEquals(a.right, b.right))
363
+ return false;
364
+ }
365
+ return true;
366
+ }
367
+ function parallelSpreadEquals(a, b) {
368
+ return expressionEquals(a.target, b.target);
369
+ }
370
+ function parallelFilterEquals(a, b) {
371
+ if (a.predicate.type !== b.predicate.type)
372
+ return false;
373
+ return astEquals(a.predicate, b.predicate);
374
+ }
375
+ function sequentialSpreadEquals(a, b) {
376
+ return expressionEquals(a.target, b.target);
377
+ }
378
+ function destructureEquals(a, b) {
379
+ if (a.elements.length !== b.elements.length)
380
+ return false;
381
+ for (let i = 0; i < a.elements.length; i++) {
382
+ if (!destructElemEquals(a.elements[i], b.elements[i]))
383
+ return false;
384
+ }
385
+ return true;
386
+ }
387
+ function destructElemEquals(a, b) {
388
+ if (a.kind !== b.kind)
389
+ return false;
390
+ if (a.name !== b.name)
391
+ return false;
392
+ if (a.key !== b.key)
393
+ return false;
394
+ if (a.typeName !== b.typeName)
395
+ return false;
396
+ if (a.nested === null && b.nested !== null)
397
+ return false;
398
+ if (a.nested !== null && b.nested === null)
399
+ return false;
400
+ if (a.nested !== null && b.nested !== null) {
401
+ if (!destructureEquals(a.nested, b.nested))
402
+ return false;
403
+ }
404
+ return true;
405
+ }
406
+ function sliceEquals(a, b) {
407
+ // Compare start
408
+ if (a.start === null && b.start !== null)
409
+ return false;
410
+ if (a.start !== null && b.start === null)
411
+ return false;
412
+ if (a.start !== null && b.start !== null) {
413
+ if (!astEquals(a.start, b.start))
414
+ return false;
415
+ }
416
+ // Compare stop
417
+ if (a.stop === null && b.stop !== null)
418
+ return false;
419
+ if (a.stop !== null && b.stop === null)
420
+ return false;
421
+ if (a.stop !== null && b.stop !== null) {
422
+ if (!astEquals(a.stop, b.stop))
423
+ return false;
424
+ }
425
+ // Compare step
426
+ if (a.step === null && b.step !== null)
427
+ return false;
428
+ if (a.step !== null && b.step === null)
429
+ return false;
430
+ if (a.step !== null && b.step !== null) {
431
+ if (!astEquals(a.step, b.step))
432
+ return false;
433
+ }
434
+ return true;
435
+ }
436
+ function spreadEquals(a, b) {
437
+ if (a.operand === null && b.operand !== null)
438
+ return false;
439
+ if (a.operand !== null && b.operand === null)
440
+ return false;
441
+ if (a.operand !== null && b.operand !== null) {
442
+ if (!expressionEquals(a.operand, b.operand))
443
+ return false;
444
+ }
445
+ return true;
446
+ }
447
+ //# sourceMappingURL=ast-equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-equals.js","sourceRoot":"","sources":["../../src/runtime/ast-equals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Built-in Functions and Methods
3
+ *
4
+ * Minimal set of built-in operations. Host applications provide
5
+ * domain-specific functions via RuntimeContext.
6
+ *
7
+ * @internal - Not part of public API
8
+ */
9
+ import type { CallableFn } from './callable.js';
10
+ import type { RillMethod } from './types.js';
11
+ export declare const BUILTIN_FUNCTIONS: Record<string, CallableFn>;
12
+ export declare const BUILTIN_METHODS: Record<string, RillMethod>;
13
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/runtime/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AAO7D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAiBxD,CAAC;AAmBF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwJtD,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Built-in Functions and Methods
3
+ *
4
+ * Minimal set of built-in operations. Host applications provide
5
+ * domain-specific functions via RuntimeContext.
6
+ *
7
+ * @internal - Not part of public API
8
+ */
9
+ import { isDict } from './callable.js';
10
+ import { deepEquals, formatValue, inferType, isEmpty } from './values.js';
11
+ // ============================================================
12
+ // BUILT-IN FUNCTIONS
13
+ // ============================================================
14
+ export const BUILTIN_FUNCTIONS = {
15
+ /** Identity function - returns its argument */
16
+ identity: (args) => args[0] ?? null,
17
+ /** Return the type name of a value */
18
+ type: (args) => inferType(args[0] ?? null),
19
+ /** Log a value and return it unchanged (passthrough) */
20
+ log: (args, ctx) => {
21
+ const value = args[0] ?? null;
22
+ // ctx is RuntimeContext but CallableFn uses a minimal interface
23
+ ctx.callbacks.onLog(value);
24
+ return value;
25
+ },
26
+ /** Convert any value to JSON string */
27
+ json: (args) => JSON.stringify(args[0] ?? null),
28
+ };
29
+ // ============================================================
30
+ // BUILT-IN METHODS
31
+ // ============================================================
32
+ /** Factory for comparison methods (lt, gt, le, ge) */
33
+ function createComparisonMethod(compare) {
34
+ return (receiver, args) => {
35
+ const arg = args[0];
36
+ if (typeof receiver === 'number' && typeof arg === 'number') {
37
+ return compare(receiver, arg);
38
+ }
39
+ return compare(formatValue(receiver), formatValue(arg ?? ''));
40
+ };
41
+ }
42
+ export const BUILTIN_METHODS = {
43
+ // === Conversion methods ===
44
+ /** Convert value to string */
45
+ str: (receiver) => formatValue(receiver),
46
+ /** Convert value to number */
47
+ num: (receiver) => {
48
+ if (typeof receiver === 'number')
49
+ return receiver;
50
+ if (typeof receiver === 'string') {
51
+ const n = parseFloat(receiver);
52
+ if (!isNaN(n))
53
+ return n;
54
+ }
55
+ if (typeof receiver === 'boolean')
56
+ return receiver ? 1 : 0;
57
+ return 0;
58
+ },
59
+ /** Get length of string or array */
60
+ len: (receiver) => {
61
+ if (typeof receiver === 'string')
62
+ return receiver.length;
63
+ if (Array.isArray(receiver))
64
+ return receiver.length;
65
+ if (receiver && typeof receiver === 'object') {
66
+ return Object.keys(receiver).length;
67
+ }
68
+ return 0;
69
+ },
70
+ /** Trim whitespace from string */
71
+ trim: (receiver) => formatValue(receiver).trim(),
72
+ // === Element access methods ===
73
+ /** Get first element of array or first char of string */
74
+ first: (receiver) => {
75
+ if (Array.isArray(receiver))
76
+ return receiver[0] ?? null;
77
+ if (typeof receiver === 'string')
78
+ return receiver[0] ?? '';
79
+ return null;
80
+ },
81
+ /** Get last element of array or last char of string */
82
+ last: (receiver) => {
83
+ if (Array.isArray(receiver))
84
+ return receiver[receiver.length - 1] ?? null;
85
+ if (typeof receiver === 'string') {
86
+ return receiver[receiver.length - 1] ?? '';
87
+ }
88
+ return null;
89
+ },
90
+ /** Get element at index */
91
+ at: (receiver, args) => {
92
+ const idx = typeof args[0] === 'number' ? args[0] : 0;
93
+ if (Array.isArray(receiver))
94
+ return receiver[idx] ?? null;
95
+ if (typeof receiver === 'string')
96
+ return receiver[idx] ?? '';
97
+ return null;
98
+ },
99
+ // === String operations ===
100
+ /** Split string by separator (default: newline) */
101
+ split: (receiver, args) => {
102
+ const str = formatValue(receiver);
103
+ const sep = typeof args[0] === 'string' ? args[0] : '\n';
104
+ return str.split(sep);
105
+ },
106
+ /** Join array elements with separator (default: comma) */
107
+ join: (receiver, args) => {
108
+ const sep = typeof args[0] === 'string' ? args[0] : ',';
109
+ if (!Array.isArray(receiver))
110
+ return formatValue(receiver);
111
+ return receiver.map(formatValue).join(sep);
112
+ },
113
+ /** Split string into lines (same as .split but newline only) */
114
+ lines: (receiver) => {
115
+ const str = formatValue(receiver);
116
+ return str.split('\n');
117
+ },
118
+ // === Utility methods ===
119
+ /** Check if value is empty */
120
+ empty: (receiver) => isEmpty(receiver),
121
+ // === Pattern matching methods ===
122
+ /** Check if string contains substring */
123
+ contains: (receiver, args) => {
124
+ const str = formatValue(receiver);
125
+ const search = formatValue(args[0] ?? '');
126
+ return str.includes(search);
127
+ },
128
+ /** Match regex pattern and return capture groups as tuple. Empty tuple = no match. */
129
+ matches: (receiver, args) => {
130
+ const str = formatValue(receiver);
131
+ const pattern = formatValue(args[0] ?? '');
132
+ try {
133
+ const match = new RegExp(pattern).exec(str);
134
+ if (!match)
135
+ return [];
136
+ // Return capture groups (index 1+), or full match if no groups
137
+ const groups = match.slice(1);
138
+ return groups.length > 0 ? groups : [match[0]];
139
+ }
140
+ catch {
141
+ return [];
142
+ }
143
+ },
144
+ // === Comparison methods ===
145
+ /** Equality check (deep structural comparison) */
146
+ eq: (receiver, args) => deepEquals(receiver, args[0] ?? null),
147
+ /** Inequality check (deep structural comparison) */
148
+ ne: (receiver, args) => !deepEquals(receiver, args[0] ?? null),
149
+ /** Less than */
150
+ lt: createComparisonMethod((a, b) => a < b),
151
+ /** Greater than */
152
+ gt: createComparisonMethod((a, b) => a > b),
153
+ /** Less than or equal */
154
+ le: createComparisonMethod((a, b) => a <= b),
155
+ /** Greater than or equal */
156
+ ge: createComparisonMethod((a, b) => a >= b),
157
+ // === Dict methods (reserved) ===
158
+ /** Get all keys of a dict as a tuple of strings */
159
+ keys: (receiver) => {
160
+ if (isDict(receiver)) {
161
+ return Object.keys(receiver);
162
+ }
163
+ return [];
164
+ },
165
+ /** Get all values of a dict as a tuple */
166
+ values: (receiver) => {
167
+ if (isDict(receiver)) {
168
+ return Object.values(receiver);
169
+ }
170
+ return [];
171
+ },
172
+ /** Get all entries of a dict as a tuple of [key, value] pairs */
173
+ entries: (receiver) => {
174
+ if (isDict(receiver)) {
175
+ return Object.entries(receiver).map(([k, v]) => [k, v]);
176
+ }
177
+ return [];
178
+ },
179
+ };
180
+ //# sourceMappingURL=builtins.js.map