diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2025-11-02 18:08:16 -0800 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2025-11-02 18:09:14 -0800 |
| commit | e9f3c782bc10d4c5c44faf768aa60cd6bcc66574 (patch) | |
| tree | cb4e447a5ce5deffe989a65ff774e90f0e8ad518 /src/lib/core/lexer.ts | |
| parent | f53622d63c74a1e2dd0397f4a26f31aa72dea60b (diff) | |
refactor
Diffstat (limited to 'src/lib/core/lexer.ts')
| -rw-r--r-- | src/lib/core/lexer.ts | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/lib/core/lexer.ts b/src/lib/core/lexer.ts deleted file mode 100644 index 33a408a..0000000 --- a/src/lib/core/lexer.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { LexerCtx, Token, TokenSubType, TokenType } from "./common"; - -export type BreakingToken = - | TokenType.OPEN_PAREN - | TokenType.CLOSE_PAREN - | TokenType.COMMA - | TokenType.SEMICOLON - | TokenType.SPACE; - -export type IsWhitespace<T extends string> = T extends `${TokenType.SPACE}` - ? true - : T extends `${TokenType.COMMA}` - ? true - : T extends `${TokenType.SEMICOLON}` - ? true - : false; - -export type ProcessNameCollection< - Ctx extends LexerCtx, - Tail extends string, - _Token extends Token | null -> = { - next: Tail; - nameCollection: ""; - tokens: _Token extends null - ? [ - ...Ctx["tokens"], - ...(Ctx["nameCollection"] extends "" - ? [] - : [Token<TokenType.NAME, Ctx["nameCollection"]>]) - ] - : [ - ...Ctx["tokens"], - ...(Ctx["nameCollection"] extends "" - ? [_Token] - : [Token<TokenType.NAME, Ctx["nameCollection"]>, _Token]) - ]; -}; - -export type IsOpen<T> = T extends `${TokenType.OPEN_PAREN}` ? true : false; -export type IsClose<T> = T extends `${TokenType.CLOSE_PAREN}` ? true : false; - -export type _Lex<Ctx extends LexerCtx> = - Ctx["next"] extends `${infer Head}${infer Tail}` - ? IsWhitespace<Head> extends true - ? _Lex<ProcessNameCollection<Ctx, Tail, null>> - : IsOpen<Head> extends true - ? _Lex<ProcessNameCollection<Ctx, Tail, Token<TokenType.OPEN_PAREN>>> - : IsClose<Head> extends true - ? _Lex<ProcessNameCollection<Ctx, Tail, Token<TokenType.CLOSE_PAREN>>> - : _Lex<{ - next: Tail; - nameCollection: `${Ctx["nameCollection"]}${Head}`; - tokens: Ctx["tokens"]; - }> - : Ctx["tokens"]; - -export type Lex<Raw extends string> = _Lex<{ - next: `${Raw};`; - tokens: []; - nameCollection: ""; -}>; |
