@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.
- package/README.md +16 -8
- package/dist/check/config.d.ts +20 -0
- package/dist/check/config.d.ts.map +1 -0
- package/dist/check/config.js +151 -0
- package/dist/check/config.js.map +1 -0
- package/dist/check/fixer.d.ts +39 -0
- package/dist/check/fixer.d.ts.map +1 -0
- package/dist/check/fixer.js +119 -0
- package/dist/check/fixer.js.map +1 -0
- package/dist/check/index.d.ts +10 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +21 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/rules/anti-patterns.d.ts +65 -0
- package/dist/check/rules/anti-patterns.d.ts.map +1 -0
- package/dist/check/rules/anti-patterns.js +427 -0
- package/dist/check/rules/anti-patterns.js.map +1 -0
- package/dist/check/rules/closures.d.ts +66 -0
- package/dist/check/rules/closures.d.ts.map +1 -0
- package/dist/check/rules/closures.js +373 -0
- package/dist/check/rules/closures.js.map +1 -0
- package/dist/check/rules/collections.d.ts +90 -0
- package/dist/check/rules/collections.d.ts.map +1 -0
- package/dist/check/rules/collections.js +373 -0
- package/dist/check/rules/collections.js.map +1 -0
- package/dist/check/rules/conditionals.d.ts +41 -0
- package/dist/check/rules/conditionals.d.ts.map +1 -0
- package/dist/check/rules/conditionals.js +106 -0
- package/dist/check/rules/conditionals.js.map +1 -0
- package/dist/check/rules/flow.d.ts +46 -0
- package/dist/check/rules/flow.d.ts.map +1 -0
- package/dist/check/rules/flow.js +206 -0
- package/dist/check/rules/flow.js.map +1 -0
- package/dist/check/rules/formatting.d.ts +133 -0
- package/dist/check/rules/formatting.d.ts.map +1 -0
- package/dist/check/rules/formatting.js +639 -0
- package/dist/check/rules/formatting.js.map +1 -0
- package/dist/check/rules/helpers.d.ts +26 -0
- package/dist/check/rules/helpers.d.ts.map +1 -0
- package/dist/check/rules/helpers.js +66 -0
- package/dist/check/rules/helpers.js.map +1 -0
- package/dist/check/rules/index.d.ts +21 -0
- package/dist/check/rules/index.d.ts.map +1 -0
- package/dist/check/rules/index.js +78 -0
- package/dist/check/rules/index.js.map +1 -0
- package/dist/check/rules/loops.d.ts +70 -0
- package/dist/check/rules/loops.d.ts.map +1 -0
- package/dist/check/rules/loops.js +227 -0
- package/dist/check/rules/loops.js.map +1 -0
- package/dist/check/rules/naming.d.ts +21 -0
- package/dist/check/rules/naming.d.ts.map +1 -0
- package/dist/check/rules/naming.js +167 -0
- package/dist/check/rules/naming.js.map +1 -0
- package/dist/check/rules/strings.d.ts +28 -0
- package/dist/check/rules/strings.d.ts.map +1 -0
- package/dist/check/rules/strings.js +80 -0
- package/dist/check/rules/strings.js.map +1 -0
- package/dist/check/rules/types.d.ts +41 -0
- package/dist/check/rules/types.d.ts.map +1 -0
- package/dist/check/rules/types.js +162 -0
- package/dist/check/rules/types.js.map +1 -0
- package/dist/check/types.d.ts +106 -0
- package/dist/check/types.d.ts.map +1 -0
- package/dist/check/types.js +6 -0
- package/dist/check/types.js.map +1 -0
- package/dist/check/validator.d.ts +18 -0
- package/dist/check/validator.d.ts.map +1 -0
- package/dist/check/validator.js +88 -0
- package/dist/check/validator.js.map +1 -0
- package/dist/check/visitor.d.ts +33 -0
- package/dist/check/visitor.d.ts.map +1 -0
- package/dist/check/visitor.js +243 -0
- package/dist/check/visitor.js.map +1 -0
- package/dist/cli-check.d.ts +43 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-check.js +356 -0
- package/dist/cli-check.js.map +1 -0
- package/dist/cli-eval.d.ts +15 -0
- package/dist/cli-eval.d.ts.map +1 -0
- package/dist/cli-eval.js +120 -0
- package/dist/cli-eval.js.map +1 -0
- package/dist/cli-exec.d.ts +49 -0
- package/dist/cli-exec.d.ts.map +1 -0
- package/dist/cli-exec.js +191 -0
- package/dist/cli-exec.js.map +1 -0
- package/dist/cli-module-loader.d.ts +19 -0
- package/dist/cli-module-loader.d.ts.map +1 -0
- package/dist/cli-module-loader.js +83 -0
- package/dist/cli-module-loader.js.map +1 -0
- package/dist/cli-shared.d.ts +36 -0
- package/dist/cli-shared.d.ts.map +1 -0
- package/dist/cli-shared.js +101 -0
- package/dist/cli-shared.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -11
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer/readers.d.ts +1 -1
- package/dist/lexer/readers.d.ts.map +1 -1
- package/dist/lexer/readers.js +62 -32
- package/dist/lexer/readers.js.map +1 -1
- package/dist/lexer/tokenizer.d.ts.map +1 -1
- package/dist/lexer/tokenizer.js +5 -6
- package/dist/lexer/tokenizer.js.map +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser-expr.js +23 -5
- package/dist/parser/parser-expr.js.map +1 -1
- package/dist/parser/parser-functions.d.ts +2 -2
- package/dist/parser/parser-functions.d.ts.map +1 -1
- package/dist/parser/parser-functions.js +2 -1
- package/dist/parser/parser-functions.js.map +1 -1
- package/dist/parser/parser-literals.js +2 -2
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-script.js +9 -7
- package/dist/parser/parser-script.js.map +1 -1
- package/dist/parser/parser-variables.js +4 -3
- package/dist/parser/parser-variables.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +5 -6
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js.map +1 -1
- package/dist/runtime/core/context.d.ts.map +1 -1
- package/dist/runtime/core/context.js +19 -32
- package/dist/runtime/core/context.js.map +1 -1
- package/dist/runtime/core/equals.js +1 -1
- package/dist/runtime/core/equals.js.map +1 -1
- package/dist/runtime/core/eval/evaluator.d.ts +78 -0
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.js +78 -0
- package/dist/runtime/core/eval/evaluator.js.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.js +9 -1
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +143 -2
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
- package/dist/runtime/core/types.d.ts +15 -2
- package/dist/runtime/core/types.d.ts.map +1 -1
- package/dist/runtime/core/types.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +51 -0
- package/dist/runtime/ext/extensions.d.ts.map +1 -0
- package/dist/runtime/ext/extensions.js +67 -0
- package/dist/runtime/ext/extensions.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/types.d.ts +8 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -4
- package/dist/types.js.map +1 -1
- package/docs/00_INDEX.md +1 -0
- package/docs/01_guide.md +3 -3
- package/docs/02_types.md +8 -10
- package/docs/03_variables.md +10 -0
- package/docs/04_operators.md +3 -3
- package/docs/05_control-flow.md +21 -0
- package/docs/07_collections.md +2 -0
- package/docs/10_parsing.md +9 -9
- package/docs/11_reference.md +1 -1
- package/docs/12_examples.md +36 -62
- package/docs/14_host-integration.md +116 -111
- package/docs/15_grammar.ebnf +1 -5
- package/docs/16_conventions.md +3 -4
- package/docs/17_cli-tools.md +184 -0
- package/docs/99_llm-reference.txt +46 -5
- package/package.json +13 -4
- package/dist/demo.d.ts +0 -6
- package/dist/demo.d.ts.map +0 -1
- package/dist/demo.js +0 -121
- package/dist/demo.js.map +0 -1
- package/dist/lexer.d.ts +0 -19
- package/dist/lexer.d.ts.map +0 -1
- package/dist/lexer.js +0 -344
- package/dist/lexer.js.map +0 -1
- package/dist/parser/arithmetic.d.ts +0 -16
- package/dist/parser/arithmetic.d.ts.map +0 -1
- package/dist/parser/arithmetic.js +0 -128
- package/dist/parser/arithmetic.js.map +0 -1
- package/dist/parser/boolean.d.ts +0 -15
- package/dist/parser/boolean.d.ts.map +0 -1
- package/dist/parser/boolean.js +0 -20
- package/dist/parser/boolean.js.map +0 -1
- package/dist/parser/control-flow.d.ts +0 -56
- package/dist/parser/control-flow.d.ts.map +0 -1
- package/dist/parser/control-flow.js +0 -167
- package/dist/parser/control-flow.js.map +0 -1
- package/dist/parser/expressions.d.ts +0 -23
- package/dist/parser/expressions.d.ts.map +0 -1
- package/dist/parser/expressions.js +0 -950
- package/dist/parser/expressions.js.map +0 -1
- package/dist/parser/extraction.d.ts +0 -48
- package/dist/parser/extraction.d.ts.map +0 -1
- package/dist/parser/extraction.js +0 -279
- package/dist/parser/extraction.js.map +0 -1
- package/dist/parser/functions.d.ts +0 -20
- package/dist/parser/functions.d.ts.map +0 -1
- package/dist/parser/functions.js +0 -96
- package/dist/parser/functions.js.map +0 -1
- package/dist/parser/literals.d.ts +0 -37
- package/dist/parser/literals.d.ts.map +0 -1
- package/dist/parser/literals.js +0 -373
- package/dist/parser/literals.js.map +0 -1
- package/dist/parser/script.d.ts +0 -14
- package/dist/parser/script.d.ts.map +0 -1
- package/dist/parser/script.js +0 -196
- package/dist/parser/script.js.map +0 -1
- package/dist/parser/variables.d.ts +0 -10
- package/dist/parser/variables.d.ts.map +0 -1
- package/dist/parser/variables.js +0 -215
- package/dist/parser/variables.js.map +0 -1
- package/dist/runtime/ast-equals.d.ts +0 -13
- package/dist/runtime/ast-equals.d.ts.map +0 -1
- package/dist/runtime/ast-equals.js +0 -447
- package/dist/runtime/ast-equals.js.map +0 -1
- package/dist/runtime/builtins.d.ts +0 -13
- package/dist/runtime/builtins.d.ts.map +0 -1
- package/dist/runtime/builtins.js +0 -180
- package/dist/runtime/builtins.js.map +0 -1
- package/dist/runtime/callable.d.ts +0 -88
- package/dist/runtime/callable.d.ts.map +0 -1
- package/dist/runtime/callable.js +0 -98
- package/dist/runtime/callable.js.map +0 -1
- package/dist/runtime/context.d.ts +0 -13
- package/dist/runtime/context.d.ts.map +0 -1
- package/dist/runtime/context.js +0 -73
- package/dist/runtime/context.js.map +0 -1
- package/dist/runtime/core/evaluate.d.ts +0 -42
- package/dist/runtime/core/evaluate.d.ts.map +0 -1
- package/dist/runtime/core/evaluate.debug.js +0 -1251
- package/dist/runtime/core/evaluate.js +0 -1913
- package/dist/runtime/core/evaluate.js.map +0 -1
- package/dist/runtime/evaluate.d.ts +0 -32
- package/dist/runtime/evaluate.d.ts.map +0 -1
- package/dist/runtime/evaluate.js +0 -1111
- package/dist/runtime/evaluate.js.map +0 -1
- package/dist/runtime/execute.d.ts +0 -26
- package/dist/runtime/execute.d.ts.map +0 -1
- package/dist/runtime/execute.js +0 -121
- package/dist/runtime/execute.js.map +0 -1
- package/dist/runtime/signals.d.ts +0 -19
- package/dist/runtime/signals.d.ts.map +0 -1
- package/dist/runtime/signals.js +0 -26
- package/dist/runtime/signals.js.map +0 -1
- package/dist/runtime/types.d.ts +0 -169
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/runtime/types.js +0 -50
- package/dist/runtime/types.js.map +0 -1
- package/dist/runtime/values.d.ts +0 -50
- package/dist/runtime/values.d.ts.map +0 -1
- package/dist/runtime/values.js +0 -209
- package/dist/runtime/values.js.map +0 -1
- package/dist/runtime.d.ts +0 -254
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -2014
- package/dist/runtime.js.map +0 -1
package/dist/parser/literals.js
DELETED
|
@@ -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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"}
|
package/dist/parser/script.d.ts
DELETED
|
@@ -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"}
|
package/dist/parser/script.js
DELETED
|
@@ -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"}
|