summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-01 18:36:21 -0400
committerIan Moffett <ian@osmora.org>2025-10-01 18:38:36 -0400
commita3ac3a7b214991e3b555145dfc1348c58bf54349 (patch)
treed8d32a7139810b75094c9043976ddc032689c1af /src
parente0f16855cb1e5f0465db13405b6524682847688c (diff)
np: lex: Add the rest of the UINT tokens
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src')
-rw-r--r--src/sys/include/np/lex.h8
-rw-r--r--src/sys/np/core/np_lex.c36
-rw-r--r--src/sys/np/core/np_parse.c3
3 files changed, 43 insertions, 4 deletions
diff --git a/src/sys/include/np/lex.h b/src/sys/include/np/lex.h
index cbbc403..a11de58 100644
--- a/src/sys/include/np/lex.h
+++ b/src/sys/include/np/lex.h
@@ -40,7 +40,10 @@ struct np_work;
#define TOKEN_END "end"
/* Types */
-#define TOKEN_U8 "u8"
+#define TOKEN_U8 "u8"
+#define TOKEN_U16 "u16"
+#define TOKEN_U32 "u32"
+#define TOKEN_U64 "u64"
/*
* Represents the various token types that are
@@ -68,6 +71,9 @@ typedef enum {
/* Types */
TT_U8, /* 'u8' */
+ TT_U16, /* 'u16' */
+ TT_U32, /* 'u32' */
+ TT_U64, /* 'u64' */
/* Values */
TT_NUMBER, /* <numbers> */
diff --git a/src/sys/np/core/np_lex.c b/src/sys/np/core/np_lex.c
index eb15a52..fffe465 100644
--- a/src/sys/np/core/np_lex.c
+++ b/src/sys/np/core/np_lex.c
@@ -81,6 +81,37 @@ lex_pop(struct np_work *work)
}
/*
+ * Compare a token with existing integer types (used internally)
+ */
+static void
+lex_cmp_itype(const char *tokstr, struct lex_token *res)
+{
+ switch (*tokstr) {
+ case 'u':
+ if (strcmp(tokstr, TOKEN_U8) == 0) {
+ res->token = TT_U8;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_U16) == 0) {
+ res->token = TT_U16;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_U32) == 0) {
+ res->token = TT_U32;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_U64) == 0) {
+ res->token = TT_U64;
+ break;
+ }
+ break;
+ }
+}
+
+/*
* Compare a token with existing tokens (used internally)
*/
static int
@@ -103,9 +134,8 @@ lex_cmptok(char *tokstr, struct lex_token *res)
}
return 0;
case 'u':
- if (strcmp(tokstr, TOKEN_U8) == 0) {
- res->token = TT_U8;
- }
+ case 'i':
+ lex_cmp_itype(tokstr, res);
return 0;
}
diff --git a/src/sys/np/core/np_parse.c b/src/sys/np/core/np_parse.c
index 63f93aa..c560294 100644
--- a/src/sys/np/core/np_parse.c
+++ b/src/sys/np/core/np_parse.c
@@ -62,6 +62,9 @@ static const char *stoktab[] = {
/* Types */
[TT_U8] = "<TT_U8>",
+ [TT_U16] = "<TT_U16>",
+ [TT_U32] = "<TT_U32>",
+ [TT_U64] = "<TT_U64>",
/* Values */
[TT_NUMBER] = "<TT_NUMBER>",