@simahfud/pine-to-kline 0.1.1 → 0.1.2

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 (117) hide show
  1. package/dist/index.d.ts +696 -21
  2. package/dist/pine-to-kline.js +17 -14
  3. package/dist/pine-to-kline.js.map +1 -1
  4. package/dist/pine-to-kline.umd.js +1 -1
  5. package/dist/pine-to-kline.umd.js.map +1 -1
  6. package/package.json +1 -1
  7. package/dist/PineInterpreter.d.ts +0 -19
  8. package/dist/PineInterpreter.d.ts.map +0 -1
  9. package/dist/PineInterpreter.js +0 -89
  10. package/dist/PineInterpreter.js.map +0 -1
  11. package/dist/adapter/FigureMapper.d.ts +0 -8
  12. package/dist/adapter/FigureMapper.d.ts.map +0 -1
  13. package/dist/adapter/FigureMapper.js +0 -22
  14. package/dist/adapter/FigureMapper.js.map +0 -1
  15. package/dist/adapter/KlineAdapter.d.ts +0 -11
  16. package/dist/adapter/KlineAdapter.d.ts.map +0 -1
  17. package/dist/adapter/KlineAdapter.js +0 -88
  18. package/dist/adapter/KlineAdapter.js.map +0 -1
  19. package/dist/adapter/StyleMapper.d.ts +0 -10
  20. package/dist/adapter/StyleMapper.d.ts.map +0 -1
  21. package/dist/adapter/StyleMapper.js +0 -28
  22. package/dist/adapter/StyleMapper.js.map +0 -1
  23. package/dist/builtins/color/constants.d.ts +0 -7
  24. package/dist/builtins/color/constants.d.ts.map +0 -1
  25. package/dist/builtins/color/constants.js +0 -25
  26. package/dist/builtins/color/constants.js.map +0 -1
  27. package/dist/builtins/color/functions.d.ts +0 -21
  28. package/dist/builtins/color/functions.d.ts.map +0 -1
  29. package/dist/builtins/color/functions.js +0 -52
  30. package/dist/builtins/color/functions.js.map +0 -1
  31. package/dist/builtins/index.d.ts +0 -15
  32. package/dist/builtins/index.d.ts.map +0 -1
  33. package/dist/builtins/index.js +0 -32
  34. package/dist/builtins/index.js.map +0 -1
  35. package/dist/builtins/input/functions.d.ts +0 -28
  36. package/dist/builtins/input/functions.d.ts.map +0 -1
  37. package/dist/builtins/input/functions.js +0 -114
  38. package/dist/builtins/input/functions.js.map +0 -1
  39. package/dist/builtins/math/functions.d.ts +0 -9
  40. package/dist/builtins/math/functions.d.ts.map +0 -1
  41. package/dist/builtins/math/functions.js +0 -57
  42. package/dist/builtins/math/functions.js.map +0 -1
  43. package/dist/builtins/ta/crossover.d.ts +0 -18
  44. package/dist/builtins/ta/crossover.d.ts.map +0 -1
  45. package/dist/builtins/ta/crossover.js +0 -59
  46. package/dist/builtins/ta/crossover.js.map +0 -1
  47. package/dist/builtins/ta/index.d.ts +0 -12
  48. package/dist/builtins/ta/index.d.ts.map +0 -1
  49. package/dist/builtins/ta/index.js +0 -61
  50. package/dist/builtins/ta/index.js.map +0 -1
  51. package/dist/builtins/ta/momentum.d.ts +0 -22
  52. package/dist/builtins/ta/momentum.d.ts.map +0 -1
  53. package/dist/builtins/ta/momentum.js +0 -81
  54. package/dist/builtins/ta/momentum.js.map +0 -1
  55. package/dist/builtins/ta/moving-averages.d.ts +0 -24
  56. package/dist/builtins/ta/moving-averages.d.ts.map +0 -1
  57. package/dist/builtins/ta/moving-averages.js +0 -108
  58. package/dist/builtins/ta/moving-averages.js.map +0 -1
  59. package/dist/builtins/ta/utility.d.ts +0 -28
  60. package/dist/builtins/ta/utility.d.ts.map +0 -1
  61. package/dist/builtins/ta/utility.js +0 -156
  62. package/dist/builtins/ta/utility.js.map +0 -1
  63. package/dist/builtins/ta/volatility.d.ts +0 -21
  64. package/dist/builtins/ta/volatility.d.ts.map +0 -1
  65. package/dist/builtins/ta/volatility.js +0 -71
  66. package/dist/builtins/ta/volatility.js.map +0 -1
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/index.js +0 -24
  69. package/dist/index.js.map +0 -1
  70. package/dist/lexer/Lexer.d.ts +0 -40
  71. package/dist/lexer/Lexer.d.ts.map +0 -1
  72. package/dist/lexer/Lexer.js +0 -383
  73. package/dist/lexer/Lexer.js.map +0 -1
  74. package/dist/lexer/Token.d.ts +0 -16
  75. package/dist/lexer/Token.d.ts.map +0 -1
  76. package/dist/lexer/Token.js +0 -26
  77. package/dist/lexer/Token.js.map +0 -1
  78. package/dist/lexer/TokenType.d.ts +0 -74
  79. package/dist/lexer/TokenType.d.ts.map +0 -1
  80. package/dist/lexer/TokenType.js +0 -111
  81. package/dist/lexer/TokenType.js.map +0 -1
  82. package/dist/parser/Parser.d.ts +0 -55
  83. package/dist/parser/Parser.d.ts.map +0 -1
  84. package/dist/parser/Parser.js +0 -569
  85. package/dist/parser/Parser.js.map +0 -1
  86. package/dist/parser/nodes/index.d.ts +0 -215
  87. package/dist/parser/nodes/index.d.ts.map +0 -1
  88. package/dist/parser/nodes/index.js +0 -7
  89. package/dist/parser/nodes/index.js.map +0 -1
  90. package/dist/plugin/KlineChartProPlugin.d.ts +0 -43
  91. package/dist/plugin/KlineChartProPlugin.d.ts.map +0 -1
  92. package/dist/plugin/KlineChartProPlugin.js +0 -44
  93. package/dist/plugin/KlineChartProPlugin.js.map +0 -1
  94. package/dist/runtime/BarContext.d.ts +0 -23
  95. package/dist/runtime/BarContext.d.ts.map +0 -1
  96. package/dist/runtime/BarContext.js +0 -41
  97. package/dist/runtime/BarContext.js.map +0 -1
  98. package/dist/runtime/PineRuntime.d.ts +0 -51
  99. package/dist/runtime/PineRuntime.d.ts.map +0 -1
  100. package/dist/runtime/PineRuntime.js +0 -471
  101. package/dist/runtime/PineRuntime.js.map +0 -1
  102. package/dist/runtime/SeriesEmulator.d.ts +0 -21
  103. package/dist/runtime/SeriesEmulator.d.ts.map +0 -1
  104. package/dist/runtime/SeriesEmulator.js +0 -32
  105. package/dist/runtime/SeriesEmulator.js.map +0 -1
  106. package/dist/runtime/VarPersistence.d.ts +0 -20
  107. package/dist/runtime/VarPersistence.d.ts.map +0 -1
  108. package/dist/runtime/VarPersistence.js +0 -28
  109. package/dist/runtime/VarPersistence.js.map +0 -1
  110. package/dist/types.d.ts +0 -97
  111. package/dist/types.d.ts.map +0 -1
  112. package/dist/types.js +0 -6
  113. package/dist/types.js.map +0 -1
  114. package/dist/utils/errors.d.ts +0 -24
  115. package/dist/utils/errors.d.ts.map +0 -1
  116. package/dist/utils/errors.js +0 -46
  117. package/dist/utils/errors.js.map +0 -1
@@ -1,55 +0,0 @@
1
- /**
2
- * pine-to-kline — Parser
3
- * Recursive descent parser: Token[] → AST (ProgramNode)
4
- * @license Apache-2.0
5
- */
6
- import { Token } from '../lexer/Token';
7
- import type { ProgramNode } from './nodes/index';
8
- export declare class Parser {
9
- private tokens;
10
- private pos;
11
- constructor(tokens: Token[]);
12
- parse(): ProgramNode;
13
- private parseStatement;
14
- private parseIdentifierStatement;
15
- private parseIndicator;
16
- private parseVarDecl;
17
- private parseTypedDecl;
18
- private parseAssignment;
19
- private parseTupleAssign;
20
- private parseIf;
21
- private parseFor;
22
- private parseWhile;
23
- private parseSwitch;
24
- private parseReturn;
25
- private isFunctionDef;
26
- private parseFunctionDef;
27
- private parsePlotCall;
28
- private parseHlineCall;
29
- private parseExpression;
30
- private parseTernary;
31
- private parseOr;
32
- private parseAnd;
33
- private parseComparison;
34
- private parseAddition;
35
- private parseMultiplication;
36
- private parsePower;
37
- private parseUnary;
38
- private parsePostfix;
39
- private parsePrimary;
40
- private parseCallArgs;
41
- private parseBlock;
42
- private parseBlockOrExpr;
43
- private buildCalleeName;
44
- private peek;
45
- private peekAt;
46
- private previous;
47
- private isAtEnd;
48
- private advance;
49
- private check;
50
- private checkAny;
51
- private match;
52
- private expect;
53
- private skipNewlines;
54
- }
55
- //# sourceMappingURL=Parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../src/parser/Parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAGtC,OAAO,KAAK,EACV,WAAW,EAOZ,MAAM,eAAe,CAAA;AAKtB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAI;gBAEH,MAAM,EAAE,KAAK,EAAE;IAI3B,KAAK,IAAI,WAAW;IA0BpB,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,wBAAwB;IAwChC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,OAAO;IA2Bf,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;CAGrB"}
@@ -1,569 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/parser/Parser.ts"],"names":[],"mappings":"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"}