From 458fd04ca2b89c48673dd216d34ff930bd0d065b Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 11 Mar 2026 07:49:14 -0500 Subject: [PATCH] xo-reader2 stack: expand symbol table to store typedefs + typedef utest + misc qol policy choices --- include/xo/tokenizer2/Token.hpp | 6 ++++-- include/xo/tokenizer2/tokentype.hpp | 3 +++ src/tokenizer2/Tokenizer.cpp | 2 ++ src/tokenizer2/tokentype.cpp | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/xo/tokenizer2/Token.hpp b/include/xo/tokenizer2/Token.hpp index 5f8be733..c7c43287 100644 --- a/include/xo/tokenizer2/Token.hpp +++ b/include/xo/tokenizer2/Token.hpp @@ -111,8 +111,8 @@ namespace xo { static Token comma_token() { return Token(tokentype::tk_comma); } /** token representing colon @c ":" **/ static Token colon_token() { return Token(tokentype::tk_colon); } - /** token representing double-colo @c "::" **/ - static Token doublecolon() { return Token(tokentype::tk_doublecolon); } + /** token representing double-colon @c "::" **/ + static Token doublecolon_token() { return Token(tokentype::tk_doublecolon); } /** token representing semicolon @c ";" **/ static Token semicolon_token() { return Token(tokentype::tk_semicolon); } /** token representing single-assignment @c "=" (editor bait: equal_token) **/ @@ -138,6 +138,8 @@ namespace xo { static Token type() { return Token(tokentype::tk_type); } /** token representing keyword @c def **/ static Token def_token() { return Token(tokentype::tk_def); } + /** token representing keyword @c deftype **/ + static Token deftype_token() { return Token(tokentype::tk_deftype); } /** token representing keyword @c lambda **/ static Token lambda_token() { return Token(tokentype::tk_lambda); } /** token representing keyword @c if **/ diff --git a/include/xo/tokenizer2/tokentype.hpp b/include/xo/tokenizer2/tokentype.hpp index 3f259f8d..d0290b05 100644 --- a/include/xo/tokenizer2/tokentype.hpp +++ b/include/xo/tokenizer2/tokentype.hpp @@ -146,6 +146,9 @@ namespace xo { /** keyword @c 'def' **/ tk_def, + /** keyword @c 'deftype' **/ + tk_deftype, + /** keyword @c 'lambda' **/ tk_lambda, diff --git a/src/tokenizer2/Tokenizer.cpp b/src/tokenizer2/Tokenizer.cpp index 323c2d8d..f6ac7c2f 100644 --- a/src/tokenizer2/Tokenizer.cpp +++ b/src/tokenizer2/Tokenizer.cpp @@ -591,6 +591,8 @@ namespace xo { tk_type = tokentype::tk_type; } else if (tk_text == "def") { tk_type = tokentype::tk_def; + } else if (tk_text == "deftype") { + tk_type = tokentype::tk_deftype; } else if (tk_text == "lambda") { tk_type = tokentype::tk_lambda; } else if (tk_text == "if") { diff --git a/src/tokenizer2/tokentype.cpp b/src/tokenizer2/tokentype.cpp index 0831940f..7df59eec 100644 --- a/src/tokenizer2/tokentype.cpp +++ b/src/tokenizer2/tokentype.cpp @@ -51,6 +51,7 @@ namespace xo { CASE(tk_type); CASE(tk_def); + CASE(tk_deftype); CASE(tk_lambda); CASE(tk_if); CASE(tk_then);