diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2025-10-29 20:22:19 -0700 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2025-10-29 20:22:19 -0700 |
| commit | c20434533887618820985cbb25081255475852f2 (patch) | |
| tree | 9285eb81051be8dfba245b5a1dace38aefcba1e4 /src/lib/core/common.ts | |
| parent | 8896b33a652563d90cb211a85dd2f7213f42e5d1 (diff) | |
references
Diffstat (limited to 'src/lib/core/common.ts')
| -rw-r--r-- | src/lib/core/common.ts | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/core/common.ts b/src/lib/core/common.ts index 1283000..a17eff4 100644 --- a/src/lib/core/common.ts +++ b/src/lib/core/common.ts @@ -4,14 +4,22 @@ export enum TokenType { SPACE = " ", SEMICOLON = ";", COMMA = ",", - UNIQUE_SYMBOL = "UNIQUE_SYMBOL", + NAME = "NAME", +} + +export enum TokenSubType { + NA = "NA", + LITERAL = "LITERAL", + REFERENCE = "REFERENCE", } export type Token< Type extends TokenType = TokenType, + Subtype extends TokenSubType = TokenSubType, Name extends string = string > = { type: Type; + subType: Subtype; name: Name; }; @@ -23,23 +31,25 @@ export type LexerCtx = { export enum NodeType { ROOT = "ROOT", - LITERAL = "LITERAL", - CALL = "CALL", + INT = "INT", + EXT = "EXT", PARSER_ERROR = "PARSER_ERROR", } export type ASTNode< Type extends NodeType = NodeType, Name extends string = string, - Children extends ASTNode[] = ASTNode<NodeType, string, any>[] + Value extends any = any, + Children extends ASTNode[] = ASTNode<NodeType, string, any, any>[] > = { type: Type; name: Name; + value: Value; children: Children; }; export type ParserCtx = { remainingTokens: readonly Token[]; - lastName: string | null; + lastToken: Token | null; stack: readonly ASTNode[]; }; |
