Treat tokens that are sometimes extra as fragile
This commit is contained in:
parent
d0e107eb84
commit
66144dc28e
11 changed files with 418 additions and 403 deletions
|
|
@ -27,6 +27,7 @@ typedef struct {
|
|||
bool visible : 1;
|
||||
bool named : 1;
|
||||
bool extra : 1;
|
||||
bool structural : 1;
|
||||
} TSSymbolMetadata;
|
||||
|
||||
typedef struct TSLexer {
|
||||
|
|
|
|||
14
spec/fixtures/parsers/anonymous_tokens.c
vendored
14
spec/fixtures/parsers/anonymous_tokens.c
vendored
|
|
@ -22,13 +22,13 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_program] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = true},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_LF] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_CR] = {.visible = true, .named = false, .extra = false},
|
||||
[aux_sym_SLASH_BSLASHd_SLASH] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_DQUOTEhello_DQUOTE] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_program] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = false, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LF] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_CR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_SLASH_BSLASHd_SLASH] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DQUOTEhello_DQUOTE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
40
spec/fixtures/parsers/arithmetic.c
vendored
40
spec/fixtures/parsers/arithmetic.c
vendored
|
|
@ -48,26 +48,26 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_program] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_sum] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_difference] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_product] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_quotient] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_exponent] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_group] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_CARET] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_variable] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .extra = true},
|
||||
[sym_program] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_sum] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_difference] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_product] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_quotient] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_exponent] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_group] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_CARET] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_variable] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .structural = false, .extra = true},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
164
spec/fixtures/parsers/c.c
vendored
164
spec/fixtures/parsers/c.c
vendored
|
|
@ -172,88 +172,88 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_translation_unit] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_preproc_define] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_definition] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_declaration_specifiers] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_storage_class_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__type_specifier] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_numeric_type_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_struct_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_name] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_struct_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_parameter_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__init_declarator] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_initializer] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_initializer_list] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_designation] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__declarator] = {.visible = false, .named = false, .extra = false},
|
||||
[sym__abstract_declarator] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_pointer_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_abstract_pointer_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_abstract_function_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_array_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_abstract_array_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_qualifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_compound_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_cast_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_math_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_pointer_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_assignment_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_for_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_macro_type] = {.visible = true, .named = true, .extra = false},
|
||||
[aux_sym_translation_unit_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_declaration_specifiers_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_numeric_type_specifier_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_struct_specifier_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_type_name_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_declaration_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_designation_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_function_declarator_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_compound_statement_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_call_expression_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_POUNDdefine] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LF] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_preproc_arg] = {.visible = true, .named = true, .extra = false},
|
||||
[anon_sym_typedef] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_extern] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_static] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_auto] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_register] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_signed] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_unsigned] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_long] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_short] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_struct] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_const] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_restrict] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_volatile] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_AMP] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .extra = true},
|
||||
[sym_translation_unit] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_preproc_define] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_definition] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_declaration_specifiers] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_storage_class_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__type_specifier] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_numeric_type_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_struct_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_name] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_struct_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_parameter_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__init_declarator] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_initializer] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_initializer_list] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_designation] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__declarator] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym__abstract_declarator] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_pointer_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_abstract_pointer_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_abstract_function_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_array_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_abstract_array_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_qualifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_compound_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_cast_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_math_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_pointer_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_assignment_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_for_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_macro_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[aux_sym_translation_unit_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_declaration_specifiers_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_numeric_type_specifier_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_struct_specifier_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_type_name_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_declaration_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_designation_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_function_declarator_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_compound_statement_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_call_expression_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_POUNDdefine] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LF] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_preproc_arg] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[anon_sym_typedef] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_extern] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_static] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_auto] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_register] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_signed] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_unsigned] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_long] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_short] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_struct] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_const] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_restrict] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_volatile] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_AMP] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .structural = false, .extra = true},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
166
spec/fixtures/parsers/cpp.c
vendored
166
spec/fixtures/parsers/cpp.c
vendored
|
|
@ -174,89 +174,89 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_translation_unit] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__declaration] = {.visible = false, .named = false, .extra = false},
|
||||
[sym__block_declaration] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_function_definition] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_simple_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_namespace_alias_definition] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_scoped_identifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_abstract_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_direct_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_parameter_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_direct_abstract_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_cv_qualifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_id] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_pointer_operator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_body] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_constructor_initializer] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_member_initializer] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_init_declarator] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_decl_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_storage_class_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_compound_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_initializer] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_initializer_clause] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_specifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_relational_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_template_call] = {.visible = true, .named = true, .extra = false},
|
||||
[aux_sym_translation_unit_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_function_definition_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_simple_declaration_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_declarator_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_direct_declarator_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_pointer_operator_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_constructor_initializer_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_compound_statement_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_call_expression_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = true},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_default] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_delete] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_namespace] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COLON_COLON] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_const] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_volatile] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_AMP] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DOT_DOT_DOT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_initializer_list] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_friend] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_typedef] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_constexpr] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_register] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_static] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_thread_local] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_extern] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_mutable] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_inline] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_virtual] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_explicit] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_GT_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_BANG_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LT_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .extra = true},
|
||||
[sym_translation_unit] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__declaration] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym__block_declaration] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_function_definition] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_simple_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_namespace_alias_definition] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_scoped_identifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_abstract_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_direct_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_parameter_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_direct_abstract_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_cv_qualifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_id] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_pointer_operator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_body] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_constructor_initializer] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_member_initializer] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_init_declarator] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_decl_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_storage_class_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_compound_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_initializer] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_initializer_clause] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_specifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_relational_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_template_call] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[aux_sym_translation_unit_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_function_definition_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_simple_declaration_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_declarator_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_direct_declarator_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_pointer_operator_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_constructor_initializer_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_compound_statement_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_call_expression_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = false, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_default] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_delete] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_namespace] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COLON_COLON] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_const] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_volatile] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_AMP] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DOT_DOT_DOT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_initializer_list] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_friend] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_typedef] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_constexpr] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_register] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_static] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_thread_local] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_extern] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_mutable] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_inline] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_virtual] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_explicit] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_GT_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_BANG_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LT_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .structural = false, .extra = true},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
168
spec/fixtures/parsers/golang.c
vendored
168
spec/fixtures/parsers/golang.c
vendored
|
|
@ -176,90 +176,90 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_program] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_package_directive] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_imports_block] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_package_import] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__declaration] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_type_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_var_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_func_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_block_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__type_expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_pointer_type] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_map_type] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_slice_type] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_struct_type] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_interface_type] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_return_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_short_var_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_range_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_if_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_selector_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_math_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_bool_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__func_signature] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_package_name] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_var_name] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_name] = {.visible = true, .named = true, .extra = false},
|
||||
[aux_sym_program_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_program_repeat2] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_imports_block_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_block_statement_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_struct_type_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_interface_type_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_return_statement_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_short_var_declaration_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym__func_signature_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym__func_signature_repeat2] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym__func_signature_repeat3] = {.visible = false, .named = false, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_package] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_import] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_type] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_var] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_func] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_map] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_struct] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_interface] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_return] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COLON_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_range] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_if] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_else] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PIPE_PIPE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LT_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_GT_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_BANG] = {.visible = true, .named = false, .extra = false},
|
||||
[sym__line_break] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__identifier] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_program] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_package_directive] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_imports_block] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_package_import] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__declaration] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_type_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_var_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_func_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_block_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__type_expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_pointer_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_map_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_slice_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_struct_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_interface_type] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_return_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_short_var_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_range_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_if_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_call_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_selector_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_math_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_bool_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__func_signature] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_package_name] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_var_name] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_name] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[aux_sym_program_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_program_repeat2] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_imports_block_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_block_statement_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_struct_type_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_interface_type_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_return_statement_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_short_var_declaration_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym__func_signature_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym__func_signature_repeat2] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym__func_signature_repeat3] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_package] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_import] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_type] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_var] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_func] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_map] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_struct] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_interface] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_return] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COLON_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_range] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_if] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_else] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PIPE_PIPE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LT_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_GT_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_BANG] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym__line_break] = {.visible = false, .named = false, .structural = true, .extra = true},
|
||||
[sym_string] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__identifier] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .structural = true, .extra = true},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
214
spec/fixtures/parsers/javascript.c
vendored
214
spec/fixtures/parsers/javascript.c
vendored
|
|
@ -222,113 +222,113 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym_program] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_var_declaration] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_statement_block] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_if_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_switch_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_for_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_for_in_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_while_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_try_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_return_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_throw_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_break_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_delete_statement] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_case] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_default] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_catch] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_finally] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_var_assignment] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__paren_expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_object] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_array] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_expression] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_function_call] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_constructor_call] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_member_access] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_subscript_access] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_assignment] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_math_assignment] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_ternary] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_bool_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_math_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_rel_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_type_op] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_formal_parameters] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_arguments] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_pair] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_method_definition] = {.visible = true, .named = true, .extra = false},
|
||||
[aux_sym_program_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_var_declaration_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_switch_statement_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_object_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_array_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_formal_parameters_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_var] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_if] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_else] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_switch] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_in] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_while] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_try] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_return] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_throw] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_break] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_delete] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_case] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_default] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_catch] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_finally] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_function] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_new] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PLUS_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DASH_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SLASH_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_QMARK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PIPE_PIPE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_BANG] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PLUS_PLUS] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DASH_DASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_EQ_EQ_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_BANG_EQ_EQ] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_instanceof] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_typeof] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_regex] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_null] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_undefined] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_true] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_false] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__line_break] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_program] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__statement] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_expression_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_var_declaration] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_statement_block] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_if_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_switch_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_for_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_for_in_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_while_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_try_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_return_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_throw_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_break_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_delete_statement] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_case] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_default] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_catch] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_finally] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_var_assignment] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__paren_expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym__expression] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_object] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_array] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_expression] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_function_call] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_constructor_call] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_member_access] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_subscript_access] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_assignment] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_math_assignment] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_ternary] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_bool_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_math_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_rel_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_type_op] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_formal_parameters] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_arguments] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_pair] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_method_definition] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[aux_sym_program_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_var_declaration_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_switch_statement_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_object_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_array_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_formal_parameters_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SEMI] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_var] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_if] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_else] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_switch] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_for] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RPAREN] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_in] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_while] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_try] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_return] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_throw] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_break] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_delete] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_case] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_default] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_catch] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_finally] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_function] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_new] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DOT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DASH_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SLASH_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_QMARK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PIPE_PIPE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_AMP_AMP] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_BANG] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS_PLUS] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DASH_DASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_STAR] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_SLASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_PLUS] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_DASH] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_EQ_EQ_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_BANG_EQ_EQ] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_GT] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_instanceof] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_typeof] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_comment] = {.visible = true, .named = true, .structural = true, .extra = true},
|
||||
[sym_string] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_regex] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_identifier] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_null] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_undefined] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_true] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_false] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym__line_break] = {.visible = false, .named = false, .structural = true, .extra = true},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
36
spec/fixtures/parsers/json.c
vendored
36
spec/fixtures/parsers/json.c
vendored
|
|
@ -44,24 +44,24 @@ static const char *ts_symbol_names[] = {
|
|||
};
|
||||
|
||||
static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = {
|
||||
[sym__value] = {.visible = false, .named = false, .extra = false},
|
||||
[sym_object] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_array] = {.visible = true, .named = true, .extra = false},
|
||||
[aux_sym_object_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[aux_sym_array_repeat1] = {.visible = false, .named = false, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_null] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_true] = {.visible = true, .named = true, .extra = false},
|
||||
[sym_false] = {.visible = true, .named = true, .extra = false},
|
||||
[sym__value] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[sym_object] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_array] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[aux_sym_object_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[aux_sym_array_repeat1] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_error] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[ts_builtin_sym_end] = {.visible = false, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COLON] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_COMMA] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACE] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_LBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[anon_sym_RBRACK] = {.visible = true, .named = false, .structural = true, .extra = false},
|
||||
[sym_string] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_number] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_null] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_true] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
[sym_false] = {.visible = true, .named = true, .structural = true, .extra = false},
|
||||
};
|
||||
|
||||
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
||||
|
|
|
|||
|
|
@ -166,9 +166,16 @@ class CCodeGenerator {
|
|||
add(", ");
|
||||
|
||||
if (entry.second.structural)
|
||||
add(".extra = false");
|
||||
add(".structural = true");
|
||||
else
|
||||
add(".structural = false");
|
||||
|
||||
add(", ");
|
||||
|
||||
if (syntax_grammar.ubiquitous_tokens.find(symbol) != syntax_grammar.ubiquitous_tokens.end())
|
||||
add(".extra = true");
|
||||
else
|
||||
add(".extra = false");
|
||||
|
||||
add("},");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -210,6 +210,8 @@ static TSTree *ts_parser__select_tree(void *data, TSTree *left, TSTree *right) {
|
|||
|
||||
static bool ts_parser__shift(TSParser *self, int head,
|
||||
TSStateId parse_state, TSTree *lookahead) {
|
||||
if (self->language->symbol_metadata[lookahead->symbol].extra)
|
||||
ts_tree_set_fragile(lookahead);
|
||||
if (ts_stack_push(self->stack, head, parse_state, lookahead)) {
|
||||
LOG("merge head:%d", head);
|
||||
vector_erase(&self->lookahead_states, head);
|
||||
|
|
@ -222,7 +224,7 @@ static bool ts_parser__shift(TSParser *self, int head,
|
|||
static bool ts_parser__shift_extra(TSParser *self, int head, TSStateId state,
|
||||
TSTree *lookahead) {
|
||||
TSSymbolMetadata metadata = self->language->symbol_metadata[lookahead->symbol];
|
||||
if (!metadata.extra && ts_stack_head_count(self->stack) > 1)
|
||||
if (metadata.structural && ts_stack_head_count(self->stack) > 1)
|
||||
lookahead = ts_tree_make_copy(lookahead);
|
||||
ts_tree_set_extra(lookahead);
|
||||
return ts_parser__shift(self, head, state, lookahead);
|
||||
|
|
|
|||
|
|
@ -90,6 +90,11 @@ static inline void ts_tree_set_fragile_right(TSTree *tree) {
|
|||
tree->options.fragile_right = true;
|
||||
}
|
||||
|
||||
static inline void ts_tree_set_fragile(TSTree *tree) {
|
||||
ts_tree_set_fragile_left(tree);
|
||||
ts_tree_set_fragile_right(tree);
|
||||
}
|
||||
|
||||
static inline bool ts_tree_is_fragile_left(const TSTree *tree) {
|
||||
return tree->options.fragile_left;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue