summaryrefslogtreecommitdiff
path: root/src/lang/js-lang/core
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2025-11-08 17:30:19 -0800
committerKai Stevenson <kai@kaistevenson.com>2025-11-08 17:32:01 -0800
commit8442ed67628e5d51e02b876d0f27479f9215bf0a (patch)
treee63c4afce5c29bb2e1edbf5899291508e211d1fe /src/lang/js-lang/core
parentb32604eef0cec59798cdfea53b82766819429717 (diff)
add more tests, fix issues, add support for booleans
Diffstat (limited to 'src/lang/js-lang/core')
-rw-r--r--src/lang/js-lang/core/lexer.ts7
-rw-r--r--src/lang/js-lang/core/parser.ts16
2 files changed, 21 insertions, 2 deletions
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 = <const Raw extends string>(raw: Raw): Lex<Raw> => {
+const _lex = (raw: string): Token[] => {
let _raw: string = raw;
let nameCollection = "";
const tokens: Token[] = [];
@@ -42,5 +42,8 @@ export const lex = <const Raw extends string>(raw: Raw): Lex<Raw> => {
nameCollection += head;
}
- return tokens as Lex<Raw>;
+ return tokens;
};
+
+export const lex = <const Raw extends string>(raw: Raw): Lex<Raw> =>
+ _lex(`${raw};`) as Lex<Raw>;
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,