lang: ast: use fancy index manipulation to reduce the size of ast_node_type
This commit is contained in:
@@ -107,25 +107,25 @@ token_parse_function get_token_parser(
|
||||
if (!type) {
|
||||
return NULL;
|
||||
}
|
||||
token_parse_function generic_parser = type->n_token_parsers[tok->t_type];
|
||||
token_parse_function generic_parser = type->n_token_parsers[__TOK_PARSER_INDEX(tok->t_type)];
|
||||
|
||||
if (!generic_parser) {
|
||||
generic_parser = type->n_token_parsers[IVY_TOK_NONE];
|
||||
generic_parser = type->n_token_parsers[__TOK_PARSER_FALLBACK_INDEX];
|
||||
}
|
||||
|
||||
token_parse_function better_parser = NULL;
|
||||
|
||||
switch (tok->t_type) {
|
||||
case IVY_TOK_KEYWORD:
|
||||
better_parser = type->n_keyword_parsers[tok->t_keyword];
|
||||
if (type->n_keyword_parsers[IVY_KW_NONE]) {
|
||||
generic_parser = type->n_keyword_parsers[IVY_KW_NONE];
|
||||
better_parser = type->n_keyword_parsers[__KW_PARSER_INDEX(tok->t_keyword)];
|
||||
if (type->n_keyword_parsers[__KW_PARSER_FALLBACK_INDEX]) {
|
||||
generic_parser = type->n_keyword_parsers[__KW_PARSER_FALLBACK_INDEX];
|
||||
}
|
||||
break;
|
||||
case IVY_TOK_SYMBOL:
|
||||
better_parser = type->n_symbol_parsers[tok->t_symbol];
|
||||
if (type->n_symbol_parsers[IVY_SYM_NONE]) {
|
||||
generic_parser = type->n_symbol_parsers[IVY_SYM_NONE];
|
||||
better_parser = type->n_symbol_parsers[__SYM_PARSER_INDEX(tok->t_symbol)];
|
||||
if (type->n_symbol_parsers[__SYM_PARSER_FALLBACK_INDEX]) {
|
||||
generic_parser = type->n_symbol_parsers[__SYM_PARSER_FALLBACK_INDEX];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user