G

G Programming Language
git clone http://git.omkov.net/G
Log | Tree | Refs | README | Download

AuthorJakob Wakeling <[email protected]>
Date2022-01-25 12:38:41
Commit092464359b4127320fbed1380200df5f90c3f8b9
Parent4f9f3f4b1d18755d07b7f6d655ee8c4b21e05ff9

symbol: Add a symbol kind for types

Diffstat

M src/init.c | 50 +++++++++++++++++++++++++-------------------------
M src/symbol.h | 4 +++-

2 files changed, 28 insertions, 26 deletions

diff --git a/src/init.c b/src/init.c
index cfc5067..74741f3 100644
--- a/src/init.c
+++ b/src/init.c
@@ -13,36 +13,35 @@
 
 static sym kwds[] = {
 	/* Boolean Types */
-	{ 0, 0, 0, 0, "b8",   &types[TY_B8],   { 0 }, NULL },
-	{ 0, 0, 0, 0, "b16",  &types[TY_B16],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "b32",  &types[TY_B32],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "b64",  &types[TY_B64],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "bool", &types[TY_B8],   { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "b8",   &types[TY_B8],   { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "b16",  &types[TY_B16],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "b32",  &types[TY_B32],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "b64",  &types[TY_B64],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "bool", &types[TY_B8],   { 0 }, NULL },
 
 	/* Integer Types */
-	{ 0, 0, 0, 0, "u8",   &types[TY_U8],   { 0 }, NULL },
-	{ 0, 0, 0, 0, "u16",  &types[TY_U16],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "u32",  &types[TY_U32],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "u64",  &types[TY_U64],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "u128", &types[TY_U128], { 0 }, NULL },
-	{ 0, 0, 0, 0, "uint", &types[TY_UINT], { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "u8",   &types[TY_U8],   { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "u16",  &types[TY_U16],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "u32",  &types[TY_U32],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "u64",  &types[TY_U64],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "u128", &types[TY_U128], { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "uint", &types[TY_UINT], { 0 }, NULL },
 
-	{ 0, 0, 0, 0, "s8",   &types[TY_S8],   { 0 }, NULL },
-	{ 0, 0, 0, 0, "s16",  &types[TY_S16],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "s32",  &types[TY_S32],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "s64",  &types[TY_S64],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "s128", &types[TY_S128], { 0 }, NULL },
-	{ 0, 0, 0, 0, "sint", &types[TY_SINT], { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "s8",   &types[TY_S8],   { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "s16",  &types[TY_S16],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "s32",  &types[TY_S32],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "s64",  &types[TY_S64],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "s128", &types[TY_S128], { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "sint", &types[TY_SINT], { 0 }, NULL },
 
 	/* Floating Point Types */
-	{ 0, 0, 0, 0, "f16",  &types[TY_F32],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "f32",  &types[TY_F32],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "f64",  &types[TY_F64],  { 0 }, NULL },
-	{ 0, 0, 0, 0, "f128", &types[TY_F128], { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "f16",  &types[TY_F32],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "f32",  &types[TY_F32],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "f64",  &types[TY_F64],  { 0 }, NULL },
+	{ SK_TYPE, 0, 0, 0, "f128", &types[TY_F128], { 0 }, NULL },
 
-	/* Keywords */
-	{ 0, 0, 0, 0, "proc",   NULL, { 0 }, NULL },
-	{ 0, 0, 0, 0, "return", NULL, { 0 }, NULL },
+	// { SK_NULL, 0, 0, 0, "proc",   NULL, { 0 }, NULL },
+	// { SK_NULL, 0, 0, 0, "return", NULL, { 0 }, NULL },
 
 	{ SK_NULL, 0, 0, 0, NULL, NULL, { 0 }, NULL }
 };
diff --git a/src/symbol.h b/src/symbol.h
index f6d3100..121d39b 100644
--- a/src/symbol.h
+++ b/src/symbol.h
@@ -13,7 +13,9 @@
 #include "value.h"
 
 typedef enum {
-	SK_NULL, SK_PROC,
+	SK_NULL, SK_TYPE, SK_PROC,
+	
+	SK_NASS, /* TODO replace SK_NASS with proper kind(s) */
 } sym_k;
 
 typedef struct ast_s ast;