From c20434533887618820985cbb25081255475852f2 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Wed, 29 Oct 2025 20:22:19 -0700 Subject: references --- src/lib/core/lexer.ts | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'src/lib/core/lexer.ts') diff --git a/src/lib/core/lexer.ts b/src/lib/core/lexer.ts index 3315fb2..e9756bd 100644 --- a/src/lib/core/lexer.ts +++ b/src/lib/core/lexer.ts @@ -1,4 +1,4 @@ -import { LexerCtx, Token, TokenType } from "./common"; +import { LexerCtx, Token, TokenSubType, TokenType } from "./common"; export type BreakingToken = | TokenType.OPEN_PAREN @@ -16,7 +16,7 @@ export type IsWhitespace = T extends `${TokenType.SPACE}` : false; export type ProcessNameCollection< - Cur extends LexerCtx, + Ctx extends LexerCtx, Tail extends string, _Token extends Token | null > = { @@ -24,16 +24,29 @@ export type ProcessNameCollection< nameCollection: ""; tokens: _Token extends null ? [ - ...Cur["tokens"], - ...(Cur["nameCollection"] extends "" + ...Ctx["tokens"], + ...(Ctx["nameCollection"] extends "" ? [] - : [Token]) + : [ + Token< + TokenType.NAME, + TokenSubType.REFERENCE, + Ctx["nameCollection"] + > + ]) ] : [ - ...Cur["tokens"], - ...(Cur["nameCollection"] extends "" + ...Ctx["tokens"], + ...(Ctx["nameCollection"] extends "" ? [_Token] - : [Token, _Token]) + : [ + Token< + TokenType.NAME, + TokenSubType.REFERENCE, + Ctx["nameCollection"] + >, + _Token + ]) ]; }; @@ -53,9 +66,7 @@ export type _Lex = nameCollection: `${Ctx["nameCollection"]}${Head}`; tokens: Ctx["tokens"]; }> - : // : Ctx["next"] extends `${infer Head}` - // ? _Lex<{ next: Head; tokens: Ctx["tokens"] }> - Ctx["tokens"]; + : Ctx["tokens"]; export type Lex = _Lex<{ next: `${Raw};`; -- cgit v1.2.3-70-g09d2