From 2e7bf530d33445f34216e02aa19921d3d1ddd525 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Tue, 4 Nov 2025 21:51:22 -0800 Subject: allow currying ish --- src/lang/ts-lang/core/parser.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/lang/ts-lang/core') diff --git a/src/lang/ts-lang/core/parser.ts b/src/lang/ts-lang/core/parser.ts index db6f3aa..3b20743 100644 --- a/src/lang/ts-lang/core/parser.ts +++ b/src/lang/ts-lang/core/parser.ts @@ -72,6 +72,7 @@ export type ResolveNodeFromToken<_Token extends Token> = ParseNumberLiteral< ? ASTNode, []> : ASTNode; +// FIXME don't need lastToken export type _Parse = Ctx["remainingTokens"] extends [ infer Head extends Token, ...infer Tail extends readonly Token[] @@ -122,7 +123,7 @@ export type _Parse = Ctx["remainingTokens"] extends [ stack: [...Ctx["stack"], ResolveNodeFromToken]; }> : Ctx & Error<`Was not expecting ${Head["type"]}`> - : // expect nextToken to be a name or close paren + : // expect nextToken to be a name or open paren or close paren Head["type"] extends TokenType.NAME ? // lastToken = nextToken // goto start @@ -144,8 +145,15 @@ export type _Parse = Ctx["remainingTokens"] extends [ > >; }> - : Ctx & - Error<`Expected nextToken to be a name or close paren at ${Head["type"]}`> + : Head["type"] extends TokenType.OPEN_PAREN + ? // push lastToken onto stack + // goto start + _Parse<{ + lastToken: null; + remainingTokens: Tail; + stack: Ctx["stack"]; + }> + : Ctx & Error<`Was not expecting ${Head["type"]}`> : Ctx["lastToken"] extends Token ? // case where we ended with a name _Parse<{ -- cgit v1.2.3-70-g09d2