@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
|
@@ -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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"}
|
package/dist/parser/boolean.d.ts
DELETED
|
@@ -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"}
|
package/dist/parser/boolean.js
DELETED
|
@@ -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"}
|