summaryrefslogtreecommitdiff
path: root/src/lang/ts-lang/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/lang/ts-lang/core')
-rw-r--r--src/lang/ts-lang/core/parser.ts8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lang/ts-lang/core/parser.ts b/src/lang/ts-lang/core/parser.ts
index db6f3aa..3a497a2 100644
--- a/src/lang/ts-lang/core/parser.ts
+++ b/src/lang/ts-lang/core/parser.ts
@@ -64,10 +64,18 @@ export type ParseNumberLiteral<T extends string> =
export type ParseStringLiteral<T extends string> =
T extends `"${infer Inner extends string}"` ? Inner : NULL_SENTINEL;
+export type ParseBooleanLiteral<T extends string> = T extends `true`
+ ? true
+ : T extends `false`
+ ? false
+ : NULL_SENTINEL;
+
export type ResolveNodeFromToken<_Token extends Token> = ParseNumberLiteral<
_Token["name"]
> extends number
? ASTNode<NodeType.INT, "", ParseNumberLiteral<_Token["name"]>, []>
+ : ParseBooleanLiteral<_Token["name"]> extends boolean
+ ? ASTNode<NodeType.INT, "", ParseBooleanLiteral<_Token["name"]>, []>
: ParseStringLiteral<_Token["name"]> extends string
? ASTNode<NodeType.INT, "", ParseStringLiteral<_Token["name"]>, []>
: ASTNode<NodeType.EXT, _Token["name"], null, []>;