@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rcrsr/rill",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Rill - An embeddable scripting language for orchestrating LLM workflows",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -11,6 +11,11 @@
11
11
  "import": "./dist/index.js"
12
12
  }
13
13
  },
14
+ "bin": {
15
+ "rill-exec": "./dist/cli-exec.js",
16
+ "rill-eval": "./dist/cli-eval.js",
17
+ "rill-check": "./dist/cli-check.js"
18
+ },
14
19
  "files": [
15
20
  "dist",
16
21
  "docs"
@@ -27,6 +32,7 @@
27
32
  "access": "public"
28
33
  },
29
34
  "scripts": {
35
+ "prebuild": "rm -f tsconfig.tsbuildinfo",
30
36
  "build": "tsc",
31
37
  "build:watch": "tsc --watch",
32
38
  "typecheck": "tsc --noEmit",
@@ -37,10 +43,10 @@
37
43
  "lint:fix": "eslint src/ --fix",
38
44
  "format": "prettier --write src/",
39
45
  "format:check": "prettier --check src/",
40
- "clean": "rm -rf dist",
41
- "rill": "npx tsx src/cli.ts",
46
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
47
+ "rill": "npx tsx src/cli-exec.ts",
42
48
  "test:examples": "npx tsx scripts/test-examples.ts docs/",
43
- "check": "npm run test:examples && npm run format:check && npm run lint && npm run typecheck && npm run test"
49
+ "check": "npm run test:examples && npm run format:check && npm run lint && npm run typecheck && npm run build && npm run test"
44
50
  },
45
51
  "keywords": [
46
52
  "rill",
@@ -66,5 +72,8 @@
66
72
  "prettier": "^3.8.1",
67
73
  "typescript": "^5.9.3",
68
74
  "vitest": "^4.0.17"
75
+ },
76
+ "dependencies": {
77
+ "yaml": "^2.8.2"
69
78
  }
70
79
  }
package/dist/demo.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Rill Runtime Demo
3
- * Simple test to verify parser + runtime integration
4
- */
5
- export {};
6
- //# sourceMappingURL=demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/dist/demo.js DELETED
@@ -1,121 +0,0 @@
1
- /**
2
- * Rill Runtime Demo
3
- * Simple test to verify parser + runtime integration
4
- */
5
- import { createRuntimeContext, execute, parse, } from './index.js';
6
- /** Safely stringify a RillValue */
7
- function fmt(value) {
8
- if (value === null)
9
- return 'null';
10
- if (typeof value === 'string')
11
- return value;
12
- if (typeof value === 'number' || typeof value === 'boolean') {
13
- return String(value);
14
- }
15
- return JSON.stringify(value);
16
- }
17
- const logs = [];
18
- const ctx = createRuntimeContext({
19
- variables: {
20
- name: 'World',
21
- items: ['apple', 'banana', 'cherry'],
22
- count: 3,
23
- },
24
- functions: {
25
- greet: (args) => {
26
- const name = args[0];
27
- const str = typeof name === 'string' ? name : JSON.stringify(name);
28
- return `Hello, ${str}!`;
29
- },
30
- double: (args) => (typeof args[0] === 'number' ? args[0] * 2 : 0),
31
- },
32
- callbacks: {
33
- onLog: (value) => {
34
- logs.push(fmt(value));
35
- },
36
- },
37
- });
38
- async function runDemo() {
39
- console.log('=== Rill Runtime Demo ===\n');
40
- // Test 1: Simple pipe chain with function (bare name, no parens)
41
- console.log('Test 1: Pipe chain with bare function name');
42
- const script1 = parse('"World" -> greet');
43
- const result1 = await execute(script1, ctx);
44
- console.log(` Result: ${fmt(result1.value)}\n`);
45
- // Test 2: Variable access (bare function name)
46
- console.log('Test 2: Variable access with bare function');
47
- const script2 = parse('$name -> greet');
48
- const result2 = await execute(script2, ctx);
49
- console.log(` Result: ${fmt(result2.value)}\n`);
50
- // Test 3: Function calls (log)
51
- console.log('Test 3: Function calls');
52
- logs.length = 0;
53
- const script3 = parse('"Hello" -> log');
54
- await execute(script3, ctx);
55
- console.log(` Logged: ${logs.join(', ')}\n`);
56
- // Test 4: Conditional with .empty
57
- console.log('Test 4: Conditional with .empty check');
58
- const script4 = parse(`
59
- "" -> .empty ? "was empty" ! "was not empty"
60
- `);
61
- const result4 = await execute(script4, ctx);
62
- console.log(` Result: ${fmt(result4.value)}\n`);
63
- // Test 5: Conditional - non-empty case
64
- console.log('Test 5: Conditional - non-empty case');
65
- const script5 = parse(`
66
- "hello" -> .empty ? "was empty" ! "was not empty"
67
- `);
68
- const result5 = await execute(script5, ctx);
69
- console.log(` Result: ${fmt(result5.value)}\n`);
70
- // Test 6: For loop
71
- console.log('Test 6: For loop over array');
72
- const script6 = parse(`
73
- $items -> @{
74
- $ -> log
75
- }
76
- `);
77
- logs.length = 0;
78
- await execute(script6, ctx);
79
- console.log(` Logged: ${logs.join(', ')}\n`);
80
- // Test 7: While loop (new syntax: cond @ body)
81
- console.log('Test 7: While loop');
82
- const script7 = parse(`
83
- 1 -> $x
84
- ($x < 100) @ {
85
- $x -> log
86
- $x -> double -> $x
87
- }
88
- $x
89
- `);
90
- logs.length = 0;
91
- const result7 = await execute(script7, ctx);
92
- console.log(` Logged: ${logs.join(', ')}`);
93
- console.log(` Final: ${fmt(result7.value)}\n`);
94
- // Test 8: Variable capture (bare function name)
95
- console.log('Test 8: Variable capture with bare function');
96
- const script8 = parse(`
97
- "captured value" -> $myVar
98
- $myVar -> greet
99
- `);
100
- const result8 = await execute(script8, ctx);
101
- console.log(` Result: ${fmt(result8.value)}`);
102
- console.log(` Captured vars: ${JSON.stringify(result8.variables)}\n`);
103
- // Test 9: Tuple and dict literals
104
- console.log('Test 9: Tuple and dict literals');
105
- const script9 = parse('[1, 2, 3]');
106
- const result9 = await execute(script9, ctx);
107
- console.log(` Tuple: ${fmt(result9.value)}\n`);
108
- // Test 10: String interpolation
109
- console.log('Test 10: String interpolation');
110
- const script10 = parse('"Hello, {$name}!"');
111
- const result10 = await execute(script10, ctx);
112
- console.log(` Result: ${fmt(result10.value)}\n`);
113
- // Test 11: Pipe var interpolation
114
- console.log('Test 11: Pipe var interpolation');
115
- const script11 = parse('"Hello" -> { "Greeting: {$}" }');
116
- const result11 = await execute(script11, ctx);
117
- console.log(` Result: ${fmt(result11.value)}\n`);
118
- console.log('=== All tests complete ===');
119
- }
120
- runDemo().catch(console.error);
121
- //# sourceMappingURL=demo.js.map
package/dist/demo.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
package/dist/lexer.d.ts DELETED
@@ -1,19 +0,0 @@
1
- /**
2
- * Rill Lexer
3
- * Converts source text into tokens
4
- */
5
- import type { SourceLocation, Token } from './types.js';
6
- export interface LexerState {
7
- readonly source: string;
8
- pos: number;
9
- line: number;
10
- column: number;
11
- }
12
- export declare function createLexerState(source: string): LexerState;
13
- export declare class LexerError extends Error {
14
- readonly location: SourceLocation;
15
- constructor(message: string, location: SourceLocation);
16
- }
17
- export declare function nextToken(state: LexerState): Token;
18
- export declare function tokenize(source: string): Token[];
19
- //# sourceMappingURL=lexer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAa,MAAM,YAAY,CAAC;AAOnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAO3D;AAMD,qBAAa,UAAW,SAAQ,KAAK;aAGjB,QAAQ,EAAE,cAAc;gBADxC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,cAAc;CAK3C;AA6SD,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAyElD;AAMD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAWhD"}
package/dist/lexer.js DELETED
@@ -1,344 +0,0 @@
1
- /**
2
- * Rill Lexer
3
- * Converts source text into tokens
4
- */
5
- import { TOKEN_TYPES } from './types.js';
6
- export function createLexerState(source) {
7
- return {
8
- source,
9
- pos: 0,
10
- line: 1,
11
- column: 1,
12
- };
13
- }
14
- // ============================================================
15
- // LEXER ERRORS
16
- // ============================================================
17
- export class LexerError extends Error {
18
- location;
19
- constructor(message, location) {
20
- super(`${message} at line ${location.line}, column ${location.column}`);
21
- this.location = location;
22
- this.name = 'LexerError';
23
- }
24
- }
25
- // ============================================================
26
- // HELPER FUNCTIONS
27
- // ============================================================
28
- function currentLocation(state) {
29
- return { line: state.line, column: state.column, offset: state.pos };
30
- }
31
- function peek(state, offset = 0) {
32
- return state.source[state.pos + offset] ?? '';
33
- }
34
- function peekString(state, length) {
35
- return state.source.slice(state.pos, state.pos + length);
36
- }
37
- function advance(state) {
38
- const ch = state.source[state.pos] ?? '';
39
- state.pos++;
40
- if (ch === '\n') {
41
- state.line++;
42
- state.column = 1;
43
- }
44
- else {
45
- state.column++;
46
- }
47
- return ch;
48
- }
49
- function isAtEnd(state) {
50
- return state.pos >= state.source.length;
51
- }
52
- function isDigit(ch) {
53
- return ch >= '0' && ch <= '9';
54
- }
55
- function isLetter(ch) {
56
- return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
57
- }
58
- function isIdentifierStart(ch) {
59
- return isLetter(ch) || ch === '_';
60
- }
61
- function isIdentifierChar(ch) {
62
- return isIdentifierStart(ch) || isDigit(ch);
63
- }
64
- function isWhitespace(ch) {
65
- return ch === ' ' || ch === '\t' || ch === '\r';
66
- }
67
- function makeToken(type, value, start, end) {
68
- return { type, value, span: { start, end } };
69
- }
70
- /** Advance n times and return a token */
71
- function advanceAndMakeToken(state, n, type, value, start) {
72
- for (let i = 0; i < n; i++)
73
- advance(state);
74
- return makeToken(type, value, start, currentLocation(state));
75
- }
76
- /** Two-character operator lookup table */
77
- const TWO_CHAR_OPERATORS = {
78
- '->': TOKEN_TYPES.ARROW,
79
- ':<': TOKEN_TYPES.COLON_LT,
80
- '/<': TOKEN_TYPES.SLASH_LT,
81
- '&&': TOKEN_TYPES.AND,
82
- '||': TOKEN_TYPES.OR,
83
- '==': TOKEN_TYPES.EQ,
84
- '!=': TOKEN_TYPES.NE,
85
- '<=': TOKEN_TYPES.LE,
86
- '>=': TOKEN_TYPES.GE,
87
- '@(': TOKEN_TYPES.AT_PAREN,
88
- };
89
- /** Single-character operator lookup table */
90
- const SINGLE_CHAR_OPERATORS = {
91
- '.': TOKEN_TYPES.DOT,
92
- '?': TOKEN_TYPES.QUESTION,
93
- '@': TOKEN_TYPES.AT,
94
- ':': TOKEN_TYPES.COLON,
95
- ',': TOKEN_TYPES.COMMA,
96
- '!': TOKEN_TYPES.BANG,
97
- '=': TOKEN_TYPES.ASSIGN,
98
- '<': TOKEN_TYPES.LT,
99
- '>': TOKEN_TYPES.GT,
100
- '(': TOKEN_TYPES.LPAREN,
101
- ')': TOKEN_TYPES.RPAREN,
102
- '{': TOKEN_TYPES.LBRACE,
103
- '}': TOKEN_TYPES.RBRACE,
104
- '[': TOKEN_TYPES.LBRACKET,
105
- ']': TOKEN_TYPES.RBRACKET,
106
- '|': TOKEN_TYPES.PIPE_BAR,
107
- '+': TOKEN_TYPES.PLUS,
108
- '-': TOKEN_TYPES.MINUS,
109
- '*': TOKEN_TYPES.STAR,
110
- '/': TOKEN_TYPES.SLASH,
111
- '%': TOKEN_TYPES.PERCENT,
112
- '~': TOKEN_TYPES.TILDE,
113
- };
114
- // ============================================================
115
- // TOKENIZATION
116
- // ============================================================
117
- function skipWhitespace(state) {
118
- while (!isAtEnd(state) && isWhitespace(peek(state))) {
119
- advance(state);
120
- }
121
- }
122
- function skipComment(state) {
123
- if (peek(state) === '#') {
124
- while (!isAtEnd(state) && peek(state) !== '\n') {
125
- advance(state);
126
- }
127
- }
128
- }
129
- function readString(state) {
130
- const start = currentLocation(state);
131
- advance(state); // consume opening "
132
- let value = '';
133
- while (!isAtEnd(state) && peek(state) !== '"') {
134
- if (peek(state) === '\\') {
135
- advance(state);
136
- const escaped = advance(state);
137
- switch (escaped) {
138
- case 'n':
139
- value += '\n';
140
- break;
141
- case 'r':
142
- value += '\r';
143
- break;
144
- case 't':
145
- value += '\t';
146
- break;
147
- case '\\':
148
- value += '\\';
149
- break;
150
- case '{':
151
- value += '{';
152
- break;
153
- case '"':
154
- value += '"';
155
- break;
156
- default:
157
- throw new LexerError(`Invalid escape sequence: \\${escaped}`, currentLocation(state));
158
- }
159
- }
160
- else if (peek(state) === '{') {
161
- // Interpolation: include {expr} literally, runtime handles substitution
162
- value += advance(state); // consume {
163
- let braceDepth = 1;
164
- while (!isAtEnd(state) && braceDepth > 0) {
165
- const ch = advance(state);
166
- value += ch;
167
- if (ch === '{')
168
- braceDepth++;
169
- if (ch === '}')
170
- braceDepth--;
171
- }
172
- }
173
- else if (peek(state) === '\n') {
174
- throw new LexerError('Unterminated string literal', start);
175
- }
176
- else {
177
- value += advance(state);
178
- }
179
- }
180
- if (peek(state) === '"') {
181
- advance(state); // consume closing "
182
- }
183
- return makeToken(TOKEN_TYPES.STRING, value, start, currentLocation(state));
184
- }
185
- function readHeredoc(state) {
186
- const start = currentLocation(state);
187
- advance(state); // consume first <
188
- advance(state); // consume second <
189
- // Read delimiter
190
- let delimiter = '';
191
- while (!isAtEnd(state) && isIdentifierChar(peek(state))) {
192
- delimiter += advance(state);
193
- }
194
- if (!delimiter) {
195
- throw new LexerError('Expected heredoc delimiter', currentLocation(state));
196
- }
197
- // Skip to newline
198
- while (!isAtEnd(state) && peek(state) !== '\n') {
199
- if (!isWhitespace(peek(state))) {
200
- throw new LexerError('Unexpected characters after heredoc delimiter', currentLocation(state));
201
- }
202
- advance(state);
203
- }
204
- if (peek(state) === '\n')
205
- advance(state);
206
- // Read body until delimiter appears alone on a line
207
- let body = '';
208
- while (!isAtEnd(state)) {
209
- // Check if current line starts with delimiter
210
- if (peekString(state, delimiter.length) === delimiter) {
211
- const afterDelim = peek(state, delimiter.length);
212
- if (afterDelim === '\n' || afterDelim === '' || afterDelim === '\r') {
213
- // Found end delimiter - advance past it
214
- Array.from({ length: delimiter.length }).forEach(() => advance(state));
215
- break;
216
- }
217
- }
218
- body += advance(state);
219
- }
220
- return makeToken(TOKEN_TYPES.STRING, body, start, currentLocation(state));
221
- }
222
- function readNumber(state) {
223
- const start = currentLocation(state);
224
- let value = '';
225
- while (!isAtEnd(state) && isDigit(peek(state))) {
226
- value += advance(state);
227
- }
228
- if (peek(state) === '.' && isDigit(peek(state, 1))) {
229
- value += advance(state); // consume .
230
- while (!isAtEnd(state) && isDigit(peek(state))) {
231
- value += advance(state);
232
- }
233
- }
234
- return makeToken(TOKEN_TYPES.NUMBER, value, start, currentLocation(state));
235
- }
236
- function readIdentifier(state) {
237
- const start = currentLocation(state);
238
- let value = '';
239
- while (!isAtEnd(state) && isIdentifierChar(peek(state))) {
240
- value += advance(state);
241
- }
242
- // Check for keywords
243
- let type = TOKEN_TYPES.IDENTIFIER;
244
- switch (value) {
245
- case 'true':
246
- type = TOKEN_TYPES.TRUE;
247
- break;
248
- case 'false':
249
- type = TOKEN_TYPES.FALSE;
250
- break;
251
- case 'break':
252
- type = TOKEN_TYPES.BREAK;
253
- break;
254
- case 'return':
255
- type = TOKEN_TYPES.RETURN;
256
- break;
257
- }
258
- // Check for max: (loop option)
259
- if (value === 'max' && peek(state) === ':') {
260
- advance(state);
261
- return makeToken(TOKEN_TYPES.MAX, 'max:', start, currentLocation(state));
262
- }
263
- return makeToken(type, value, start, currentLocation(state));
264
- }
265
- function readVariable(state) {
266
- const start = currentLocation(state);
267
- advance(state); // consume $
268
- // Check if followed by identifier (named variable like $foo)
269
- if (isIdentifierStart(peek(state))) {
270
- return makeToken(TOKEN_TYPES.DOLLAR, '$', start, currentLocation(state));
271
- }
272
- // Lone $ is the pipe variable (current item in iteration)
273
- return makeToken(TOKEN_TYPES.PIPE_VAR, '$', start, currentLocation(state));
274
- }
275
- export function nextToken(state) {
276
- skipWhitespace(state);
277
- skipComment(state);
278
- skipWhitespace(state);
279
- if (isAtEnd(state)) {
280
- const loc = currentLocation(state);
281
- return makeToken(TOKEN_TYPES.EOF, '', loc, loc);
282
- }
283
- const start = currentLocation(state);
284
- const ch = peek(state);
285
- // Newline
286
- if (ch === '\n') {
287
- advance(state);
288
- return makeToken(TOKEN_TYPES.NEWLINE, '\n', start, currentLocation(state));
289
- }
290
- // String
291
- if (ch === '"') {
292
- return readString(state);
293
- }
294
- // Heredoc
295
- if (ch === '<' && peek(state, 1) === '<') {
296
- return readHeredoc(state);
297
- }
298
- // Number (positive only - unary minus handled by parser)
299
- if (isDigit(ch)) {
300
- return readNumber(state);
301
- }
302
- // Identifier or keyword
303
- if (isIdentifierStart(ch)) {
304
- return readIdentifier(state);
305
- }
306
- // Variable
307
- if (ch === '$') {
308
- return readVariable(state);
309
- }
310
- // Three-character operators
311
- const threeChar = peekString(state, 3);
312
- if (threeChar === '@<>') {
313
- return advanceAndMakeToken(state, 3, TOKEN_TYPES.AT_LT_GT, '@<>', start);
314
- }
315
- if (threeChar === '---') {
316
- return advanceAndMakeToken(state, 3, TOKEN_TYPES.FRONTMATTER_DELIM, '---', start);
317
- }
318
- // Two-character operators (lookup table)
319
- const twoChar = peekString(state, 2);
320
- const twoCharType = TWO_CHAR_OPERATORS[twoChar];
321
- if (twoCharType) {
322
- return advanceAndMakeToken(state, 2, twoCharType, twoChar, start);
323
- }
324
- // Single-character operators (lookup table)
325
- const singleCharType = SINGLE_CHAR_OPERATORS[ch];
326
- if (singleCharType) {
327
- return advanceAndMakeToken(state, 1, singleCharType, ch, start);
328
- }
329
- throw new LexerError(`Unexpected character: ${ch}`, start);
330
- }
331
- // ============================================================
332
- // TOKENIZE ALL
333
- // ============================================================
334
- export function tokenize(source) {
335
- const state = createLexerState(source);
336
- const tokens = [];
337
- let token;
338
- do {
339
- token = nextToken(state);
340
- tokens.push(token);
341
- } while (token.type !== TOKEN_TYPES.EOF);
342
- return tokens;
343
- }
344
- //# sourceMappingURL=lexer.js.map
package/dist/lexer.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAazC,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO;QACL,MAAM;QACN,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IAFlB,YACE,OAAe,EACC,QAAwB;QAExC,KAAK,CAAC,GAAG,OAAO,YAAY,QAAQ,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAFxD,aAAQ,GAAR,QAAQ,CAAgB;QAGxC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,SAAS,eAAe,CAAC,KAAiB;IACxC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,IAAI,CAAC,KAAiB,EAAE,MAAM,GAAG,CAAC;IACzC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,MAAc;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB;IAChC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB;IAChC,OAAO,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,CAAC;AAED,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACnC,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAU;IAClC,OAAO,iBAAiB,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAChB,IAAe,EACf,KAAa,EACb,KAAqB,EACrB,GAAmB;IAEnB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,yCAAyC;AACzC,SAAS,mBAAmB,CAC1B,KAAiB,EACjB,CAAS,EACT,IAAe,EACf,KAAa,EACb,KAAqB;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,0CAA0C;AAC1C,MAAM,kBAAkB,GAA8B;IACpD,IAAI,EAAE,WAAW,CAAC,KAAK;IACvB,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,IAAI,EAAE,WAAW,CAAC,GAAG;IACrB,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,IAAI,EAAE,WAAW,CAAC,QAAQ;CAC3B,CAAC;AAEF,6CAA6C;AAC7C,MAAM,qBAAqB,GAA8B;IACvD,GAAG,EAAE,WAAW,CAAC,GAAG;IACpB,GAAG,EAAE,WAAW,CAAC,QAAQ;IACzB,GAAG,EAAE,WAAW,CAAC,EAAE;IACnB,GAAG,EAAE,WAAW,CAAC,KAAK;IACtB,GAAG,EAAE,WAAW,CAAC,KAAK;IACtB,GAAG,EAAE,WAAW,CAAC,IAAI;IACrB,GAAG,EAAE,WAAW,CAAC,MAAM;IACvB,GAAG,EAAE,WAAW,CAAC,EAAE;IACnB,GAAG,EAAE,WAAW,CAAC,EAAE;IACnB,GAAG,EAAE,WAAW,CAAC,MAAM;IACvB,GAAG,EAAE,WAAW,CAAC,MAAM;IACvB,GAAG,EAAE,WAAW,CAAC,MAAM;IACvB,GAAG,EAAE,WAAW,CAAC,MAAM;IACvB,GAAG,EAAE,WAAW,CAAC,QAAQ;IACzB,GAAG,EAAE,WAAW,CAAC,QAAQ;IACzB,GAAG,EAAE,WAAW,CAAC,QAAQ;IACzB,GAAG,EAAE,WAAW,CAAC,IAAI;IACrB,GAAG,EAAE,WAAW,CAAC,KAAK;IACtB,GAAG,EAAE,WAAW,CAAC,IAAI;IACrB,GAAG,EAAE,WAAW,CAAC,KAAK;IACtB,GAAG,EAAE,WAAW,CAAC,OAAO;IACxB,GAAG,EAAE,WAAW,CAAC,KAAK;CACvB,CAAC;AAEF,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D,SAAS,cAAc,CAAC,KAAiB;IACvC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;IAEpC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,GAAG;oBACN,KAAK,IAAI,IAAI,CAAC;oBACd,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,IAAI,IAAI,CAAC;oBACd,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,IAAI,IAAI,CAAC;oBACd,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,IAAI,IAAI,CAAC;oBACd,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,IAAI,GAAG,CAAC;oBACb,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,IAAI,GAAG,CAAC;oBACb,MAAM;gBACR;oBACE,MAAM,IAAI,UAAU,CAClB,8BAA8B,OAAO,EAAE,EACvC,eAAe,CAAC,KAAK,CAAC,CACvB,CAAC;YACN,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/B,wEAAwE;YACxE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;YACrC,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,IAAI,EAAE,CAAC;gBACZ,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,EAAE,CAAC;gBAC7B,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;IACtC,CAAC;IAED,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;IAClC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB;IAEnC,iBAAiB;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,4BAA4B,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,CAClB,+CAA+C,EAC/C,eAAe,CAAC,KAAK,CAAC,CACvB,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzC,oDAAoD;IACpD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,8CAA8C;QAC9C,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpE,wCAAwC;gBACxC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvE,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/C,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QACrC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,GAAc,WAAW,CAAC,UAAU,CAAC;IAC7C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YACxB,MAAM;QACR,KAAK,OAAO;YACV,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;YACzB,MAAM;QACR,KAAK,OAAO;YACV,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;YACzB,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;YAC1B,MAAM;IACV,CAAC;IAED,+BAA+B;IAC/B,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB;IACrC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;IAE5B,6DAA6D;IAC7D,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,0DAA0D;IAC1D,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtB,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvB,UAAU;IACV,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,SAAS;IACT,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU;IACV,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACzC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,wBAAwB;IACxB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW;IACX,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,mBAAmB,CACxB,KAAK,EACL,CAAC,EACD,WAAW,CAAC,iBAAiB,EAC7B,KAAK,EACL,KAAK,CACN,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,4CAA4C;IAC5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,UAAU,CAAC,yBAAyB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,KAAY,CAAC;IAEjB,GAAG,CAAC;QACF,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,GAAG,EAAE;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Arithmetic Expression Parsing
3
- * Handles | expr | arithmetic expressions
4
- */
5
- import type { ArithmeticNode } from '../types.js';
6
- import { type ParserState } from './state.js';
7
- /**
8
- * Parse arithmetic expression: | expr |
9
- * Grammar:
10
- * arith-expr = "|" additive "|"
11
- * additive = multiplicative { ("+" | "-") multiplicative }
12
- * multiplicative = factor { ("*" | "/" | "%") factor }
13
- * factor = number | variable | "(" additive ")" | "-" factor
14
- */
15
- export declare function parseArithmetic(state: ParserState): ArithmeticNode;
16
- //# sourceMappingURL=arithmetic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/parser/arithmetic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,KAAK,WAAW,EAA6C,MAAM,YAAY,CAAC;AAOzF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAYlE"}