From 8442ed67628e5d51e02b876d0f27479f9215bf0a Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Sat, 8 Nov 2025 17:30:19 -0800 Subject: add more tests, fix issues, add support for booleans --- src/lang/js-lang/core/lexer.ts | 7 +++++-- src/lang/js-lang/core/parser.ts | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/lang/js-lang') diff --git a/src/lang/js-lang/core/lexer.ts b/src/lang/js-lang/core/lexer.ts index 95e0e19..e47844a 100644 --- a/src/lang/js-lang/core/lexer.ts +++ b/src/lang/js-lang/core/lexer.ts @@ -6,7 +6,7 @@ const WHITESPACE_TOKENS = [ TokenType.SEMICOLON, ] as string[]; -export const lex = (raw: Raw): Lex => { +const _lex = (raw: string): Token[] => { let _raw: string = raw; let nameCollection = ""; const tokens: Token[] = []; @@ -42,5 +42,8 @@ export const lex = (raw: Raw): Lex => { nameCollection += head; } - return tokens as Lex; + return tokens; }; + +export const lex = (raw: Raw): Lex => + _lex(`${raw};`) as Lex; diff --git a/src/lang/js-lang/core/parser.ts b/src/lang/js-lang/core/parser.ts index f193d6a..9078f06 100644 --- a/src/lang/js-lang/core/parser.ts +++ b/src/lang/js-lang/core/parser.ts @@ -11,6 +11,22 @@ const resolveNodeFromToken = (token: Token): ASTNode => { children: [], }; } + if (token.name === "true") { + return { + type: NodeType.INT, + name: "", + value: true, + children: [], + }; + } + if (token.name === "false") { + return { + type: NodeType.INT, + name: "", + value: false, + children: [], + }; + } if (token.name[0] === '"' && token.name[token.name.length - 1] === '"') { return { type: NodeType.INT, -- cgit v1.2.3-70-g09d2