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

@ -219,113 +219,113 @@ static const char *ts_symbol_names[] = {
[sym__line_break] = "_line_break",
};
static const TSNodeType ts_node_types[SYMBOL_COUNT] = {
[sym_program] = TSNodeTypeNamed,
[sym__statement] = TSNodeTypeHidden,
[sym_expression_statement] = TSNodeTypeNamed,
[sym_var_declaration] = TSNodeTypeNamed,
[sym_statement_block] = TSNodeTypeNamed,
[sym_if_statement] = TSNodeTypeNamed,
[sym_switch_statement] = TSNodeTypeNamed,
[sym_for_statement] = TSNodeTypeNamed,
[sym_for_in_statement] = TSNodeTypeNamed,
[sym_while_statement] = TSNodeTypeNamed,
[sym_try_statement] = TSNodeTypeNamed,
[sym_return_statement] = TSNodeTypeNamed,
[sym_throw_statement] = TSNodeTypeNamed,
[sym_break_statement] = TSNodeTypeNamed,
[sym_delete_statement] = TSNodeTypeNamed,
[sym_case] = TSNodeTypeNamed,
[sym_default] = TSNodeTypeNamed,
[sym_catch] = TSNodeTypeNamed,
[sym_finally] = TSNodeTypeNamed,
[sym_var_assignment] = TSNodeTypeNamed,
[sym__paren_expression] = TSNodeTypeHidden,
[sym__expression] = TSNodeTypeHidden,
[sym_object] = TSNodeTypeNamed,
[sym_array] = TSNodeTypeNamed,
[sym_function_expression] = TSNodeTypeNamed,
[sym_function_call] = TSNodeTypeNamed,
[sym_constructor_call] = TSNodeTypeNamed,
[sym_member_access] = TSNodeTypeNamed,
[sym_subscript_access] = TSNodeTypeNamed,
[sym_assignment] = TSNodeTypeNamed,
[sym_math_assignment] = TSNodeTypeNamed,
[sym_ternary] = TSNodeTypeNamed,
[sym_bool_op] = TSNodeTypeNamed,
[sym_math_op] = TSNodeTypeNamed,
[sym_rel_op] = TSNodeTypeNamed,
[sym_type_op] = TSNodeTypeNamed,
[sym_formal_parameters] = TSNodeTypeNamed,
[sym_arguments] = TSNodeTypeNamed,
[sym_pair] = TSNodeTypeNamed,
[aux_sym_program_repeat1] = TSNodeTypeHidden,
[aux_sym_var_declaration_repeat1] = TSNodeTypeHidden,
[aux_sym_switch_statement_repeat1] = TSNodeTypeHidden,
[aux_sym_object_repeat1] = TSNodeTypeHidden,
[aux_sym_array_repeat1] = TSNodeTypeHidden,
[aux_sym_formal_parameters_repeat1] = TSNodeTypeHidden,
[ts_builtin_sym_error] = TSNodeTypeNamed,
[ts_builtin_sym_end] = TSNodeTypeHidden,
[anon_sym_SEMI] = TSNodeTypeAnonymous,
[anon_sym_var] = TSNodeTypeAnonymous,
[anon_sym_COMMA] = TSNodeTypeAnonymous,
[anon_sym_LBRACE] = TSNodeTypeAnonymous,
[anon_sym_RBRACE] = TSNodeTypeAnonymous,
[anon_sym_if] = TSNodeTypeAnonymous,
[anon_sym_else] = TSNodeTypeAnonymous,
[anon_sym_switch] = TSNodeTypeAnonymous,
[anon_sym_for] = TSNodeTypeAnonymous,
[anon_sym_LPAREN] = TSNodeTypeAnonymous,
[anon_sym_RPAREN] = TSNodeTypeAnonymous,
[anon_sym_in] = TSNodeTypeAnonymous,
[anon_sym_while] = TSNodeTypeAnonymous,
[anon_sym_try] = TSNodeTypeAnonymous,
[anon_sym_return] = TSNodeTypeAnonymous,
[anon_sym_throw] = TSNodeTypeAnonymous,
[anon_sym_break] = TSNodeTypeAnonymous,
[anon_sym_delete] = TSNodeTypeAnonymous,
[anon_sym_case] = TSNodeTypeAnonymous,
[anon_sym_COLON] = TSNodeTypeAnonymous,
[anon_sym_default] = TSNodeTypeAnonymous,
[anon_sym_catch] = TSNodeTypeAnonymous,
[anon_sym_finally] = TSNodeTypeAnonymous,
[anon_sym_EQ] = TSNodeTypeAnonymous,
[anon_sym_LBRACK] = TSNodeTypeAnonymous,
[anon_sym_RBRACK] = TSNodeTypeAnonymous,
[anon_sym_function] = TSNodeTypeAnonymous,
[anon_sym_new] = TSNodeTypeAnonymous,
[anon_sym_DOT] = TSNodeTypeAnonymous,
[anon_sym_PLUS_EQ] = TSNodeTypeAnonymous,
[anon_sym_DASH_EQ] = TSNodeTypeAnonymous,
[anon_sym_STAR_EQ] = TSNodeTypeAnonymous,
[anon_sym_SLASH_EQ] = TSNodeTypeAnonymous,
[anon_sym_QMARK] = TSNodeTypeAnonymous,
[anon_sym_PIPE_PIPE] = TSNodeTypeAnonymous,
[anon_sym_AMP_AMP] = TSNodeTypeAnonymous,
[anon_sym_BANG] = TSNodeTypeAnonymous,
[anon_sym_PLUS_PLUS] = TSNodeTypeAnonymous,
[anon_sym_DASH_DASH] = TSNodeTypeAnonymous,
[anon_sym_STAR] = TSNodeTypeAnonymous,
[anon_sym_SLASH] = TSNodeTypeAnonymous,
[anon_sym_PLUS] = TSNodeTypeAnonymous,
[anon_sym_DASH] = TSNodeTypeAnonymous,
[anon_sym_EQ_EQ_EQ] = TSNodeTypeAnonymous,
[anon_sym_BANG_EQ_EQ] = TSNodeTypeAnonymous,
[anon_sym_LT] = TSNodeTypeAnonymous,
[anon_sym_GT] = TSNodeTypeAnonymous,
[anon_sym_instanceof] = TSNodeTypeAnonymous,
[anon_sym_typeof] = TSNodeTypeAnonymous,
[sym_comment] = TSNodeTypeNamed,
[sym_string] = TSNodeTypeNamed,
[sym_regex] = TSNodeTypeNamed,
[sym_number] = TSNodeTypeNamed,
[sym_identifier] = TSNodeTypeNamed,
[sym_null] = TSNodeTypeNamed,
[sym_undefined] = TSNodeTypeNamed,
[sym_true] = TSNodeTypeNamed,
[sym_false] = TSNodeTypeNamed,
[sym__line_break] = TSNodeTypeHidden,
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
[sym_program] = {.visible = true, .named = true},
[sym__statement] = {.visible = false, .named = false},
[sym_expression_statement] = {.visible = true, .named = true},
[sym_var_declaration] = {.visible = true, .named = true},
[sym_statement_block] = {.visible = true, .named = true},
[sym_if_statement] = {.visible = true, .named = true},
[sym_switch_statement] = {.visible = true, .named = true},
[sym_for_statement] = {.visible = true, .named = true},
[sym_for_in_statement] = {.visible = true, .named = true},
[sym_while_statement] = {.visible = true, .named = true},
[sym_try_statement] = {.visible = true, .named = true},
[sym_return_statement] = {.visible = true, .named = true},
[sym_throw_statement] = {.visible = true, .named = true},
[sym_break_statement] = {.visible = true, .named = true},
[sym_delete_statement] = {.visible = true, .named = true},
[sym_case] = {.visible = true, .named = true},
[sym_default] = {.visible = true, .named = true},
[sym_catch] = {.visible = true, .named = true},
[sym_finally] = {.visible = true, .named = true},
[sym_var_assignment] = {.visible = true, .named = true},
[sym__paren_expression] = {.visible = false, .named = false},
[sym__expression] = {.visible = false, .named = false},
[sym_object] = {.visible = true, .named = true},
[sym_array] = {.visible = true, .named = true},
[sym_function_expression] = {.visible = true, .named = true},
[sym_function_call] = {.visible = true, .named = true},
[sym_constructor_call] = {.visible = true, .named = true},
[sym_member_access] = {.visible = true, .named = true},
[sym_subscript_access] = {.visible = true, .named = true},
[sym_assignment] = {.visible = true, .named = true},
[sym_math_assignment] = {.visible = true, .named = true},
[sym_ternary] = {.visible = true, .named = true},
[sym_bool_op] = {.visible = true, .named = true},
[sym_math_op] = {.visible = true, .named = true},
[sym_rel_op] = {.visible = true, .named = true},
[sym_type_op] = {.visible = true, .named = true},
[sym_formal_parameters] = {.visible = true, .named = true},
[sym_arguments] = {.visible = true, .named = true},
[sym_pair] = {.visible = true, .named = true},
[aux_sym_program_repeat1] = {.visible = false, .named = false},
[aux_sym_var_declaration_repeat1] = {.visible = false, .named = false},
[aux_sym_switch_statement_repeat1] = {.visible = false, .named = false},
[aux_sym_object_repeat1] = {.visible = false, .named = false},
[aux_sym_array_repeat1] = {.visible = false, .named = false},
[aux_sym_formal_parameters_repeat1] = {.visible = false, .named = false},
[ts_builtin_sym_error] = {.visible = true, .named = true},
[ts_builtin_sym_end] = {.visible = false, .named = false},
[anon_sym_SEMI] = {.visible = true, .named = false},
[anon_sym_var] = {.visible = true, .named = false},
[anon_sym_COMMA] = {.visible = true, .named = false},
[anon_sym_LBRACE] = {.visible = true, .named = false},
[anon_sym_RBRACE] = {.visible = true, .named = false},
[anon_sym_if] = {.visible = true, .named = false},
[anon_sym_else] = {.visible = true, .named = false},
[anon_sym_switch] = {.visible = true, .named = false},
[anon_sym_for] = {.visible = true, .named = false},
[anon_sym_LPAREN] = {.visible = true, .named = false},
[anon_sym_RPAREN] = {.visible = true, .named = false},
[anon_sym_in] = {.visible = true, .named = false},
[anon_sym_while] = {.visible = true, .named = false},
[anon_sym_try] = {.visible = true, .named = false},
[anon_sym_return] = {.visible = true, .named = false},
[anon_sym_throw] = {.visible = true, .named = false},
[anon_sym_break] = {.visible = true, .named = false},
[anon_sym_delete] = {.visible = true, .named = false},
[anon_sym_case] = {.visible = true, .named = false},
[anon_sym_COLON] = {.visible = true, .named = false},
[anon_sym_default] = {.visible = true, .named = false},
[anon_sym_catch] = {.visible = true, .named = false},
[anon_sym_finally] = {.visible = true, .named = false},
[anon_sym_EQ] = {.visible = true, .named = false},
[anon_sym_LBRACK] = {.visible = true, .named = false},
[anon_sym_RBRACK] = {.visible = true, .named = false},
[anon_sym_function] = {.visible = true, .named = false},
[anon_sym_new] = {.visible = true, .named = false},
[anon_sym_DOT] = {.visible = true, .named = false},
[anon_sym_PLUS_EQ] = {.visible = true, .named = false},
[anon_sym_DASH_EQ] = {.visible = true, .named = false},
[anon_sym_STAR_EQ] = {.visible = true, .named = false},
[anon_sym_SLASH_EQ] = {.visible = true, .named = false},
[anon_sym_QMARK] = {.visible = true, .named = false},
[anon_sym_PIPE_PIPE] = {.visible = true, .named = false},
[anon_sym_AMP_AMP] = {.visible = true, .named = false},
[anon_sym_BANG] = {.visible = true, .named = false},
[anon_sym_PLUS_PLUS] = {.visible = true, .named = false},
[anon_sym_DASH_DASH] = {.visible = true, .named = false},
[anon_sym_STAR] = {.visible = true, .named = false},
[anon_sym_SLASH] = {.visible = true, .named = false},
[anon_sym_PLUS] = {.visible = true, .named = false},
[anon_sym_DASH] = {.visible = true, .named = false},
[anon_sym_EQ_EQ_EQ] = {.visible = true, .named = false},
[anon_sym_BANG_EQ_EQ] = {.visible = true, .named = false},
[anon_sym_LT] = {.visible = true, .named = false},
[anon_sym_GT] = {.visible = true, .named = false},
[anon_sym_instanceof] = {.visible = true, .named = false},
[anon_sym_typeof] = {.visible = true, .named = false},
[sym_comment] = {.visible = true, .named = true},
[sym_string] = {.visible = true, .named = true},
[sym_regex] = {.visible = true, .named = true},
[sym_number] = {.visible = true, .named = true},
[sym_identifier] = {.visible = true, .named = true},
[sym_null] = {.visible = true, .named = true},
[sym_undefined] = {.visible = true, .named = true},
[sym_true] = {.visible = true, .named = true},
[sym_false] = {.visible = true, .named = true},
[sym__line_break] = {.visible = false, .named = false},
};
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {