@rcrsr/rill 0.1.0 → 0.2.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 (260) hide show
  1. package/README.md +16 -8
  2. package/dist/check/config.d.ts +20 -0
  3. package/dist/check/config.d.ts.map +1 -0
  4. package/dist/check/config.js +151 -0
  5. package/dist/check/config.js.map +1 -0
  6. package/dist/check/fixer.d.ts +39 -0
  7. package/dist/check/fixer.d.ts.map +1 -0
  8. package/dist/check/fixer.js +119 -0
  9. package/dist/check/fixer.js.map +1 -0
  10. package/dist/check/index.d.ts +10 -0
  11. package/dist/check/index.d.ts.map +1 -0
  12. package/dist/check/index.js +21 -0
  13. package/dist/check/index.js.map +1 -0
  14. package/dist/check/rules/anti-patterns.d.ts +65 -0
  15. package/dist/check/rules/anti-patterns.d.ts.map +1 -0
  16. package/dist/check/rules/anti-patterns.js +427 -0
  17. package/dist/check/rules/anti-patterns.js.map +1 -0
  18. package/dist/check/rules/closures.d.ts +66 -0
  19. package/dist/check/rules/closures.d.ts.map +1 -0
  20. package/dist/check/rules/closures.js +373 -0
  21. package/dist/check/rules/closures.js.map +1 -0
  22. package/dist/check/rules/collections.d.ts +90 -0
  23. package/dist/check/rules/collections.d.ts.map +1 -0
  24. package/dist/check/rules/collections.js +373 -0
  25. package/dist/check/rules/collections.js.map +1 -0
  26. package/dist/check/rules/conditionals.d.ts +41 -0
  27. package/dist/check/rules/conditionals.d.ts.map +1 -0
  28. package/dist/check/rules/conditionals.js +106 -0
  29. package/dist/check/rules/conditionals.js.map +1 -0
  30. package/dist/check/rules/flow.d.ts +46 -0
  31. package/dist/check/rules/flow.d.ts.map +1 -0
  32. package/dist/check/rules/flow.js +206 -0
  33. package/dist/check/rules/flow.js.map +1 -0
  34. package/dist/check/rules/formatting.d.ts +133 -0
  35. package/dist/check/rules/formatting.d.ts.map +1 -0
  36. package/dist/check/rules/formatting.js +639 -0
  37. package/dist/check/rules/formatting.js.map +1 -0
  38. package/dist/check/rules/helpers.d.ts +26 -0
  39. package/dist/check/rules/helpers.d.ts.map +1 -0
  40. package/dist/check/rules/helpers.js +66 -0
  41. package/dist/check/rules/helpers.js.map +1 -0
  42. package/dist/check/rules/index.d.ts +21 -0
  43. package/dist/check/rules/index.d.ts.map +1 -0
  44. package/dist/check/rules/index.js +78 -0
  45. package/dist/check/rules/index.js.map +1 -0
  46. package/dist/check/rules/loops.d.ts +70 -0
  47. package/dist/check/rules/loops.d.ts.map +1 -0
  48. package/dist/check/rules/loops.js +227 -0
  49. package/dist/check/rules/loops.js.map +1 -0
  50. package/dist/check/rules/naming.d.ts +21 -0
  51. package/dist/check/rules/naming.d.ts.map +1 -0
  52. package/dist/check/rules/naming.js +167 -0
  53. package/dist/check/rules/naming.js.map +1 -0
  54. package/dist/check/rules/strings.d.ts +28 -0
  55. package/dist/check/rules/strings.d.ts.map +1 -0
  56. package/dist/check/rules/strings.js +80 -0
  57. package/dist/check/rules/strings.js.map +1 -0
  58. package/dist/check/rules/types.d.ts +41 -0
  59. package/dist/check/rules/types.d.ts.map +1 -0
  60. package/dist/check/rules/types.js +162 -0
  61. package/dist/check/rules/types.js.map +1 -0
  62. package/dist/check/types.d.ts +106 -0
  63. package/dist/check/types.d.ts.map +1 -0
  64. package/dist/check/types.js +6 -0
  65. package/dist/check/types.js.map +1 -0
  66. package/dist/check/validator.d.ts +18 -0
  67. package/dist/check/validator.d.ts.map +1 -0
  68. package/dist/check/validator.js +88 -0
  69. package/dist/check/validator.js.map +1 -0
  70. package/dist/check/visitor.d.ts +33 -0
  71. package/dist/check/visitor.d.ts.map +1 -0
  72. package/dist/check/visitor.js +243 -0
  73. package/dist/check/visitor.js.map +1 -0
  74. package/dist/cli-check.d.ts +43 -0
  75. package/dist/cli-check.d.ts.map +1 -0
  76. package/dist/cli-check.js +356 -0
  77. package/dist/cli-check.js.map +1 -0
  78. package/dist/cli-eval.d.ts +15 -0
  79. package/dist/cli-eval.d.ts.map +1 -0
  80. package/dist/cli-eval.js +120 -0
  81. package/dist/cli-eval.js.map +1 -0
  82. package/dist/cli-exec.d.ts +49 -0
  83. package/dist/cli-exec.d.ts.map +1 -0
  84. package/dist/cli-exec.js +191 -0
  85. package/dist/cli-exec.js.map +1 -0
  86. package/dist/cli-module-loader.d.ts +19 -0
  87. package/dist/cli-module-loader.d.ts.map +1 -0
  88. package/dist/cli-module-loader.js +83 -0
  89. package/dist/cli-module-loader.js.map +1 -0
  90. package/dist/cli-shared.d.ts +36 -0
  91. package/dist/cli-shared.d.ts.map +1 -0
  92. package/dist/cli-shared.js +101 -0
  93. package/dist/cli-shared.js.map +1 -0
  94. package/dist/cli.d.ts +2 -0
  95. package/dist/cli.d.ts.map +1 -1
  96. package/dist/cli.js +4 -11
  97. package/dist/cli.js.map +1 -1
  98. package/dist/index.d.ts +1 -1
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +1 -1
  101. package/dist/index.js.map +1 -1
  102. package/dist/lexer/readers.d.ts +1 -1
  103. package/dist/lexer/readers.d.ts.map +1 -1
  104. package/dist/lexer/readers.js +62 -32
  105. package/dist/lexer/readers.js.map +1 -1
  106. package/dist/lexer/tokenizer.d.ts.map +1 -1
  107. package/dist/lexer/tokenizer.js +5 -6
  108. package/dist/lexer/tokenizer.js.map +1 -1
  109. package/dist/parser/index.js +1 -1
  110. package/dist/parser/index.js.map +1 -1
  111. package/dist/parser/parser-expr.js +23 -5
  112. package/dist/parser/parser-expr.js.map +1 -1
  113. package/dist/parser/parser-functions.d.ts +2 -2
  114. package/dist/parser/parser-functions.d.ts.map +1 -1
  115. package/dist/parser/parser-functions.js +2 -1
  116. package/dist/parser/parser-functions.js.map +1 -1
  117. package/dist/parser/parser-literals.js +2 -2
  118. package/dist/parser/parser-literals.js.map +1 -1
  119. package/dist/parser/parser-script.js +9 -7
  120. package/dist/parser/parser-script.js.map +1 -1
  121. package/dist/parser/parser-variables.js +4 -3
  122. package/dist/parser/parser-variables.js.map +1 -1
  123. package/dist/runtime/core/callable.d.ts +5 -6
  124. package/dist/runtime/core/callable.d.ts.map +1 -1
  125. package/dist/runtime/core/callable.js.map +1 -1
  126. package/dist/runtime/core/context.d.ts.map +1 -1
  127. package/dist/runtime/core/context.js +19 -32
  128. package/dist/runtime/core/context.js.map +1 -1
  129. package/dist/runtime/core/equals.js +1 -1
  130. package/dist/runtime/core/equals.js.map +1 -1
  131. package/dist/runtime/core/eval/evaluator.d.ts +78 -0
  132. package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
  133. package/dist/runtime/core/eval/evaluator.js +78 -0
  134. package/dist/runtime/core/eval/evaluator.js.map +1 -1
  135. package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
  136. package/dist/runtime/core/eval/mixins/closures.js +9 -1
  137. package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
  138. package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
  139. package/dist/runtime/core/eval/mixins/variables.js +143 -2
  140. package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
  141. package/dist/runtime/core/types.d.ts +15 -2
  142. package/dist/runtime/core/types.d.ts.map +1 -1
  143. package/dist/runtime/core/types.js.map +1 -1
  144. package/dist/runtime/ext/extensions.d.ts +51 -0
  145. package/dist/runtime/ext/extensions.d.ts.map +1 -0
  146. package/dist/runtime/ext/extensions.js +67 -0
  147. package/dist/runtime/ext/extensions.js.map +1 -0
  148. package/dist/runtime/index.d.ts +3 -0
  149. package/dist/runtime/index.d.ts.map +1 -1
  150. package/dist/runtime/index.js +1 -0
  151. package/dist/runtime/index.js.map +1 -1
  152. package/dist/types.d.ts +8 -4
  153. package/dist/types.d.ts.map +1 -1
  154. package/dist/types.js +5 -4
  155. package/dist/types.js.map +1 -1
  156. package/docs/00_INDEX.md +1 -0
  157. package/docs/01_guide.md +3 -3
  158. package/docs/02_types.md +8 -10
  159. package/docs/03_variables.md +10 -0
  160. package/docs/04_operators.md +3 -3
  161. package/docs/05_control-flow.md +21 -0
  162. package/docs/07_collections.md +2 -0
  163. package/docs/10_parsing.md +9 -9
  164. package/docs/11_reference.md +1 -1
  165. package/docs/12_examples.md +36 -62
  166. package/docs/14_host-integration.md +116 -111
  167. package/docs/15_grammar.ebnf +1 -5
  168. package/docs/16_conventions.md +3 -4
  169. package/docs/17_cli-tools.md +184 -0
  170. package/docs/99_llm-reference.txt +46 -5
  171. package/package.json +13 -4
  172. package/dist/demo.d.ts +0 -6
  173. package/dist/demo.d.ts.map +0 -1
  174. package/dist/demo.js +0 -121
  175. package/dist/demo.js.map +0 -1
  176. package/dist/lexer.d.ts +0 -19
  177. package/dist/lexer.d.ts.map +0 -1
  178. package/dist/lexer.js +0 -344
  179. package/dist/lexer.js.map +0 -1
  180. package/dist/parser/arithmetic.d.ts +0 -16
  181. package/dist/parser/arithmetic.d.ts.map +0 -1
  182. package/dist/parser/arithmetic.js +0 -128
  183. package/dist/parser/arithmetic.js.map +0 -1
  184. package/dist/parser/boolean.d.ts +0 -15
  185. package/dist/parser/boolean.d.ts.map +0 -1
  186. package/dist/parser/boolean.js +0 -20
  187. package/dist/parser/boolean.js.map +0 -1
  188. package/dist/parser/control-flow.d.ts +0 -56
  189. package/dist/parser/control-flow.d.ts.map +0 -1
  190. package/dist/parser/control-flow.js +0 -167
  191. package/dist/parser/control-flow.js.map +0 -1
  192. package/dist/parser/expressions.d.ts +0 -23
  193. package/dist/parser/expressions.d.ts.map +0 -1
  194. package/dist/parser/expressions.js +0 -950
  195. package/dist/parser/expressions.js.map +0 -1
  196. package/dist/parser/extraction.d.ts +0 -48
  197. package/dist/parser/extraction.d.ts.map +0 -1
  198. package/dist/parser/extraction.js +0 -279
  199. package/dist/parser/extraction.js.map +0 -1
  200. package/dist/parser/functions.d.ts +0 -20
  201. package/dist/parser/functions.d.ts.map +0 -1
  202. package/dist/parser/functions.js +0 -96
  203. package/dist/parser/functions.js.map +0 -1
  204. package/dist/parser/literals.d.ts +0 -37
  205. package/dist/parser/literals.d.ts.map +0 -1
  206. package/dist/parser/literals.js +0 -373
  207. package/dist/parser/literals.js.map +0 -1
  208. package/dist/parser/script.d.ts +0 -14
  209. package/dist/parser/script.d.ts.map +0 -1
  210. package/dist/parser/script.js +0 -196
  211. package/dist/parser/script.js.map +0 -1
  212. package/dist/parser/variables.d.ts +0 -10
  213. package/dist/parser/variables.d.ts.map +0 -1
  214. package/dist/parser/variables.js +0 -215
  215. package/dist/parser/variables.js.map +0 -1
  216. package/dist/runtime/ast-equals.d.ts +0 -13
  217. package/dist/runtime/ast-equals.d.ts.map +0 -1
  218. package/dist/runtime/ast-equals.js +0 -447
  219. package/dist/runtime/ast-equals.js.map +0 -1
  220. package/dist/runtime/builtins.d.ts +0 -13
  221. package/dist/runtime/builtins.d.ts.map +0 -1
  222. package/dist/runtime/builtins.js +0 -180
  223. package/dist/runtime/builtins.js.map +0 -1
  224. package/dist/runtime/callable.d.ts +0 -88
  225. package/dist/runtime/callable.d.ts.map +0 -1
  226. package/dist/runtime/callable.js +0 -98
  227. package/dist/runtime/callable.js.map +0 -1
  228. package/dist/runtime/context.d.ts +0 -13
  229. package/dist/runtime/context.d.ts.map +0 -1
  230. package/dist/runtime/context.js +0 -73
  231. package/dist/runtime/context.js.map +0 -1
  232. package/dist/runtime/core/evaluate.d.ts +0 -42
  233. package/dist/runtime/core/evaluate.d.ts.map +0 -1
  234. package/dist/runtime/core/evaluate.debug.js +0 -1251
  235. package/dist/runtime/core/evaluate.js +0 -1913
  236. package/dist/runtime/core/evaluate.js.map +0 -1
  237. package/dist/runtime/evaluate.d.ts +0 -32
  238. package/dist/runtime/evaluate.d.ts.map +0 -1
  239. package/dist/runtime/evaluate.js +0 -1111
  240. package/dist/runtime/evaluate.js.map +0 -1
  241. package/dist/runtime/execute.d.ts +0 -26
  242. package/dist/runtime/execute.d.ts.map +0 -1
  243. package/dist/runtime/execute.js +0 -121
  244. package/dist/runtime/execute.js.map +0 -1
  245. package/dist/runtime/signals.d.ts +0 -19
  246. package/dist/runtime/signals.d.ts.map +0 -1
  247. package/dist/runtime/signals.js +0 -26
  248. package/dist/runtime/signals.js.map +0 -1
  249. package/dist/runtime/types.d.ts +0 -169
  250. package/dist/runtime/types.d.ts.map +0 -1
  251. package/dist/runtime/types.js +0 -50
  252. package/dist/runtime/types.js.map +0 -1
  253. package/dist/runtime/values.d.ts +0 -50
  254. package/dist/runtime/values.d.ts.map +0 -1
  255. package/dist/runtime/values.js +0 -209
  256. package/dist/runtime/values.js.map +0 -1
  257. package/dist/runtime.d.ts +0 -254
  258. package/dist/runtime.d.ts.map +0 -1
  259. package/dist/runtime.js +0 -2014
  260. package/dist/runtime.js.map +0 -1
@@ -1,128 +0,0 @@
1
- /**
2
- * Arithmetic Expression Parsing
3
- * Handles | expr | arithmetic expressions
4
- */
5
- import { ParseError, TOKEN_TYPES } from '../types.js';
6
- import { check, advance, expect, current, makeSpan } from './state.js';
7
- import { parseVariable } from './variables.js';
8
- // ============================================================
9
- // ARITHMETIC EXPRESSIONS
10
- // ============================================================
11
- /**
12
- * Parse arithmetic expression: | expr |
13
- * Grammar:
14
- * arith-expr = "|" additive "|"
15
- * additive = multiplicative { ("+" | "-") multiplicative }
16
- * multiplicative = factor { ("*" | "/" | "%") factor }
17
- * factor = number | variable | "(" additive ")" | "-" factor
18
- */
19
- export function parseArithmetic(state) {
20
- const start = current(state).span.start;
21
- expect(state, TOKEN_TYPES.PIPE_BAR, 'Expected |');
22
- const expr = parseArithAdditive(state);
23
- expect(state, TOKEN_TYPES.PIPE_BAR, 'Expected closing |');
24
- return {
25
- ...expr,
26
- span: makeSpan(start, current(state).span.end),
27
- };
28
- }
29
- function parseArithAdditive(state) {
30
- const start = current(state).span.start;
31
- let left = parseArithMultiplicative(state);
32
- while (check(state, TOKEN_TYPES.PLUS, TOKEN_TYPES.MINUS)) {
33
- const opToken = advance(state);
34
- const op = opToken.type === TOKEN_TYPES.PLUS ? '+' : '-';
35
- const right = parseArithMultiplicative(state);
36
- left = {
37
- type: 'Arithmetic',
38
- op,
39
- left,
40
- right,
41
- span: makeSpan(start, current(state).span.end),
42
- };
43
- }
44
- return left;
45
- }
46
- function parseArithMultiplicative(state) {
47
- const start = current(state).span.start;
48
- let left = parseArithFactor(state);
49
- while (check(state, TOKEN_TYPES.STAR, TOKEN_TYPES.SLASH, TOKEN_TYPES.PERCENT)) {
50
- const opToken = advance(state);
51
- let op;
52
- switch (opToken.type) {
53
- case TOKEN_TYPES.STAR:
54
- op = '*';
55
- break;
56
- case TOKEN_TYPES.SLASH:
57
- op = '/';
58
- break;
59
- default:
60
- op = '%';
61
- }
62
- const right = parseArithFactor(state);
63
- left = {
64
- type: 'Arithmetic',
65
- op,
66
- left,
67
- right,
68
- span: makeSpan(start, current(state).span.end),
69
- };
70
- }
71
- return left;
72
- }
73
- function parseArithFactor(state) {
74
- const start = current(state).span.start;
75
- // Unary minus
76
- if (check(state, TOKEN_TYPES.MINUS)) {
77
- advance(state);
78
- const operand = parseArithFactor(state);
79
- // Represent -x as (0 - x)
80
- const zero = {
81
- type: 'NumberLiteral',
82
- value: 0,
83
- span: makeSpan(start, start),
84
- };
85
- return {
86
- type: 'Arithmetic',
87
- op: '-',
88
- left: zero,
89
- right: operand,
90
- span: makeSpan(start, current(state).span.end),
91
- };
92
- }
93
- // Grouped expression
94
- if (check(state, TOKEN_TYPES.LPAREN)) {
95
- advance(state);
96
- const expr = parseArithAdditive(state);
97
- expect(state, TOKEN_TYPES.RPAREN, 'Expected )');
98
- return expr;
99
- }
100
- // Number literal
101
- if (check(state, TOKEN_TYPES.NUMBER)) {
102
- const token = advance(state);
103
- return {
104
- type: 'Arithmetic',
105
- op: null,
106
- left: {
107
- type: 'NumberLiteral',
108
- value: parseFloat(token.value),
109
- span: token.span,
110
- },
111
- right: null,
112
- span: token.span,
113
- };
114
- }
115
- // Variable ($ or $name)
116
- if (check(state, TOKEN_TYPES.DOLLAR, TOKEN_TYPES.PIPE_VAR)) {
117
- const variable = parseVariable(state);
118
- return {
119
- type: 'Arithmetic',
120
- op: null,
121
- left: variable,
122
- right: null,
123
- span: variable.span,
124
- };
125
- }
126
- throw new ParseError(`Expected number or variable in arithmetic, got: ${current(state).value}`, current(state).span.start);
127
- }
128
- //# sourceMappingURL=arithmetic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arithmetic.js","sourceRoot":"","sources":["../../src/parser/arithmetic.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Boolean Expression Parsing - Circular Dependency Helpers
3
- *
4
- * This module only contains setter functions for breaking circular dependencies.
5
- * Boolean/logical operators (&&, ||, !) are now part of the main expression grammar
6
- * in expressions.ts.
7
- */
8
- import type { BlockNode, GroupedExprNode } from '../types.js';
9
- import type { ParserState } from './state.js';
10
- declare let parseGroupedFn: (state: ParserState) => GroupedExprNode;
11
- export declare function setParseGrouped(fn: (state: ParserState) => GroupedExprNode): void;
12
- declare let parseBlockFn: (state: ParserState) => BlockNode;
13
- export declare function setParseBlock(fn: (state: ParserState) => BlockNode): void;
14
- export { parseGroupedFn, parseBlockFn };
15
- //# sourceMappingURL=boolean.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/parser/boolean.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,QAAA,IAAI,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,eAAe,CAAC;AAE5D,wBAAgB,eAAe,CAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,eAAe,GAC1C,IAAI,CAEN;AAGD,QAAA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,CAAC;AAEpD,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAEzE;AAGD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Boolean Expression Parsing - Circular Dependency Helpers
3
- *
4
- * This module only contains setter functions for breaking circular dependencies.
5
- * Boolean/logical operators (&&, ||, !) are now part of the main expression grammar
6
- * in expressions.ts.
7
- */
8
- // Forward declaration for grouped expression parsing
9
- let parseGroupedFn;
10
- export function setParseGrouped(fn) {
11
- parseGroupedFn = fn;
12
- }
13
- // Forward declaration - will be set to break circular dependency
14
- let parseBlockFn;
15
- export function setParseBlock(fn) {
16
- parseBlockFn = fn;
17
- }
18
- // Re-export for any code that might still use these
19
- export { parseGroupedFn, parseBlockFn };
20
- //# sourceMappingURL=boolean.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/parser/boolean.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,qDAAqD;AACrD,IAAI,cAAuD,CAAC;AAE5D,MAAM,UAAU,eAAe,CAC7B,EAA2C;IAE3C,cAAc,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,iEAAiE;AACjE,IAAI,YAA+C,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAC,EAAqC;IACjE,YAAY,GAAG,EAAE,CAAC;AACpB,CAAC;AAED,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}
@@ -1,56 +0,0 @@
1
- /**
2
- * Control Flow Parsing
3
- * Conditionals, loops, and blocks
4
- *
5
- * New loop syntax (v0.0.2):
6
- * loop = [ simple-body ] , "@" , simple-body , [ "?" , simple-body ]
7
- *
8
- * Semantics (determined at runtime):
9
- * - If input is bool and no trailing "?": while loop
10
- * - If input is list and no trailing "?": for-each
11
- * - If no input and no trailing "?": for-each over $
12
- * - If trailing "? cond": do-while
13
- */
14
- import type { AnnotatedStatementNode, BlockNode, ConditionalNode, DoWhileLoopNode, ExpressionNode, ForLoopNode, BodyNode, StatementNode } from '../types.js';
15
- import { type ParserState } from './state.js';
16
- export declare function setParseStatement(fn: (state: ParserState) => StatementNode | AnnotatedStatementNode): void;
17
- /**
18
- * Parse piped conditional: ? then_body [! else_body]
19
- * Called when bare `?` is seen (condition is implicit $).
20
- */
21
- export declare function parsePipedConditional(state: ParserState): ConditionalNode;
22
- /**
23
- * Parse conditional after condition is already parsed: ? then_body [! else_body]
24
- * Called when we've parsed an expression and see `?` following it.
25
- */
26
- export declare function parseConditionalWithCondition(state: ParserState, conditionBody: BodyNode): ConditionalNode;
27
- /**
28
- * Parse the rest of a conditional after `?` is consumed.
29
- * Grammar: then_body [! (conditional | else_body)]
30
- */
31
- export declare function parseConditionalRest(state: ParserState, condition: BodyNode | null, start: {
32
- line: number;
33
- column: number;
34
- offset: number;
35
- }): ConditionalNode;
36
- /**
37
- * Parse loop starting with @: @ body [? cond]
38
- *
39
- * New syntax:
40
- * @ body - for-each over $
41
- * @ body ? cond - do-while (body first, then check)
42
- *
43
- * Called when bare `@` is seen (no input expression).
44
- */
45
- export declare function parseLoop(state: ParserState, input: ExpressionNode | null): ForLoopNode | DoWhileLoopNode;
46
- /**
47
- * Parse loop with input: input @ body
48
- *
49
- * New syntax:
50
- * input @ body - while (if input is bool) or for-each (if input is list)
51
- *
52
- * Called when we've parsed an expression and see `@` following it.
53
- */
54
- export declare function parseLoopWithInput(state: ParserState, input: BodyNode): ForLoopNode | DoWhileLoopNode;
55
- export declare function parseBlock(state: ParserState): BlockNode;
56
- //# sourceMappingURL=control-flow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-flow.d.ts","sourceRoot":"","sources":["../../src/parser/control-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,QAAQ,EACR,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,WAAW,EAQjB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,GAAG,sBAAsB,GACjE,IAAI,CAEN;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAKzE;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,QAAQ,GACtB,eAAe,CAKjB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,QAAQ,GAAG,IAAI,EAC1B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtD,eAAe,CA6BjB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,cAAc,GAAG,IAAI,GAC3B,WAAW,GAAG,eAAe,CA4B/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,QAAQ,GACd,WAAW,GAAG,eAAe,CAyB/B;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAuBxD"}
@@ -1,167 +0,0 @@
1
- /**
2
- * Control Flow Parsing
3
- * Conditionals, loops, and blocks
4
- *
5
- * New loop syntax (v0.0.2):
6
- * loop = [ simple-body ] , "@" , simple-body , [ "?" , simple-body ]
7
- *
8
- * Semantics (determined at runtime):
9
- * - If input is bool and no trailing "?": while loop
10
- * - If input is list and no trailing "?": for-each
11
- * - If no input and no trailing "?": for-each over $
12
- * - If trailing "? cond": do-while
13
- */
14
- import { ParseError, TOKEN_TYPES } from '../types.js';
15
- import { check, advance, expect, current, isAtEnd, skipNewlines, makeSpan, } from './state.js';
16
- import { parseBody } from './literals.js';
17
- // Forward declarations - will be set to break circular dependencies
18
- let parseStatementFn;
19
- export function setParseStatement(fn) {
20
- parseStatementFn = fn;
21
- }
22
- // ============================================================
23
- // CONDITIONALS
24
- // ============================================================
25
- /**
26
- * Parse piped conditional: ? then_body [! else_body]
27
- * Called when bare `?` is seen (condition is implicit $).
28
- */
29
- export function parsePipedConditional(state) {
30
- const start = current(state).span.start;
31
- expect(state, TOKEN_TYPES.QUESTION, 'Expected ?');
32
- return parseConditionalRest(state, null, start);
33
- }
34
- /**
35
- * Parse conditional after condition is already parsed: ? then_body [! else_body]
36
- * Called when we've parsed an expression and see `?` following it.
37
- */
38
- export function parseConditionalWithCondition(state, conditionBody) {
39
- const start = conditionBody.span.start;
40
- expect(state, TOKEN_TYPES.QUESTION, 'Expected ?');
41
- return parseConditionalRest(state, conditionBody, start);
42
- }
43
- /**
44
- * Parse the rest of a conditional after `?` is consumed.
45
- * Grammar: then_body [! (conditional | else_body)]
46
- */
47
- export function parseConditionalRest(state, condition, start) {
48
- // Parse then branch - can be block, grouped, or postfix-expr
49
- const thenBranch = parseBody(state);
50
- // Optional else clause with `!` (not `:`)
51
- let elseBranch = null;
52
- if (check(state, TOKEN_TYPES.BANG)) {
53
- advance(state);
54
- // Check if this is else-if (another condition followed by ?)
55
- // We need to parse a simple-body first, then check for ?
56
- const elseBody = parseBody(state);
57
- // If followed by ?, this is else-if chaining
58
- if (check(state, TOKEN_TYPES.QUESTION)) {
59
- elseBranch = parseConditionalWithCondition(state, elseBody);
60
- }
61
- else {
62
- elseBranch = elseBody;
63
- }
64
- }
65
- return {
66
- type: 'Conditional',
67
- input: null,
68
- condition,
69
- thenBranch,
70
- elseBranch,
71
- span: makeSpan(start, current(state).span.end),
72
- };
73
- }
74
- // ============================================================
75
- // LOOPS
76
- // ============================================================
77
- /**
78
- * Parse loop starting with @: @ body [? cond]
79
- *
80
- * New syntax:
81
- * @ body - for-each over $
82
- * @ body ? cond - do-while (body first, then check)
83
- *
84
- * Called when bare `@` is seen (no input expression).
85
- */
86
- export function parseLoop(state, input) {
87
- const start = input ? input.span.start : current(state).span.start;
88
- expect(state, TOKEN_TYPES.AT, 'Expected @');
89
- // Parse body - can be block, grouped, or postfix-expr
90
- const body = parseBody(state);
91
- // Check for do-while post-condition: @ body ? cond
92
- if (check(state, TOKEN_TYPES.QUESTION)) {
93
- advance(state); // consume ?
94
- const condition = parseBody(state);
95
- return {
96
- type: 'DoWhileLoop',
97
- input,
98
- body,
99
- condition,
100
- span: makeSpan(start, current(state).span.end),
101
- };
102
- }
103
- // Regular loop (for-each or while, determined at runtime)
104
- return {
105
- type: 'ForLoop',
106
- input,
107
- body,
108
- span: makeSpan(start, current(state).span.end),
109
- };
110
- }
111
- /**
112
- * Parse loop with input: input @ body
113
- *
114
- * New syntax:
115
- * input @ body - while (if input is bool) or for-each (if input is list)
116
- *
117
- * Called when we've parsed an expression and see `@` following it.
118
- */
119
- export function parseLoopWithInput(state, input) {
120
- // Convert BodyNode to ExpressionNode (wrap if needed)
121
- let inputExpr;
122
- if (input.type === 'PipeChain') {
123
- inputExpr = input;
124
- }
125
- else {
126
- // Wrap in PipeChain
127
- inputExpr = {
128
- type: 'PipeChain',
129
- head: input.type === 'PostfixExpr'
130
- ? input
131
- : {
132
- type: 'PostfixExpr',
133
- primary: input,
134
- methods: [],
135
- span: input.span,
136
- },
137
- pipes: [],
138
- terminator: null,
139
- span: input.span,
140
- };
141
- }
142
- return parseLoop(state, inputExpr);
143
- }
144
- // ============================================================
145
- // BLOCKS
146
- // ============================================================
147
- export function parseBlock(state) {
148
- const start = current(state).span.start;
149
- expect(state, TOKEN_TYPES.LBRACE, 'Expected {');
150
- skipNewlines(state);
151
- const statements = [];
152
- while (!check(state, TOKEN_TYPES.RBRACE) && !isAtEnd(state)) {
153
- statements.push(parseStatementFn(state));
154
- skipNewlines(state);
155
- }
156
- // Empty blocks are not allowed - blocks must contain at least one statement
157
- if (statements.length === 0) {
158
- throw new ParseError('Empty blocks are not allowed', start);
159
- }
160
- expect(state, TOKEN_TYPES.RBRACE, 'Expected }');
161
- return {
162
- type: 'Block',
163
- statements,
164
- span: makeSpan(start, current(state).span.end),
165
- };
166
- }
167
- //# sourceMappingURL=control-flow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-flow.js","sourceRoot":"","sources":["../../src/parser/control-flow.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Expression Parsing
3
- * Primary expressions, postfix expressions, pipe chains, and pipe targets
4
- */
5
- import type { CaptureNode, ExpressionNode, GroupedExprNode, PipeChainNode, PipeTargetNode, PostfixExprNode, PrimaryNode, SourceLocation } from '../types.js';
6
- import { type ParserState } from './state.js';
7
- export declare function parseExpression(state: ParserState): ExpressionNode;
8
- export declare function parsePipeChain(state: ParserState): PipeChainNode;
9
- export declare function parsePostfixExpr(state: ParserState): PostfixExprNode;
10
- export declare function parsePrimary(state: ParserState): PrimaryNode;
11
- export declare function parsePipeTarget(state: ParserState): PipeTargetNode;
12
- export declare function parseCapture(state: ParserState): CaptureNode;
13
- export declare function makePipeChain(primary: PrimaryNode, start: SourceLocation): PipeChainNode;
14
- /**
15
- * Grouped expression: ( expression )
16
- * Single-expression block with () delimiters.
17
- * Provides scoping — captures inside are local.
18
- *
19
- * Note: Boolean operators (&&, ||, !) are only supported in while loop
20
- * conditions @(condition), not in general grouped expressions.
21
- */
22
- export declare function parseGrouped(state: ParserState): GroupedExprNode;
23
- //# sourceMappingURL=expressions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/parser/expressions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAIV,WAAW,EAMX,cAAc,EAId,eAAe,EAIf,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,cAAc,EAMf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,WAAW,EAOjB,MAAM,YAAY,CAAC;AAsKpB,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAElE;AA4BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAyIhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAYpE;AAoHD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAwD5D;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAkHlE;AAMD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAsB5D;AAMD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,GACpB,aAAa,CAaf;AAMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAUhE"}