Эх сурвалжийг харах

[token.h] Criating macro for token_type_enum switch

Vinicius Teshima 1 жил өмнө
parent
commit
4242671fdb
1 өөрчлөгдсөн 24 нэмэгдсэн , 22 устгасан
  1. 24 22
      src/token.h

+ 24 - 22
src/token.h

@@ -77,38 +77,40 @@ token_type_create(enum token_type_enum tte)
 const char *
 token_type_enum_2_cstr(enum token_type_enum tte)
 {
+#define _TOKEN_CASE(it) case it: return #it; break;
 	switch ( tte ) {
-	case TT_EOF:		return "TT_EOF"; break;
-	case TT_ILLEGAL:	return "TT_ILLEGAL"; break;
+	_TOKEN_CASE(TT_EOF);
+	_TOKEN_CASE(TT_ILLEGAL);
 
-	case TT_IDENT:		return "TT_IDENT"; break;
-	case TT_INT_LIT:	return "TT_INT_LIT"; break;
+	_TOKEN_CASE(TT_IDENT);
+	_TOKEN_CASE(TT_INT_LIT);
 
-	case TT_ASSIGN:		return "TT_ASSIGN"; break;
-	case TT_PLUS:		return "TT_PLUS"; break;
+	_TOKEN_CASE(TT_ASSIGN);
+	_TOKEN_CASE(TT_PLUS);
 
-	case TT_COMMA:		return "TT_COMMA"; break;
-	case TT_SEMICOLON:	return "TT_SEMICOLON"; break;
+	_TOKEN_CASE(TT_COMMA);
+	_TOKEN_CASE(TT_SEMICOLON);
 
-	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;
+	_TOKEN_CASE(TT_LPAREN);
+	_TOKEN_CASE(TT_RPAREN);
+	_TOKEN_CASE(TT_LBRACE);
+	_TOKEN_CASE(TT_RBRACE);
+	_TOKEN_CASE(TT_LABRACKET);
+	_TOKEN_CASE(TT_RABRACKET);
 
-	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;
+	_TOKEN_CASE(TT_FUNCION);
+	_TOKEN_CASE(TT_INCLUDE);
+	_TOKEN_CASE(TT_RETURN);
+	_TOKEN_CASE(TT_CONST);
+	_TOKEN_CASE(TT_TYPE);
 
-	case TT_SQUOTE:		return "TT_SQUOTE"; break;
-	case TT_DQUOTE:		return "TT_DQUOTE"; break;
+	_TOKEN_CASE(TT_SQUOTE);
+	_TOKEN_CASE(TT_DQUOTE);
 
-	case TT_TOTAL:		return "TT_TOTAL"; break;
+	_TOKEN_CASE(TT_TOTAL);
 	}
 	return "UNKNOWN TOKEN";
+#undef _TOKEN_CASE
 }
 
 #endif /* defined(IMP) | defined(TOKEN_IMP) */