Procházet zdrojové kódy

[token.h] Moving logic of converting token type enum 2 str to its own function

Vinicius Teshima před 1 rokem
rodič
revize
f37d2b0df1
1 změnil soubory, kde provedl 32 přidání a 24 odebrání
  1. 32 24
      src/token.h

+ 32 - 24
src/token.h

@@ -49,6 +49,7 @@ struct token TOKEN_ILLEGAL = {{TT_ILLEGAL, "TT_ILLEGAL"}, STR_EMPTY};
 
 struct token token_create(enum token_type_enum tte, struct str lit);
 struct token_type token_type_create(enum token_type_enum tte);
+const char *token_type_enum_2_cstr(enum token_type_enum tte);
 
 #if defined(IMP) | defined(TOKEN_IMP)
 
@@ -68,39 +69,46 @@ token_type_create(enum token_type_enum tte)
 	struct token_type tt = {0};
 
 	tt.code = tte;
+	tt.name = token_type_enum_2_cstr(tte);
+
+	return tt;
+}
+
+const char *
+token_type_enum_2_cstr(enum token_type_enum tte)
+{
 	switch ( tte ) {
-	case TT_EOF:		tt.name = "TT_EOF"; break;
-	case TT_ILLEGAL:	tt.name = "TT_ILLEGAL"; break;
+	case TT_EOF:		return "TT_EOF"; break;
+	case TT_ILLEGAL:	return "TT_ILLEGAL"; break;
 
-	case TT_IDENT:		tt.name = "TT_IDENT"; break;
-	case TT_INT_LIT:	tt.name = "TT_INT_LIT"; break;
+	case TT_IDENT:		return "TT_IDENT"; break;
+	case TT_INT_LIT:	return "TT_INT_LIT"; break;
 
-	case TT_ASSIGN:		tt.name = "TT_ASSIGN"; break;
-	case TT_PLUS:		tt.name = "TT_PLUS"; break;
+	case TT_ASSIGN:		return "TT_ASSIGN"; break;
+	case TT_PLUS:		return "TT_PLUS"; break;
 
-	case TT_COMMA:		tt.name = "TT_COMMA"; break;
-	case TT_SEMICOLON:	tt.name = "TT_SEMICOLON"; break;
+	case TT_COMMA:		return "TT_COMMA"; break;
+	case TT_SEMICOLON:	return "TT_SEMICOLON"; break;
 
-	case TT_LPAREN:		tt.name = "TT_LPAREN"; break;
-	case TT_RPAREN:		tt.name = "TT_RPAREN"; break;
-	case TT_LBRACE:		tt.name = "TT_LBRACE"; break;
-	case TT_RBRACE:		tt.name = "TT_RBRACE"; break;
-	case TT_LABRACKET:	tt.name = "TT_LABRACKET"; break;
-	case TT_RABRACKET:	tt.name = "TT_RABRACKET"; break;
+	case TT_LPAREN:		return "TT_LPAREN"; break;
+	case TT_RPAREN:		return "TT_RPAREN"; break;
+	case TT_LBRACE:		return "TT_LBRACE"; break;
+	case TT_RBRACE:		return "TT_RBRACE"; break;
+	case TT_LABRACKET:	return "TT_LABRACKET"; break;
+	case TT_RABRACKET:	return "TT_RABRACKET"; break;
 
-	case TT_FUNCION:	tt.name = "TT_FUNCION"; break;
-	case TT_INCLUDE:	tt.name = "TT_INCLUDE"; break;
-	case TT_RETURN:		tt.name = "TT_RETURN"; break;
-	case TT_CONST:		tt.name = "TT_CONST"; break;
-	case TT_TYPE:		tt.name = "TT_TYPE"; break;
+	case TT_FUNCION:	return "TT_FUNCION"; break;
+	case TT_INCLUDE:	return "TT_INCLUDE"; break;
+	case TT_RETURN:		return "TT_RETURN"; break;
+	case TT_CONST:		return "TT_CONST"; break;
+	case TT_TYPE:		return "TT_TYPE"; break;
 
-	case TT_SQUOTE:		tt.name = "TT_SQUOTE"; break;
-	case TT_DQUOTE:		tt.name = "TT_DQUOTE"; break;
+	case TT_SQUOTE:		return "TT_SQUOTE"; break;
+	case TT_DQUOTE:		return "TT_DQUOTE"; break;
 
-	case TT_TOTAL:		tt.name = "TT_TOTAL"; break;
+	case TT_TOTAL:		return "TT_TOTAL"; break;
 	}
-
-	return tt;
+	return "UNKNOWN TOKEN";
 }
 
 #endif /* defined(IMP) | defined(TOKEN_IMP) */