summaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-01 19:04:21 -0400
committerIan Moffett <ian@osmora.org>2025-10-01 19:04:21 -0400
commit61ba4c15aaf1ccb985f32ce9af39ecd0b146fdfa (patch)
treea66ca35963a549ef78a312250f2e6d5b9c5f48b8 /src/sys
parent3f246bba3ebb8c9df888a65ceca0ee96f597c051 (diff)
np: Add signed integer types
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys')
-rw-r--r--src/sys/include/np/lex.h8
-rw-r--r--src/sys/np/core/np_lex.c21
-rw-r--r--src/sys/np/core/np_parse.c10
3 files changed, 39 insertions, 0 deletions
diff --git a/src/sys/include/np/lex.h b/src/sys/include/np/lex.h
index a11de58..0edf262 100644
--- a/src/sys/include/np/lex.h
+++ b/src/sys/include/np/lex.h
@@ -44,6 +44,10 @@ struct np_work;
#define TOKEN_U16 "u16"
#define TOKEN_U32 "u32"
#define TOKEN_U64 "u64"
+#define TOKEN_I8 "i8"
+#define TOKEN_I16 "i16"
+#define TOKEN_I32 "i32"
+#define TOKEN_I64 "i64"
/*
* Represents the various token types that are
@@ -74,6 +78,10 @@ typedef enum {
TT_U16, /* 'u16' */
TT_U32, /* 'u32' */
TT_U64, /* 'u64' */
+ TT_I8, /* 'i8' */
+ TT_I16, /* 'i16' */
+ TT_I32, /* 'i32' */
+ TT_I64, /* 'i64' */
/* Values */
TT_NUMBER, /* <numbers> */
diff --git a/src/sys/np/core/np_lex.c b/src/sys/np/core/np_lex.c
index fffe465..b2fad3a 100644
--- a/src/sys/np/core/np_lex.c
+++ b/src/sys/np/core/np_lex.c
@@ -108,6 +108,27 @@ lex_cmp_itype(const char *tokstr, struct lex_token *res)
break;
}
break;
+ case 'i':
+ if (strcmp(tokstr, TOKEN_I8) == 0) {
+ res->token = TT_I8;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_I16) == 0) {
+ res->token = TT_I16;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_I32) == 0) {
+ res->token = TT_I32;
+ break;
+ }
+
+ if (strcmp(tokstr, TOKEN_I64) == 0) {
+ res->token = TT_I64;
+ break;
+ }
+ break;
}
}
diff --git a/src/sys/np/core/np_parse.c b/src/sys/np/core/np_parse.c
index e72fa4e..aba7198 100644
--- a/src/sys/np/core/np_parse.c
+++ b/src/sys/np/core/np_parse.c
@@ -65,6 +65,10 @@ static const char *stoktab[] = {
[TT_U16] = "<TT_U16>",
[TT_U32] = "<TT_U32>",
[TT_U64] = "<TT_U64>",
+ [TT_I8] = "<TT_I8>",
+ [TT_I16] = "<TT_I16>",
+ [TT_I32] = "<TT_I32>",
+ [TT_I64] = "<TT_I64>",
/* Values */
[TT_NUMBER] = "<TT_NUMBER>",
@@ -149,6 +153,12 @@ parse_type(struct np_work *work, struct lex_token *tok)
case TT_U16: return AST_U16;
case TT_U32: return AST_U32;
case TT_U64: return AST_U64;
+
+ /* Signed types */
+ case TT_I8: return AST_I8;
+ case TT_I16: return AST_I16;
+ case TT_I32: return AST_I32;
+ case TT_I64: return AST_I64;
}
return AST_BAD_TYPE;