diff options
author | Ian Moffett <ian@osmora.org> | 2025-10-01 19:04:21 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-10-01 19:04:21 -0400 |
commit | 61ba4c15aaf1ccb985f32ce9af39ecd0b146fdfa (patch) | |
tree | a66ca35963a549ef78a312250f2e6d5b9c5f48b8 | |
parent | 3f246bba3ebb8c9df888a65ceca0ee96f597c051 (diff) |
np: Add signed integer types
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | src/sys/include/np/lex.h | 8 | ||||
-rw-r--r-- | src/sys/np/core/np_lex.c | 21 | ||||
-rw-r--r-- | src/sys/np/core/np_parse.c | 10 |
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; |