Replace NodeType enum with SymbolMetadata bitfield

This will allow storing other metadata about symbols, like if they
only appear as ubiquitous tokens
This commit is contained in:
Max Brunsfeld 2015-11-22 13:32:20 -08:00
parent 53424699e4
commit f08554e958
17 changed files with 541 additions and 512 deletions

View file

@ -173,90 +173,90 @@ static const char *ts_symbol_names[] = {
[sym_comment] = "comment",
};
static const TSNodeType ts_node_types[SYMBOL_COUNT] = {
[sym_translation_unit] = TSNodeTypeNamed,
[sym__declaration] = TSNodeTypeHidden,
[sym__block_declaration] = TSNodeTypeHidden,
[sym_function_definition] = TSNodeTypeNamed,
[sym_simple_declaration] = TSNodeTypeNamed,
[sym_namespace_alias_definition] = TSNodeTypeNamed,
[sym_scoped_identifier] = TSNodeTypeNamed,
[sym_declarator] = TSNodeTypeNamed,
[sym_abstract_declarator] = TSNodeTypeNamed,
[sym_direct_declarator] = TSNodeTypeNamed,
[sym_parameter_declaration] = TSNodeTypeNamed,
[sym_direct_abstract_declarator] = TSNodeTypeNamed,
[sym_cv_qualifier] = TSNodeTypeNamed,
[sym_type_id] = TSNodeTypeNamed,
[sym_pointer_operator] = TSNodeTypeNamed,
[sym_function_body] = TSNodeTypeNamed,
[sym_constructor_initializer] = TSNodeTypeNamed,
[sym_member_initializer] = TSNodeTypeNamed,
[sym_init_declarator] = TSNodeTypeNamed,
[sym_decl_specifier] = TSNodeTypeNamed,
[sym_storage_class_specifier] = TSNodeTypeNamed,
[sym_type_specifier] = TSNodeTypeNamed,
[sym_compound_statement] = TSNodeTypeNamed,
[sym__statement] = TSNodeTypeHidden,
[sym_expression_statement] = TSNodeTypeNamed,
[sym_initializer] = TSNodeTypeNamed,
[sym_initializer_clause] = TSNodeTypeNamed,
[sym_function_specifier] = TSNodeTypeNamed,
[sym__expression] = TSNodeTypeHidden,
[sym_call_expression] = TSNodeTypeNamed,
[sym_relational_expression] = TSNodeTypeNamed,
[sym_template_call] = TSNodeTypeNamed,
[aux_sym_translation_unit_repeat1] = TSNodeTypeHidden,
[aux_sym_function_definition_repeat1] = TSNodeTypeHidden,
[aux_sym_simple_declaration_repeat1] = TSNodeTypeHidden,
[aux_sym_declarator_repeat1] = TSNodeTypeHidden,
[aux_sym_direct_declarator_repeat1] = TSNodeTypeHidden,
[aux_sym_pointer_operator_repeat1] = TSNodeTypeHidden,
[aux_sym_constructor_initializer_repeat1] = TSNodeTypeHidden,
[aux_sym_compound_statement_repeat1] = TSNodeTypeHidden,
[aux_sym_call_expression_repeat1] = TSNodeTypeHidden,
[ts_builtin_sym_error] = TSNodeTypeNamed,
[ts_builtin_sym_end] = TSNodeTypeHidden,
[anon_sym_EQ] = TSNodeTypeAnonymous,
[anon_sym_default] = TSNodeTypeAnonymous,
[anon_sym_delete] = TSNodeTypeAnonymous,
[anon_sym_SEMI] = TSNodeTypeAnonymous,
[anon_sym_COMMA] = TSNodeTypeAnonymous,
[anon_sym_namespace] = TSNodeTypeAnonymous,
[anon_sym_COLON_COLON] = TSNodeTypeAnonymous,
[anon_sym_LPAREN] = TSNodeTypeAnonymous,
[anon_sym_RPAREN] = TSNodeTypeAnonymous,
[anon_sym_const] = TSNodeTypeAnonymous,
[anon_sym_volatile] = TSNodeTypeAnonymous,
[anon_sym_STAR] = TSNodeTypeAnonymous,
[anon_sym_AMP] = TSNodeTypeAnonymous,
[anon_sym_AMP_AMP] = TSNodeTypeAnonymous,
[anon_sym_COLON] = TSNodeTypeAnonymous,
[anon_sym_DOT_DOT_DOT] = TSNodeTypeAnonymous,
[anon_sym_initializer_list] = TSNodeTypeAnonymous,
[anon_sym_friend] = TSNodeTypeAnonymous,
[anon_sym_typedef] = TSNodeTypeAnonymous,
[anon_sym_constexpr] = TSNodeTypeAnonymous,
[anon_sym_register] = TSNodeTypeAnonymous,
[anon_sym_static] = TSNodeTypeAnonymous,
[anon_sym_thread_local] = TSNodeTypeAnonymous,
[anon_sym_extern] = TSNodeTypeAnonymous,
[anon_sym_mutable] = TSNodeTypeAnonymous,
[anon_sym_LBRACE] = TSNodeTypeAnonymous,
[anon_sym_RBRACE] = TSNodeTypeAnonymous,
[anon_sym_inline] = TSNodeTypeAnonymous,
[anon_sym_virtual] = TSNodeTypeAnonymous,
[anon_sym_explicit] = TSNodeTypeAnonymous,
[anon_sym_GT] = TSNodeTypeAnonymous,
[anon_sym_GT_EQ] = TSNodeTypeAnonymous,
[anon_sym_EQ_EQ] = TSNodeTypeAnonymous,
[anon_sym_BANG_EQ] = TSNodeTypeAnonymous,
[anon_sym_LT_EQ] = TSNodeTypeAnonymous,
[anon_sym_LT] = TSNodeTypeAnonymous,
[sym_string] = TSNodeTypeNamed,
[sym_identifier] = TSNodeTypeNamed,
[sym_number] = TSNodeTypeNamed,
[sym_comment] = TSNodeTypeNamed,
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
[sym_translation_unit] = {.visible = true, .named = true},
[sym__declaration] = {.visible = false, .named = false},
[sym__block_declaration] = {.visible = false, .named = false},
[sym_function_definition] = {.visible = true, .named = true},
[sym_simple_declaration] = {.visible = true, .named = true},
[sym_namespace_alias_definition] = {.visible = true, .named = true},
[sym_scoped_identifier] = {.visible = true, .named = true},
[sym_declarator] = {.visible = true, .named = true},
[sym_abstract_declarator] = {.visible = true, .named = true},
[sym_direct_declarator] = {.visible = true, .named = true},
[sym_parameter_declaration] = {.visible = true, .named = true},
[sym_direct_abstract_declarator] = {.visible = true, .named = true},
[sym_cv_qualifier] = {.visible = true, .named = true},
[sym_type_id] = {.visible = true, .named = true},
[sym_pointer_operator] = {.visible = true, .named = true},
[sym_function_body] = {.visible = true, .named = true},
[sym_constructor_initializer] = {.visible = true, .named = true},
[sym_member_initializer] = {.visible = true, .named = true},
[sym_init_declarator] = {.visible = true, .named = true},
[sym_decl_specifier] = {.visible = true, .named = true},
[sym_storage_class_specifier] = {.visible = true, .named = true},
[sym_type_specifier] = {.visible = true, .named = true},
[sym_compound_statement] = {.visible = true, .named = true},
[sym__statement] = {.visible = false, .named = false},
[sym_expression_statement] = {.visible = true, .named = true},
[sym_initializer] = {.visible = true, .named = true},
[sym_initializer_clause] = {.visible = true, .named = true},
[sym_function_specifier] = {.visible = true, .named = true},
[sym__expression] = {.visible = false, .named = false},
[sym_call_expression] = {.visible = true, .named = true},
[sym_relational_expression] = {.visible = true, .named = true},
[sym_template_call] = {.visible = true, .named = true},
[aux_sym_translation_unit_repeat1] = {.visible = false, .named = false},
[aux_sym_function_definition_repeat1] = {.visible = false, .named = false},
[aux_sym_simple_declaration_repeat1] = {.visible = false, .named = false},
[aux_sym_declarator_repeat1] = {.visible = false, .named = false},
[aux_sym_direct_declarator_repeat1] = {.visible = false, .named = false},
[aux_sym_pointer_operator_repeat1] = {.visible = false, .named = false},
[aux_sym_constructor_initializer_repeat1] = {.visible = false, .named = false},
[aux_sym_compound_statement_repeat1] = {.visible = false, .named = false},
[aux_sym_call_expression_repeat1] = {.visible = false, .named = false},
[ts_builtin_sym_error] = {.visible = true, .named = true},
[ts_builtin_sym_end] = {.visible = false, .named = false},
[anon_sym_EQ] = {.visible = true, .named = false},
[anon_sym_default] = {.visible = true, .named = false},
[anon_sym_delete] = {.visible = true, .named = false},
[anon_sym_SEMI] = {.visible = true, .named = false},
[anon_sym_COMMA] = {.visible = true, .named = false},
[anon_sym_namespace] = {.visible = true, .named = false},
[anon_sym_COLON_COLON] = {.visible = true, .named = false},
[anon_sym_LPAREN] = {.visible = true, .named = false},
[anon_sym_RPAREN] = {.visible = true, .named = false},
[anon_sym_const] = {.visible = true, .named = false},
[anon_sym_volatile] = {.visible = true, .named = false},
[anon_sym_STAR] = {.visible = true, .named = false},
[anon_sym_AMP] = {.visible = true, .named = false},
[anon_sym_AMP_AMP] = {.visible = true, .named = false},
[anon_sym_COLON] = {.visible = true, .named = false},
[anon_sym_DOT_DOT_DOT] = {.visible = true, .named = false},
[anon_sym_initializer_list] = {.visible = true, .named = false},
[anon_sym_friend] = {.visible = true, .named = false},
[anon_sym_typedef] = {.visible = true, .named = false},
[anon_sym_constexpr] = {.visible = true, .named = false},
[anon_sym_register] = {.visible = true, .named = false},
[anon_sym_static] = {.visible = true, .named = false},
[anon_sym_thread_local] = {.visible = true, .named = false},
[anon_sym_extern] = {.visible = true, .named = false},
[anon_sym_mutable] = {.visible = true, .named = false},
[anon_sym_LBRACE] = {.visible = true, .named = false},
[anon_sym_RBRACE] = {.visible = true, .named = false},
[anon_sym_inline] = {.visible = true, .named = false},
[anon_sym_virtual] = {.visible = true, .named = false},
[anon_sym_explicit] = {.visible = true, .named = false},
[anon_sym_GT] = {.visible = true, .named = false},
[anon_sym_GT_EQ] = {.visible = true, .named = false},
[anon_sym_EQ_EQ] = {.visible = true, .named = false},
[anon_sym_BANG_EQ] = {.visible = true, .named = false},
[anon_sym_LT_EQ] = {.visible = true, .named = false},
[anon_sym_LT] = {.visible = true, .named = false},
[sym_string] = {.visible = true, .named = true},
[sym_identifier] = {.visible = true, .named = true},
[sym_number] = {.visible = true, .named = true},
[sym_comment] = {.visible = true, .named = true},
};
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {