@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,373 +0,0 @@
1
- /**
2
- * Literal Parsing
3
- * Strings, numbers, booleans, tuples, dicts, and closures
4
- */
5
- import { ParseError, TOKEN_TYPES } from '../types.js';
6
- import { tokenize } from '../lexer/index.js';
7
- import { createParserState, check, advance, expect, current, skipNewlines, makeSpan, } from './state.js';
8
- import { isDictStart, FUNC_PARAM_TYPES, parseTypeName } from './helpers.js';
9
- // Forward declarations - will be set by expressions.ts to break circular dependency
10
- let parseExpressionFn;
11
- let parseBlockFn;
12
- let parseGroupedFn;
13
- let parsePostfixExprFn;
14
- let parsePipeChainFn;
15
- export function setParseExpression(fn) {
16
- parseExpressionFn = fn;
17
- }
18
- export function setParseBlock(fn) {
19
- parseBlockFn = fn;
20
- }
21
- export function setParseGrouped(fn) {
22
- parseGroupedFn = fn;
23
- }
24
- export function setParsePostfixExpr(fn) {
25
- parsePostfixExprFn = fn;
26
- }
27
- export function setLiteralsParsePipeChain(fn) {
28
- parsePipeChainFn = fn;
29
- }
30
- // ============================================================
31
- // LITERAL PARSING
32
- // ============================================================
33
- export function parseLiteral(state) {
34
- if (check(state, TOKEN_TYPES.STRING)) {
35
- return parseString(state);
36
- }
37
- if (check(state, TOKEN_TYPES.NUMBER)) {
38
- const token = advance(state);
39
- return {
40
- type: 'NumberLiteral',
41
- value: parseFloat(token.value),
42
- span: token.span,
43
- };
44
- }
45
- if (check(state, TOKEN_TYPES.TRUE)) {
46
- const token = advance(state);
47
- return { type: 'BoolLiteral', value: true, span: token.span };
48
- }
49
- if (check(state, TOKEN_TYPES.FALSE)) {
50
- const token = advance(state);
51
- return { type: 'BoolLiteral', value: false, span: token.span };
52
- }
53
- if (check(state, TOKEN_TYPES.LBRACKET)) {
54
- return parseTupleOrDict(state);
55
- }
56
- // Note: LPAREN no longer starts closures
57
- // Closures use |params| body syntax (handled by parseClosure)
58
- // LPAREN now starts grouped expressions (handled by parseGrouped in expressions.ts)
59
- const token = current(state);
60
- let hint = '';
61
- if (token.type === TOKEN_TYPES.ASSIGN) {
62
- hint = ". Hint: Use '->' for assignment, not '='";
63
- }
64
- else if (token.type === TOKEN_TYPES.EOF) {
65
- hint = '. Hint: Unexpected end of input';
66
- }
67
- throw new ParseError(`Expected literal, got: ${token.value}${hint}`, token.span.start);
68
- }
69
- // ============================================================
70
- // STRING PARSING
71
- // ============================================================
72
- /**
73
- * Parse a string literal, handling interpolation expressions.
74
- * Interpolation uses {expr} syntax where expr is any valid expression.
75
- * Escaped braces \{ and \} produce literal braces.
76
- */
77
- export function parseString(state) {
78
- const token = advance(state);
79
- const raw = token.value;
80
- // Parse interpolation expressions from the string content
81
- const parts = parseStringParts(raw, token.span.start);
82
- return {
83
- type: 'StringLiteral',
84
- parts,
85
- isHeredoc: raw.includes('\n'),
86
- span: token.span,
87
- };
88
- }
89
- /**
90
- * Split string content into literal segments and interpolation expressions.
91
- * Escape syntax: {{ → literal {, }} → literal }
92
- * Interpolation: {expr} where expr is any valid expression
93
- */
94
- function parseStringParts(raw, baseLocation) {
95
- const parts = [];
96
- let i = 0;
97
- let literalStart = 0;
98
- while (i < raw.length) {
99
- if (raw[i] === '{') {
100
- // Check for escaped brace {{ - skip and let unescapeBraces handle it
101
- if (raw[i + 1] === '{') {
102
- i += 2;
103
- continue;
104
- }
105
- // Found interpolation start - save preceding literal
106
- if (i > literalStart) {
107
- const literal = unescapeBraces(raw.slice(literalStart, i));
108
- if (literal)
109
- parts.push(literal);
110
- }
111
- // Find matching closing brace (respecting nesting and escapes)
112
- const exprStart = i + 1;
113
- let depth = 1;
114
- i++;
115
- while (i < raw.length && depth > 0) {
116
- // Skip escaped braces inside interpolation
117
- if (raw[i] === '{' && raw[i + 1] === '{') {
118
- i += 2;
119
- continue;
120
- }
121
- if (raw[i] === '}' && raw[i + 1] === '}') {
122
- i += 2;
123
- continue;
124
- }
125
- if (raw[i] === '{')
126
- depth++;
127
- else if (raw[i] === '}')
128
- depth--;
129
- i++;
130
- }
131
- if (depth !== 0) {
132
- throw new ParseError("Unterminated string interpolation. Hint: Check for missing '}' in interpolation", baseLocation);
133
- }
134
- // Extract and parse the expression
135
- const exprSource = raw.slice(exprStart, i - 1);
136
- if (!exprSource.trim()) {
137
- throw new ParseError('Empty string interpolation', baseLocation);
138
- }
139
- const interpolation = parseInterpolationExpr(exprSource, baseLocation);
140
- parts.push(interpolation);
141
- literalStart = i;
142
- }
143
- else if (raw[i] === '}' && raw[i + 1] === '}') {
144
- // Skip escaped closing brace - let unescapeBraces handle it
145
- i += 2;
146
- }
147
- else {
148
- i++;
149
- }
150
- }
151
- // Add remaining literal segment
152
- if (literalStart < raw.length) {
153
- const literal = unescapeBraces(raw.slice(literalStart));
154
- if (literal)
155
- parts.push(literal);
156
- }
157
- // If no parts, return empty string
158
- if (parts.length === 0) {
159
- parts.push('');
160
- }
161
- return parts;
162
- }
163
- /**
164
- * Replace escaped brace sequences with actual braces.
165
- * {{ → { and }} → }
166
- */
167
- function unescapeBraces(s) {
168
- return s.replaceAll('{{', '{').replaceAll('}}', '}');
169
- }
170
- /**
171
- * Parse an interpolation expression using sub-lexer/parser.
172
- */
173
- function parseInterpolationExpr(source, baseLocation) {
174
- // Tokenize the expression
175
- const tokens = tokenize(source);
176
- // Filter out newlines and comments for expression parsing
177
- const filtered = tokens.filter((t) => t.type !== TOKEN_TYPES.NEWLINE && t.type !== TOKEN_TYPES.COMMENT);
178
- if (filtered.length === 0 || filtered[0]?.type === TOKEN_TYPES.EOF) {
179
- throw new ParseError('Empty string interpolation', baseLocation);
180
- }
181
- // Parse as expression
182
- const subState = createParserState(filtered);
183
- const expression = parseExpressionFn(subState);
184
- // Verify all tokens consumed (except EOF)
185
- if (subState.tokens[subState.pos]?.type !== TOKEN_TYPES.EOF) {
186
- throw new ParseError(`Unexpected token in interpolation: ${subState.tokens[subState.pos]?.value}`, baseLocation);
187
- }
188
- return {
189
- type: 'Interpolation',
190
- expression,
191
- span: expression.span,
192
- };
193
- }
194
- // ============================================================
195
- // TUPLE & DICT PARSING
196
- // ============================================================
197
- export function parseTupleOrDict(state) {
198
- const start = current(state).span.start;
199
- expect(state, TOKEN_TYPES.LBRACKET, 'Expected [');
200
- skipNewlines(state);
201
- // Empty tuple
202
- if (check(state, TOKEN_TYPES.RBRACKET)) {
203
- advance(state);
204
- return {
205
- type: 'Tuple',
206
- elements: [],
207
- span: makeSpan(start, current(state).span.end),
208
- };
209
- }
210
- // Empty dict [:]
211
- if (check(state, TOKEN_TYPES.COLON) &&
212
- state.tokens[state.pos + 1]?.type === TOKEN_TYPES.RBRACKET) {
213
- advance(state); // :
214
- advance(state); // ]
215
- return {
216
- type: 'Dict',
217
- entries: [],
218
- span: makeSpan(start, current(state).span.end),
219
- };
220
- }
221
- // Check if dict (identifier followed by :)
222
- if (isDictStart(state)) {
223
- return parseDict(state, start);
224
- }
225
- // Tuple
226
- return parseTuple(state, start);
227
- }
228
- function parseTuple(state, start) {
229
- const elements = [];
230
- elements.push(parseExpressionFn(state));
231
- skipNewlines(state);
232
- while (check(state, TOKEN_TYPES.COMMA)) {
233
- advance(state);
234
- skipNewlines(state);
235
- if (check(state, TOKEN_TYPES.RBRACKET))
236
- break;
237
- elements.push(parseExpressionFn(state));
238
- skipNewlines(state);
239
- }
240
- expect(state, TOKEN_TYPES.RBRACKET, 'Expected ]');
241
- return {
242
- type: 'Tuple',
243
- elements,
244
- span: makeSpan(start, current(state).span.end),
245
- };
246
- }
247
- function parseDict(state, start) {
248
- const entries = [];
249
- entries.push(parseDictEntry(state));
250
- skipNewlines(state);
251
- while (check(state, TOKEN_TYPES.COMMA)) {
252
- advance(state);
253
- skipNewlines(state);
254
- if (check(state, TOKEN_TYPES.RBRACKET))
255
- break;
256
- entries.push(parseDictEntry(state));
257
- skipNewlines(state);
258
- }
259
- expect(state, TOKEN_TYPES.RBRACKET, 'Expected ]');
260
- return {
261
- type: 'Dict',
262
- entries,
263
- span: makeSpan(start, current(state).span.end),
264
- };
265
- }
266
- function parseDictEntry(state) {
267
- const start = current(state).span.start;
268
- const keyToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected key');
269
- expect(state, TOKEN_TYPES.COLON, 'Expected :');
270
- const value = parseExpressionFn(state);
271
- return {
272
- type: 'DictEntry',
273
- key: keyToken.value,
274
- value,
275
- span: makeSpan(start, current(state).span.end),
276
- };
277
- }
278
- // ============================================================
279
- // FUNCTION LITERAL PARSING
280
- // ============================================================
281
- /**
282
- * Parse closure: |params| body or || body
283
- * Params can be: |x|, |x: string|, |x: string = "default"|
284
- *
285
- * Body can be:
286
- * - Simple: |x| $x (postfix-expr)
287
- * - Grouped: |x| ($x * 2) (compound expression)
288
- * - Block: |x| { $a ↵ $b } (multiple statements)
289
- */
290
- export function parseClosure(state) {
291
- const start = current(state).span.start;
292
- // Handle || as no-param closure
293
- if (check(state, TOKEN_TYPES.OR)) {
294
- advance(state); // consume ||
295
- const body = parseBody(state);
296
- return {
297
- type: 'Closure',
298
- params: [],
299
- body,
300
- span: makeSpan(start, body.span.end),
301
- };
302
- }
303
- // Handle |params| body
304
- expect(state, TOKEN_TYPES.PIPE_BAR, 'Expected |');
305
- const params = [];
306
- if (!check(state, TOKEN_TYPES.PIPE_BAR)) {
307
- params.push(parseClosureParam(state));
308
- while (check(state, TOKEN_TYPES.COMMA)) {
309
- advance(state); // consume comma
310
- params.push(parseClosureParam(state));
311
- }
312
- }
313
- expect(state, TOKEN_TYPES.PIPE_BAR, 'Expected |');
314
- // Parse simple-body: block, grouped, or postfix-expr
315
- const body = parseBody(state);
316
- return {
317
- type: 'Closure',
318
- params,
319
- body,
320
- span: makeSpan(start, body.span.end),
321
- };
322
- }
323
- /**
324
- * Parse simple-body: block, grouped, or postfix-expr
325
- * No naked compound expressions — arithmetic/pipes/booleans must be grouped.
326
- *
327
- * Used by: closures, conditionals, loops
328
- */
329
- export function parseBody(state) {
330
- // Block: { ... }
331
- if (check(state, TOKEN_TYPES.LBRACE)) {
332
- return parseBlockFn(state);
333
- }
334
- // Grouped: ( ... ) - compound expressions go here
335
- if (check(state, TOKEN_TYPES.LPAREN)) {
336
- return parseGroupedFn(state);
337
- }
338
- // Bare break/return: these become pipe chains with implicit $ head
339
- // Examples: break, return
340
- if (check(state, TOKEN_TYPES.BREAK) || check(state, TOKEN_TYPES.RETURN)) {
341
- return parsePipeChainFn(state);
342
- }
343
- // Parse postfix-expr (compound expressions like pipes must be grouped)
344
- return parsePostfixExprFn(state);
345
- }
346
- /**
347
- * Parse function parameter: name, name: type, name = default, or name: type = default
348
- * Type can be inferred from default value when not explicitly specified.
349
- */
350
- function parseClosureParam(state) {
351
- const start = current(state).span.start;
352
- const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected parameter name');
353
- let typeName = null;
354
- let defaultValue = null;
355
- // Optional type annotation
356
- if (check(state, TOKEN_TYPES.COLON)) {
357
- advance(state);
358
- typeName = parseTypeName(state, FUNC_PARAM_TYPES);
359
- }
360
- // Optional default value (with or without type annotation)
361
- if (check(state, TOKEN_TYPES.ASSIGN)) {
362
- advance(state);
363
- defaultValue = parseLiteral(state);
364
- }
365
- return {
366
- type: 'ClosureParam',
367
- name: nameToken.value,
368
- typeName,
369
- defaultValue,
370
- span: makeSpan(start, current(state).span.end),
371
- };
372
- }
373
- //# sourceMappingURL=literals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/parser/literals.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Script Structure Parsing
3
- * Script, frontmatter, statements, and annotations
4
- */
5
- import type { AnnotatedStatementNode, ScriptNode, StatementNode } from '../types.js';
6
- import { type ParserState } from './state.js';
7
- export declare function parseScript(state: ParserState): ScriptNode;
8
- /**
9
- * Parse a statement: optionally annotated pipe chain expression.
10
- * Annotations prefix statements with ^(key: value, ...) syntax.
11
- * Termination (capture/break/return) is now part of PipeChainNode.
12
- */
13
- export declare function parseStatement(state: ParserState): StatementNode | AnnotatedStatementNode;
14
- //# sourceMappingURL=script.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/parser/script.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,sBAAsB,EAKtB,UAAU,EAEV,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,WAAW,EAQjB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAiD1D;AA6DD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,GACjB,aAAa,GAAG,sBAAsB,CAexC"}
@@ -1,196 +0,0 @@
1
- /**
2
- * Script Structure Parsing
3
- * Script, frontmatter, statements, and annotations
4
- */
5
- import { ParseError, TOKEN_TYPES } from '../types.js';
6
- import { check, advance, expect, current, isAtEnd, skipNewlines, makeSpan, } from './state.js';
7
- import { parseExpression } from './expressions.js';
8
- import { setParseStatement } from './control-flow.js';
9
- // ============================================================
10
- // SCRIPT PARSING
11
- // ============================================================
12
- export function parseScript(state) {
13
- const start = current(state).span.start;
14
- skipNewlines(state);
15
- // Optional frontmatter
16
- let frontmatter = null;
17
- if (check(state, TOKEN_TYPES.FRONTMATTER_DELIM)) {
18
- frontmatter = parseFrontmatter(state);
19
- }
20
- skipNewlines(state);
21
- // Statements
22
- const statements = [];
23
- while (!isAtEnd(state)) {
24
- skipNewlines(state);
25
- if (isAtEnd(state))
26
- break;
27
- if (state.recoveryMode) {
28
- // Recovery mode: catch errors and create ErrorNode
29
- const stmtStart = current(state).span.start;
30
- try {
31
- statements.push(parseStatement(state));
32
- }
33
- catch (err) {
34
- if (err instanceof ParseError) {
35
- state.errors.push(err);
36
- // Create ErrorNode and skip to next statement boundary
37
- const errorNode = recoverToNextStatement(state, stmtStart, err.message);
38
- statements.push(errorNode);
39
- }
40
- else {
41
- throw err; // Re-throw non-parse errors
42
- }
43
- }
44
- }
45
- else {
46
- // Normal mode: let errors propagate
47
- statements.push(parseStatement(state));
48
- }
49
- skipNewlines(state);
50
- }
51
- return {
52
- type: 'Script',
53
- frontmatter,
54
- statements,
55
- span: makeSpan(start, current(state).span.end),
56
- };
57
- }
58
- /**
59
- * Recovery helper: skip tokens until we find a likely statement boundary.
60
- * Returns an ErrorNode containing the skipped content.
61
- * @internal
62
- */
63
- function recoverToNextStatement(state, startLocation, message) {
64
- const startOffset = startLocation.offset;
65
- let endOffset = startOffset;
66
- // Skip tokens until we hit a newline or EOF (statement boundary)
67
- while (!isAtEnd(state) && !check(state, TOKEN_TYPES.NEWLINE)) {
68
- endOffset = current(state).span.end.offset;
69
- advance(state);
70
- }
71
- // Extract the skipped text from source
72
- const text = state.source.slice(startOffset, endOffset);
73
- return {
74
- type: 'Error',
75
- message,
76
- text,
77
- span: makeSpan(startLocation, current(state).span.start),
78
- };
79
- }
80
- // ============================================================
81
- // FRONTMATTER PARSING
82
- // ============================================================
83
- function parseFrontmatter(state) {
84
- const start = current(state).span.start;
85
- expect(state, TOKEN_TYPES.FRONTMATTER_DELIM, 'Expected ---');
86
- skipNewlines(state);
87
- // Collect all content until next ---
88
- let content = '';
89
- while (!check(state, TOKEN_TYPES.FRONTMATTER_DELIM) && !isAtEnd(state)) {
90
- const token = advance(state);
91
- content += token.value;
92
- }
93
- expect(state, TOKEN_TYPES.FRONTMATTER_DELIM, 'Expected closing ---');
94
- return {
95
- type: 'Frontmatter',
96
- content: content.trim(),
97
- span: makeSpan(start, current(state).span.end),
98
- };
99
- }
100
- // ============================================================
101
- // STATEMENT PARSING
102
- // ============================================================
103
- /**
104
- * Parse a statement: optionally annotated pipe chain expression.
105
- * Annotations prefix statements with ^(key: value, ...) syntax.
106
- * Termination (capture/break/return) is now part of PipeChainNode.
107
- */
108
- export function parseStatement(state) {
109
- const start = current(state).span.start;
110
- // Check for annotation prefix: ^(...)
111
- if (check(state, TOKEN_TYPES.CARET)) {
112
- return parseAnnotatedStatement(state);
113
- }
114
- const expression = parseExpression(state);
115
- return {
116
- type: 'Statement',
117
- expression,
118
- span: makeSpan(start, current(state).span.end),
119
- };
120
- }
121
- // ============================================================
122
- // ANNOTATION PARSING
123
- // ============================================================
124
- /**
125
- * Parse an annotated statement: ^(key: value, ...) statement
126
- * Annotations modify operational parameters for statements.
127
- */
128
- function parseAnnotatedStatement(state) {
129
- const start = current(state).span.start;
130
- expect(state, TOKEN_TYPES.CARET, 'Expected ^');
131
- expect(state, TOKEN_TYPES.LPAREN, 'Expected (');
132
- const annotations = parseAnnotationArgs(state);
133
- expect(state, TOKEN_TYPES.RPAREN, 'Expected )');
134
- // Parse the inner statement (which could also be annotated)
135
- const statement = parseStatement(state);
136
- // If inner is annotated, wrap it; otherwise use directly
137
- const innerStatement = statement.type === 'AnnotatedStatement'
138
- ? {
139
- type: 'Statement',
140
- expression: statement.statement.expression,
141
- span: statement.span,
142
- }
143
- : statement;
144
- return {
145
- type: 'AnnotatedStatement',
146
- annotations,
147
- statement: innerStatement,
148
- span: makeSpan(start, current(state).span.end),
149
- };
150
- }
151
- /**
152
- * Parse annotation arguments: key: value, *spread, ...
153
- */
154
- function parseAnnotationArgs(state) {
155
- const args = [];
156
- if (check(state, TOKEN_TYPES.RPAREN)) {
157
- return args; // Empty annotation list
158
- }
159
- args.push(parseAnnotationArg(state));
160
- while (check(state, TOKEN_TYPES.COMMA)) {
161
- advance(state); // consume comma
162
- if (check(state, TOKEN_TYPES.RPAREN))
163
- break; // trailing comma
164
- args.push(parseAnnotationArg(state));
165
- }
166
- return args;
167
- }
168
- /**
169
- * Parse a single annotation argument: named (key: value) or spread (*expr)
170
- */
171
- function parseAnnotationArg(state) {
172
- const start = current(state).span.start;
173
- // Spread argument: *expr
174
- if (check(state, TOKEN_TYPES.STAR)) {
175
- advance(state); // consume *
176
- const expression = parseExpression(state);
177
- return {
178
- type: 'SpreadArg',
179
- expression,
180
- span: makeSpan(start, current(state).span.end),
181
- };
182
- }
183
- // Named argument: key: value
184
- const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected annotation name');
185
- expect(state, TOKEN_TYPES.COLON, 'Expected :');
186
- const value = parseExpression(state);
187
- return {
188
- type: 'NamedArg',
189
- name: nameToken.value,
190
- value,
191
- span: makeSpan(start, current(state).span.end),
192
- };
193
- }
194
- // Wire up the circular dependency
195
- setParseStatement(parseStatement);
196
- //# sourceMappingURL=script.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/parser/script.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Variable Parsing
3
- * Variables and field access
4
- */
5
- import type { BlockNode, PipeChainNode, VariableNode } from '../types.js';
6
- import { type ParserState } from './state.js';
7
- export declare function setParseBlock(fn: (state: ParserState) => BlockNode): void;
8
- export declare function setParsePipeChain(fn: (state: ParserState) => PipeChainNode): void;
9
- export declare function parseVariable(state: ParserState): VariableNode;
10
- //# sourceMappingURL=variables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/parser/variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,SAAS,EAIT,aAAa,EAIb,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,YAAY,CAAC;AAWhF,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAEzE;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,GACxC,IAAI,CAEN;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAsB9D"}