@simahfud/pine-to-kline 0.1.0 → 0.1.1

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 (113) hide show
  1. package/dist/PineInterpreter.d.ts +19 -0
  2. package/dist/PineInterpreter.d.ts.map +1 -0
  3. package/dist/PineInterpreter.js +89 -0
  4. package/dist/PineInterpreter.js.map +1 -0
  5. package/dist/adapter/FigureMapper.d.ts +8 -0
  6. package/dist/adapter/FigureMapper.d.ts.map +1 -0
  7. package/dist/adapter/FigureMapper.js +22 -0
  8. package/dist/adapter/FigureMapper.js.map +1 -0
  9. package/dist/adapter/KlineAdapter.d.ts +11 -0
  10. package/dist/adapter/KlineAdapter.d.ts.map +1 -0
  11. package/dist/adapter/KlineAdapter.js +88 -0
  12. package/dist/adapter/KlineAdapter.js.map +1 -0
  13. package/dist/adapter/StyleMapper.d.ts +10 -0
  14. package/dist/adapter/StyleMapper.d.ts.map +1 -0
  15. package/dist/adapter/StyleMapper.js +28 -0
  16. package/dist/adapter/StyleMapper.js.map +1 -0
  17. package/dist/builtins/color/constants.d.ts +7 -0
  18. package/dist/builtins/color/constants.d.ts.map +1 -0
  19. package/dist/builtins/color/constants.js +25 -0
  20. package/dist/builtins/color/constants.js.map +1 -0
  21. package/dist/builtins/color/functions.d.ts +21 -0
  22. package/dist/builtins/color/functions.d.ts.map +1 -0
  23. package/dist/builtins/color/functions.js +52 -0
  24. package/dist/builtins/color/functions.js.map +1 -0
  25. package/dist/builtins/index.d.ts +15 -0
  26. package/dist/builtins/index.d.ts.map +1 -0
  27. package/dist/builtins/index.js +32 -0
  28. package/dist/builtins/index.js.map +1 -0
  29. package/dist/builtins/input/functions.d.ts +28 -0
  30. package/dist/builtins/input/functions.d.ts.map +1 -0
  31. package/dist/builtins/input/functions.js +114 -0
  32. package/dist/builtins/input/functions.js.map +1 -0
  33. package/dist/builtins/math/functions.d.ts +9 -0
  34. package/dist/builtins/math/functions.d.ts.map +1 -0
  35. package/dist/builtins/math/functions.js +57 -0
  36. package/dist/builtins/math/functions.js.map +1 -0
  37. package/dist/builtins/ta/crossover.d.ts +18 -0
  38. package/dist/builtins/ta/crossover.d.ts.map +1 -0
  39. package/dist/builtins/ta/crossover.js +59 -0
  40. package/dist/builtins/ta/crossover.js.map +1 -0
  41. package/dist/builtins/ta/index.d.ts +12 -0
  42. package/dist/builtins/ta/index.d.ts.map +1 -0
  43. package/dist/builtins/ta/index.js +61 -0
  44. package/dist/builtins/ta/index.js.map +1 -0
  45. package/dist/builtins/ta/momentum.d.ts +22 -0
  46. package/dist/builtins/ta/momentum.d.ts.map +1 -0
  47. package/dist/builtins/ta/momentum.js +81 -0
  48. package/dist/builtins/ta/momentum.js.map +1 -0
  49. package/dist/builtins/ta/moving-averages.d.ts +24 -0
  50. package/dist/builtins/ta/moving-averages.d.ts.map +1 -0
  51. package/dist/builtins/ta/moving-averages.js +108 -0
  52. package/dist/builtins/ta/moving-averages.js.map +1 -0
  53. package/dist/builtins/ta/utility.d.ts +28 -0
  54. package/dist/builtins/ta/utility.d.ts.map +1 -0
  55. package/dist/builtins/ta/utility.js +156 -0
  56. package/dist/builtins/ta/utility.js.map +1 -0
  57. package/dist/builtins/ta/volatility.d.ts +21 -0
  58. package/dist/builtins/ta/volatility.d.ts.map +1 -0
  59. package/dist/builtins/ta/volatility.js +71 -0
  60. package/dist/builtins/ta/volatility.js.map +1 -0
  61. package/dist/index.d.ts +21 -695
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +24 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/lexer/Lexer.d.ts +40 -0
  66. package/dist/lexer/Lexer.d.ts.map +1 -0
  67. package/dist/lexer/Lexer.js +383 -0
  68. package/dist/lexer/Lexer.js.map +1 -0
  69. package/dist/lexer/Token.d.ts +16 -0
  70. package/dist/lexer/Token.d.ts.map +1 -0
  71. package/dist/lexer/Token.js +26 -0
  72. package/dist/lexer/Token.js.map +1 -0
  73. package/dist/lexer/TokenType.d.ts +74 -0
  74. package/dist/lexer/TokenType.d.ts.map +1 -0
  75. package/dist/lexer/TokenType.js +111 -0
  76. package/dist/lexer/TokenType.js.map +1 -0
  77. package/dist/parser/Parser.d.ts +55 -0
  78. package/dist/parser/Parser.d.ts.map +1 -0
  79. package/dist/parser/Parser.js +569 -0
  80. package/dist/parser/Parser.js.map +1 -0
  81. package/dist/parser/nodes/index.d.ts +215 -0
  82. package/dist/parser/nodes/index.d.ts.map +1 -0
  83. package/dist/parser/nodes/index.js +7 -0
  84. package/dist/parser/nodes/index.js.map +1 -0
  85. package/dist/plugin/KlineChartProPlugin.d.ts +43 -0
  86. package/dist/plugin/KlineChartProPlugin.d.ts.map +1 -0
  87. package/dist/plugin/KlineChartProPlugin.js +44 -0
  88. package/dist/plugin/KlineChartProPlugin.js.map +1 -0
  89. package/dist/runtime/BarContext.d.ts +23 -0
  90. package/dist/runtime/BarContext.d.ts.map +1 -0
  91. package/dist/runtime/BarContext.js +41 -0
  92. package/dist/runtime/BarContext.js.map +1 -0
  93. package/dist/runtime/PineRuntime.d.ts +51 -0
  94. package/dist/runtime/PineRuntime.d.ts.map +1 -0
  95. package/dist/runtime/PineRuntime.js +471 -0
  96. package/dist/runtime/PineRuntime.js.map +1 -0
  97. package/dist/runtime/SeriesEmulator.d.ts +21 -0
  98. package/dist/runtime/SeriesEmulator.d.ts.map +1 -0
  99. package/dist/runtime/SeriesEmulator.js +32 -0
  100. package/dist/runtime/SeriesEmulator.js.map +1 -0
  101. package/dist/runtime/VarPersistence.d.ts +20 -0
  102. package/dist/runtime/VarPersistence.d.ts.map +1 -0
  103. package/dist/runtime/VarPersistence.js +28 -0
  104. package/dist/runtime/VarPersistence.js.map +1 -0
  105. package/dist/types.d.ts +97 -0
  106. package/dist/types.d.ts.map +1 -0
  107. package/dist/types.js +6 -0
  108. package/dist/types.js.map +1 -0
  109. package/dist/utils/errors.d.ts +24 -0
  110. package/dist/utils/errors.d.ts.map +1 -0
  111. package/dist/utils/errors.js +46 -0
  112. package/dist/utils/errors.js.map +1 -0
  113. package/package.json +1 -1
@@ -0,0 +1,569 @@
1
+ /**
2
+ * pine-to-kline — Parser
3
+ * Recursive descent parser: Token[] → AST (ProgramNode)
4
+ * @license Apache-2.0
5
+ */
6
+ import { TokenType } from '../lexer/TokenType';
7
+ import { ParseError } from '../utils/errors';
8
+ const PLOT_FUNCTIONS = new Set(['plot', 'plotshape', 'plotarrow', 'plotbar', 'plotcandle', 'plotchar', 'bgcolor', 'fill']);
9
+ const PINE_TYPES = new Set(['int', 'float', 'bool', 'string', 'color', 'label', 'line', 'box', 'table', 'series', 'simple']);
10
+ export class Parser {
11
+ tokens;
12
+ pos = 0;
13
+ constructor(tokens) {
14
+ this.tokens = tokens;
15
+ }
16
+ parse() {
17
+ const body = [];
18
+ const annotations = [];
19
+ this.skipNewlines();
20
+ while (!this.isAtEnd()) {
21
+ this.skipNewlines();
22
+ if (this.isAtEnd())
23
+ break;
24
+ if (this.check(TokenType.COMPILER_ANNOTATION)) {
25
+ annotations.push({ type: 'Annotation', value: this.advance().value, line: this.previous().line });
26
+ this.skipNewlines();
27
+ continue;
28
+ }
29
+ const stmt = this.parseStatement();
30
+ if (stmt)
31
+ body.push(stmt);
32
+ this.skipNewlines();
33
+ }
34
+ return { type: 'Program', body, annotations };
35
+ }
36
+ // ─── Statement Parsing ──────────────────────────────────────
37
+ parseStatement() {
38
+ // var / varip declarations
39
+ if (this.check(TokenType.VAR) || this.check(TokenType.VARIP)) {
40
+ return this.parseVarDecl();
41
+ }
42
+ // if statement
43
+ if (this.check(TokenType.IF))
44
+ return this.parseIf();
45
+ // for loop
46
+ if (this.check(TokenType.FOR))
47
+ return this.parseFor();
48
+ // while loop
49
+ if (this.check(TokenType.WHILE))
50
+ return this.parseWhile();
51
+ // switch statement
52
+ if (this.check(TokenType.SWITCH))
53
+ return this.parseSwitch();
54
+ // break / continue / return
55
+ if (this.check(TokenType.BREAK)) {
56
+ this.advance();
57
+ return { type: 'Break', line: this.previous().line };
58
+ }
59
+ if (this.check(TokenType.CONTINUE)) {
60
+ this.advance();
61
+ return { type: 'Continue', line: this.previous().line };
62
+ }
63
+ if (this.check(TokenType.RETURN))
64
+ return this.parseReturn();
65
+ // Try identifier-led statements
66
+ if (this.check(TokenType.IDENTIFIER)) {
67
+ return this.parseIdentifierStatement();
68
+ }
69
+ // Tuple destructuring: [a, b, c] = expr
70
+ if (this.check(TokenType.LBRACKET)) {
71
+ return this.parseTupleAssign();
72
+ }
73
+ // Expression statement (fallback)
74
+ const expr = this.parseExpression();
75
+ return { type: 'ExpressionStatement', expression: expr, line: expr.line };
76
+ }
77
+ parseIdentifierStatement() {
78
+ const id = this.peek();
79
+ // Check for: indicator("name", ...) / strategy / library
80
+ if (id.value === 'indicator' || id.value === 'strategy' || id.value === 'library') {
81
+ if (this.peekAt(1)?.type === TokenType.LPAREN) {
82
+ return this.parseIndicator();
83
+ }
84
+ }
85
+ // Check for plot/hline calls
86
+ if (PLOT_FUNCTIONS.has(id.value) && this.peekAt(1)?.type === TokenType.LPAREN) {
87
+ return this.parsePlotCall();
88
+ }
89
+ if (id.value === 'hline' && this.peekAt(1)?.type === TokenType.LPAREN) {
90
+ return this.parseHlineCall();
91
+ }
92
+ // Check for function definition: name(params) =>
93
+ if (this.peekAt(1)?.type === TokenType.LPAREN && this.isFunctionDef()) {
94
+ return this.parseFunctionDef();
95
+ }
96
+ // Check for type annotation: float x = ...
97
+ if (PINE_TYPES.has(id.value) && this.peekAt(1)?.type === TokenType.IDENTIFIER) {
98
+ return this.parseTypedDecl();
99
+ }
100
+ // Check for assignment: x = expr, x := expr, x += expr
101
+ if (this.peekAt(1)?.isAny(TokenType.ASSIGN, TokenType.REASSIGN, TokenType.PLUS_ASSIGN, TokenType.MINUS_ASSIGN, TokenType.STAR_ASSIGN, TokenType.SLASH_ASSIGN, TokenType.PERCENT_ASSIGN)) {
102
+ return this.parseAssignment();
103
+ }
104
+ // Expression statement
105
+ const expr = this.parseExpression();
106
+ return { type: 'ExpressionStatement', expression: expr, line: expr.line };
107
+ }
108
+ // ─── Indicator / Strategy ───────────────────────────────────
109
+ parseIndicator() {
110
+ const tok = this.advance(); // indicator/strategy/library
111
+ this.expect(TokenType.LPAREN);
112
+ const args = this.parseCallArgs();
113
+ this.expect(TokenType.RPAREN);
114
+ const nameArg = args.positional[0];
115
+ return {
116
+ type: 'Indicator',
117
+ name: nameArg ?? { type: 'StringLiteral', value: 'Untitled', line: tok.line },
118
+ args: args.named,
119
+ line: tok.line
120
+ };
121
+ }
122
+ // ─── Variable Declarations ─────────────────────────────────
123
+ parseVarDecl() {
124
+ const persistent = this.check(TokenType.VAR);
125
+ const persistentTick = this.check(TokenType.VARIP);
126
+ this.advance(); // var or varip
127
+ let typeAnnotation = null;
128
+ if (this.check(TokenType.IDENTIFIER) && PINE_TYPES.has(this.peek().value)) {
129
+ typeAnnotation = this.advance().value;
130
+ }
131
+ const name = this.expect(TokenType.IDENTIFIER).value;
132
+ this.expect(TokenType.ASSIGN);
133
+ const value = this.parseExpression();
134
+ return { type: 'VarDecl', persistent, persistentTick, name, typeAnnotation, value, line: value.line };
135
+ }
136
+ parseTypedDecl() {
137
+ const typeAnnotation = this.advance().value;
138
+ const name = this.expect(TokenType.IDENTIFIER).value;
139
+ this.expect(TokenType.ASSIGN);
140
+ const value = this.parseExpression();
141
+ return { type: 'VarDecl', persistent: false, persistentTick: false, name, typeAnnotation, value, line: value.line };
142
+ }
143
+ parseAssignment() {
144
+ const target = this.advance().value;
145
+ const op = this.advance();
146
+ const value = this.parseExpression();
147
+ return { type: 'Assign', target, operator: op.value, value, line: op.line };
148
+ }
149
+ parseTupleAssign() {
150
+ this.expect(TokenType.LBRACKET);
151
+ const names = [];
152
+ names.push(this.expect(TokenType.IDENTIFIER).value);
153
+ while (this.match(TokenType.COMMA)) {
154
+ names.push(this.expect(TokenType.IDENTIFIER).value);
155
+ }
156
+ this.expect(TokenType.RBRACKET);
157
+ this.expect(TokenType.ASSIGN);
158
+ const value = this.parseExpression();
159
+ return { type: 'VarDecl', persistent: false, persistentTick: false, name: names, typeAnnotation: null, value, line: value.line };
160
+ }
161
+ // ─── Control Flow ──────────────────────────────────────────
162
+ parseIf() {
163
+ const line = this.advance().line; // if
164
+ const condition = this.parseExpression();
165
+ this.skipNewlines();
166
+ const body = this.parseBlock();
167
+ const elseIf = [];
168
+ let elseBody = null;
169
+ while (this.check(TokenType.ELSE)) {
170
+ this.advance(); // else
171
+ if (this.check(TokenType.IF)) {
172
+ this.advance(); // if
173
+ const cond = this.parseExpression();
174
+ this.skipNewlines();
175
+ const b = this.parseBlock();
176
+ elseIf.push({ condition: cond, body: b });
177
+ }
178
+ else {
179
+ this.skipNewlines();
180
+ elseBody = this.parseBlock();
181
+ break;
182
+ }
183
+ }
184
+ return { type: 'If', condition, body, elseIf, elseBody, line };
185
+ }
186
+ parseFor() {
187
+ const line = this.advance().line; // for
188
+ const variable = this.expect(TokenType.IDENTIFIER).value;
189
+ if (this.check(TokenType.IN)) {
190
+ this.advance();
191
+ const iterable = this.parseExpression();
192
+ this.skipNewlines();
193
+ const body = this.parseBlock();
194
+ return { type: 'ForIn', variable, iterable, body, line };
195
+ }
196
+ this.expect(TokenType.ASSIGN);
197
+ const start = this.parseExpression();
198
+ this.expect(TokenType.TO);
199
+ const end = this.parseExpression();
200
+ let step = null;
201
+ if (this.check(TokenType.BY)) {
202
+ this.advance();
203
+ step = this.parseExpression();
204
+ }
205
+ this.skipNewlines();
206
+ const body = this.parseBlock();
207
+ return { type: 'For', variable, start, end, step, body, line };
208
+ }
209
+ parseWhile() {
210
+ const line = this.advance().line;
211
+ const condition = this.parseExpression();
212
+ this.skipNewlines();
213
+ const body = this.parseBlock();
214
+ return { type: 'While', condition, body, line };
215
+ }
216
+ parseSwitch() {
217
+ const line = this.advance().line;
218
+ let expression = null;
219
+ if (!this.check(TokenType.NEWLINE) && !this.check(TokenType.INDENT)) {
220
+ expression = this.parseExpression();
221
+ }
222
+ this.skipNewlines();
223
+ const cases = [];
224
+ let defaultBody = null;
225
+ if (this.match(TokenType.INDENT)) {
226
+ while (!this.check(TokenType.DEDENT) && !this.isAtEnd()) {
227
+ this.skipNewlines();
228
+ if (this.check(TokenType.DEDENT))
229
+ break;
230
+ if (this.check(TokenType.ARROW)) {
231
+ this.advance();
232
+ this.skipNewlines();
233
+ defaultBody = this.parseBlock();
234
+ }
235
+ else {
236
+ const cond = this.parseExpression();
237
+ this.expect(TokenType.ARROW);
238
+ this.skipNewlines();
239
+ const body = this.parseBlockOrExpr();
240
+ cases.push({ condition: cond, body });
241
+ }
242
+ this.skipNewlines();
243
+ }
244
+ if (this.check(TokenType.DEDENT))
245
+ this.advance();
246
+ }
247
+ return { type: 'Switch', expression, cases, defaultBody, line };
248
+ }
249
+ parseReturn() {
250
+ const line = this.advance().line;
251
+ let value = null;
252
+ if (!this.check(TokenType.NEWLINE) && !this.check(TokenType.DEDENT) && !this.isAtEnd()) {
253
+ value = this.parseExpression();
254
+ }
255
+ return { type: 'Return', value, line };
256
+ }
257
+ // ─── Function Definition ───────────────────────────────────
258
+ isFunctionDef() {
259
+ let depth = 0;
260
+ let i = this.pos + 1;
261
+ while (i < this.tokens.length) {
262
+ if (this.tokens[i].type === TokenType.LPAREN)
263
+ depth++;
264
+ if (this.tokens[i].type === TokenType.RPAREN) {
265
+ depth--;
266
+ if (depth === 0) {
267
+ return this.tokens[i + 1]?.type === TokenType.ARROW;
268
+ }
269
+ }
270
+ if (this.tokens[i].type === TokenType.NEWLINE || this.tokens[i].type === TokenType.EOF)
271
+ return false;
272
+ i++;
273
+ }
274
+ return false;
275
+ }
276
+ parseFunctionDef() {
277
+ const name = this.advance().value;
278
+ this.expect(TokenType.LPAREN);
279
+ const params = [];
280
+ if (!this.check(TokenType.RPAREN)) {
281
+ do {
282
+ const pName = this.expect(TokenType.IDENTIFIER).value;
283
+ let defaultValue = null;
284
+ if (this.match(TokenType.ASSIGN)) {
285
+ defaultValue = this.parseExpression();
286
+ }
287
+ params.push({ name: pName, defaultValue });
288
+ } while (this.match(TokenType.COMMA));
289
+ }
290
+ this.expect(TokenType.RPAREN);
291
+ this.expect(TokenType.ARROW);
292
+ this.skipNewlines();
293
+ const body = this.parseBlock();
294
+ return { type: 'FunctionDef', name, params, body, line: this.previous().line };
295
+ }
296
+ // ─── Plot / Hline ──────────────────────────────────────────
297
+ parsePlotCall() {
298
+ const fn = this.advance().value;
299
+ this.expect(TokenType.LPAREN);
300
+ const { positional, named } = this.parseCallArgs();
301
+ this.expect(TokenType.RPAREN);
302
+ return { type: 'PlotCall', function: fn, args: positional, kwargs: named, line: this.previous().line };
303
+ }
304
+ parseHlineCall() {
305
+ this.advance(); // hline
306
+ this.expect(TokenType.LPAREN);
307
+ const { positional, named } = this.parseCallArgs();
308
+ this.expect(TokenType.RPAREN);
309
+ return { type: 'HlineCall', price: positional[0], args: positional.slice(1), kwargs: named, line: this.previous().line };
310
+ }
311
+ // ─── Expressions (Precedence Climbing) ─────────────────────
312
+ parseExpression() {
313
+ return this.parseTernary();
314
+ }
315
+ parseTernary() {
316
+ let expr = this.parseOr();
317
+ if (this.match(TokenType.QUESTION)) {
318
+ const consequent = this.parseExpression();
319
+ this.expect(TokenType.COLON);
320
+ const alternate = this.parseExpression();
321
+ expr = { type: 'TernaryExpr', condition: expr, consequent, alternate, line: expr.line };
322
+ }
323
+ return expr;
324
+ }
325
+ parseOr() {
326
+ let left = this.parseAnd();
327
+ while (this.match(TokenType.OR)) {
328
+ const right = this.parseAnd();
329
+ left = { type: 'BinaryExpr', operator: 'or', left, right, line: left.line };
330
+ }
331
+ return left;
332
+ }
333
+ parseAnd() {
334
+ let left = this.parseComparison();
335
+ while (this.match(TokenType.AND)) {
336
+ const right = this.parseComparison();
337
+ left = { type: 'BinaryExpr', operator: 'and', left, right, line: left.line };
338
+ }
339
+ return left;
340
+ }
341
+ parseComparison() {
342
+ let left = this.parseAddition();
343
+ while (this.checkAny(TokenType.EQ, TokenType.NEQ, TokenType.LT, TokenType.GT, TokenType.LTE, TokenType.GTE)) {
344
+ const op = this.advance().value;
345
+ const right = this.parseAddition();
346
+ left = { type: 'BinaryExpr', operator: op, left, right, line: left.line };
347
+ }
348
+ return left;
349
+ }
350
+ parseAddition() {
351
+ let left = this.parseMultiplication();
352
+ while (this.checkAny(TokenType.PLUS, TokenType.MINUS)) {
353
+ const op = this.advance().value;
354
+ const right = this.parseMultiplication();
355
+ left = { type: 'BinaryExpr', operator: op, left, right, line: left.line };
356
+ }
357
+ return left;
358
+ }
359
+ parseMultiplication() {
360
+ let left = this.parsePower();
361
+ while (this.checkAny(TokenType.STAR, TokenType.SLASH, TokenType.PERCENT)) {
362
+ const op = this.advance().value;
363
+ const right = this.parsePower();
364
+ left = { type: 'BinaryExpr', operator: op, left, right, line: left.line };
365
+ }
366
+ return left;
367
+ }
368
+ parsePower() {
369
+ let left = this.parseUnary();
370
+ if (this.match(TokenType.POWER)) {
371
+ const right = this.parseUnary();
372
+ left = { type: 'BinaryExpr', operator: '**', left, right, line: left.line };
373
+ }
374
+ return left;
375
+ }
376
+ parseUnary() {
377
+ if (this.match(TokenType.MINUS)) {
378
+ const operand = this.parseUnary();
379
+ return { type: 'UnaryExpr', operator: '-', operand, line: operand.line };
380
+ }
381
+ if (this.match(TokenType.NOT)) {
382
+ const operand = this.parseUnary();
383
+ return { type: 'UnaryExpr', operator: 'not', operand, line: operand.line };
384
+ }
385
+ return this.parsePostfix();
386
+ }
387
+ parsePostfix() {
388
+ let expr = this.parsePrimary();
389
+ while (true) {
390
+ // Series access: expr[n]
391
+ if (this.match(TokenType.LBRACKET)) {
392
+ const offset = this.parseExpression();
393
+ this.expect(TokenType.RBRACKET);
394
+ expr = { type: 'SeriesAccess', series: expr, offset, line: expr.line };
395
+ }
396
+ // Member access: expr.member
397
+ else if (this.match(TokenType.DOT)) {
398
+ const prop = this.expect(TokenType.IDENTIFIER).value;
399
+ // Check if this is a method/function call: obj.method(args)
400
+ if (this.check(TokenType.LPAREN)) {
401
+ const callee = this.buildCalleeName(expr) + '.' + prop;
402
+ this.advance(); // (
403
+ const { positional, named } = this.parseCallArgs();
404
+ this.expect(TokenType.RPAREN);
405
+ expr = { type: 'FunctionCall', callee, args: positional, kwargs: named, line: expr.line };
406
+ }
407
+ else {
408
+ expr = { type: 'MemberExpr', object: expr, property: prop, line: expr.line };
409
+ }
410
+ }
411
+ // Function call: expr(args)
412
+ else if (this.check(TokenType.LPAREN) && expr.type === 'Identifier') {
413
+ const callee = expr.name;
414
+ this.advance(); // (
415
+ const { positional, named } = this.parseCallArgs();
416
+ this.expect(TokenType.RPAREN);
417
+ expr = { type: 'FunctionCall', callee, args: positional, kwargs: named, line: expr.line };
418
+ }
419
+ else
420
+ break;
421
+ }
422
+ return expr;
423
+ }
424
+ parsePrimary() {
425
+ const tok = this.peek();
426
+ // Number
427
+ if (this.check(TokenType.NUMBER)) {
428
+ this.advance();
429
+ return { type: 'NumberLiteral', value: parseFloat(tok.value), line: tok.line };
430
+ }
431
+ // String
432
+ if (this.check(TokenType.STRING)) {
433
+ this.advance();
434
+ return { type: 'StringLiteral', value: tok.value, line: tok.line };
435
+ }
436
+ // Bool
437
+ if (this.check(TokenType.TRUE)) {
438
+ this.advance();
439
+ return { type: 'BoolLiteral', value: true, line: tok.line };
440
+ }
441
+ if (this.check(TokenType.FALSE)) {
442
+ this.advance();
443
+ return { type: 'BoolLiteral', value: false, line: tok.line };
444
+ }
445
+ // na
446
+ if (this.check(TokenType.NA)) {
447
+ this.advance();
448
+ return { type: 'NaLiteral', line: tok.line };
449
+ }
450
+ // Color literal
451
+ if (this.check(TokenType.COLOR_LITERAL)) {
452
+ this.advance();
453
+ return { type: 'ColorLiteral', value: tok.value, line: tok.line };
454
+ }
455
+ // Parenthesized expression
456
+ if (this.match(TokenType.LPAREN)) {
457
+ const expr = this.parseExpression();
458
+ this.expect(TokenType.RPAREN);
459
+ return expr;
460
+ }
461
+ // Identifier
462
+ if (this.check(TokenType.IDENTIFIER)) {
463
+ this.advance();
464
+ return { type: 'Identifier', name: tok.value, line: tok.line };
465
+ }
466
+ // If expression (Pine allows if as expression)
467
+ if (this.check(TokenType.IF)) {
468
+ const ifNode = this.parseIf();
469
+ // Wrap as expression — the runtime will handle value extraction
470
+ return { type: 'Identifier', name: '__if_expr__', line: ifNode.line, _ifNode: ifNode };
471
+ }
472
+ throw new ParseError(`Unexpected token: ${tok.type} (${tok.value})`, tok.line, tok.column);
473
+ }
474
+ // ─── Call Arguments ────────────────────────────────────────
475
+ parseCallArgs() {
476
+ const positional = [];
477
+ const named = [];
478
+ if (this.check(TokenType.RPAREN))
479
+ return { positional, named };
480
+ do {
481
+ this.skipNewlines();
482
+ if (this.check(TokenType.RPAREN))
483
+ break;
484
+ // Check for named argument: key=value
485
+ if (this.check(TokenType.IDENTIFIER) && this.peekAt(1)?.type === TokenType.ASSIGN) {
486
+ const key = this.advance().value;
487
+ this.advance(); // =
488
+ const value = this.parseExpression();
489
+ named.push({ key, value });
490
+ }
491
+ else {
492
+ positional.push(this.parseExpression());
493
+ }
494
+ this.skipNewlines();
495
+ } while (this.match(TokenType.COMMA));
496
+ return { positional, named };
497
+ }
498
+ // ─── Block Parsing ─────────────────────────────────────────
499
+ parseBlock() {
500
+ const stmts = [];
501
+ if (this.match(TokenType.INDENT)) {
502
+ while (!this.check(TokenType.DEDENT) && !this.isAtEnd()) {
503
+ this.skipNewlines();
504
+ if (this.check(TokenType.DEDENT))
505
+ break;
506
+ const stmt = this.parseStatement();
507
+ if (stmt)
508
+ stmts.push(stmt);
509
+ this.skipNewlines();
510
+ }
511
+ if (this.check(TokenType.DEDENT))
512
+ this.advance();
513
+ }
514
+ else {
515
+ // Single-line block
516
+ const stmt = this.parseStatement();
517
+ if (stmt)
518
+ stmts.push(stmt);
519
+ }
520
+ return stmts;
521
+ }
522
+ parseBlockOrExpr() {
523
+ if (this.check(TokenType.INDENT))
524
+ return this.parseBlock();
525
+ const expr = this.parseExpression();
526
+ return [{ type: 'ExpressionStatement', expression: expr, line: expr.line }];
527
+ }
528
+ // ─── Helpers ───────────────────────────────────────────────
529
+ buildCalleeName(expr) {
530
+ if (expr.type === 'Identifier')
531
+ return expr.name;
532
+ if (expr.type === 'MemberExpr')
533
+ return this.buildCalleeName(expr.object) + '.' + expr.property;
534
+ return '__unknown__';
535
+ }
536
+ peek() { return this.tokens[this.pos]; }
537
+ peekAt(offset) { return this.tokens[this.pos + offset]; }
538
+ previous() { return this.tokens[this.pos - 1]; }
539
+ isAtEnd() { return this.pos >= this.tokens.length || this.tokens[this.pos].type === TokenType.EOF; }
540
+ advance() {
541
+ if (!this.isAtEnd())
542
+ this.pos++;
543
+ return this.previous();
544
+ }
545
+ check(type) {
546
+ return !this.isAtEnd() && this.peek().type === type;
547
+ }
548
+ checkAny(...types) {
549
+ return !this.isAtEnd() && types.includes(this.peek().type);
550
+ }
551
+ match(type) {
552
+ if (this.check(type)) {
553
+ this.advance();
554
+ return true;
555
+ }
556
+ return false;
557
+ }
558
+ expect(type) {
559
+ if (this.check(type))
560
+ return this.advance();
561
+ const tok = this.peek();
562
+ throw new ParseError(`Expected ${type} but got ${tok?.type} (${tok?.value})`, tok?.line, tok?.column);
563
+ }
564
+ skipNewlines() {
565
+ while (this.check(TokenType.NEWLINE))
566
+ this.advance();
567
+ }
568
+ }
569
+ //# sourceMappingURL=Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/parser/Parser.ts"],"names":[],"mappings":"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"}