Remove magic number from generated symbols enums

The symbol numbers 0 and 1 are reserved for 'error' and 'eof',
so the grammar's start symbol is always 2.
This commit is contained in:
Max Brunsfeld 2014-05-08 13:14:45 -07:00
parent 013572671f
commit 0a21eee3f0
6 changed files with 190 additions and 184 deletions

View file

@ -4,22 +4,22 @@
#define SYMBOL_COUNT 18
enum {
ts_sym_expression = 2,
ts_sym_sum = 3,
ts_sym_difference = 4,
ts_sym_product = 5,
ts_sym_quotient = 6,
ts_sym_exponent = 7,
ts_sym_group = 8,
ts_sym_number = 9,
ts_sym_variable = 10,
ts_aux_sym_token0 = 11,
ts_aux_sym_token1 = 12,
ts_aux_sym_token2 = 13,
ts_aux_sym_token3 = 14,
ts_aux_sym_token4 = 15,
ts_aux_sym_token5 = 16,
ts_aux_sym_token6 = 17,
ts_sym_expression = ts_start_sym,
ts_sym_sum,
ts_sym_difference,
ts_sym_product,
ts_sym_quotient,
ts_sym_exponent,
ts_sym_group,
ts_sym_number,
ts_sym_variable,
ts_aux_sym_token0,
ts_aux_sym_token1,
ts_aux_sym_token2,
ts_aux_sym_token3,
ts_aux_sym_token4,
ts_aux_sym_token5,
ts_aux_sym_token6,
};
SYMBOL_NAMES = {

View file

@ -4,70 +4,70 @@
#define SYMBOL_COUNT 66
enum {
ts_sym_program = 2,
ts_sym_package_directive = 3,
ts_sym_imports_block = 4,
ts_sym_package_import = 5,
ts_sym_declaration = 6,
ts_sym_type_declaration = 7,
ts_sym_var_declaration = 8,
ts_sym_func_declaration = 9,
ts_sym_statement_block = 10,
ts_sym_type_expression = 11,
ts_sym_pointer_type = 12,
ts_sym_map_type = 13,
ts_sym_slice_type = 14,
ts_sym_struct_type = 15,
ts_sym_interface_type = 16,
ts_sym_expression = 17,
ts_sym_math_op = 18,
ts_sym_bool_op = 19,
ts_sym__func_signature = 20,
ts_sym_package_name = 21,
ts_sym_var_name = 22,
ts_sym_type_name = 23,
ts_sym_string = 24,
ts_sym__identifier = 25,
ts_sym_number = 26,
ts_sym_comment = 27,
ts_aux_sym_program_repeat0 = 28,
ts_aux_sym_program_repeat1 = 29,
ts_aux_sym_imports_block_repeat0 = 30,
ts_aux_sym_struct_type_repeat0 = 31,
ts_aux_sym_interface_type_repeat0 = 32,
ts_aux_sym__func_signature_repeat0 = 33,
ts_aux_sym__func_signature_repeat1 = 34,
ts_aux_sym__func_signature_repeat2 = 35,
ts_aux_sym__func_signature_repeat3 = 36,
ts_aux_sym__func_signature_repeat4 = 37,
ts_aux_sym_token0 = 38,
ts_aux_sym_token1 = 39,
ts_aux_sym_token2 = 40,
ts_aux_sym_token3 = 41,
ts_aux_sym_token4 = 42,
ts_aux_sym_token5 = 43,
ts_aux_sym_token6 = 44,
ts_aux_sym_token7 = 45,
ts_aux_sym_token8 = 46,
ts_aux_sym_token9 = 47,
ts_aux_sym_token10 = 48,
ts_aux_sym_token11 = 49,
ts_aux_sym_token12 = 50,
ts_aux_sym_token13 = 51,
ts_aux_sym_token14 = 52,
ts_aux_sym_token15 = 53,
ts_aux_sym_token16 = 54,
ts_aux_sym_token17 = 55,
ts_aux_sym_token18 = 56,
ts_aux_sym_token19 = 57,
ts_aux_sym_token20 = 58,
ts_aux_sym_token21 = 59,
ts_aux_sym_token22 = 60,
ts_aux_sym_token23 = 61,
ts_aux_sym_token24 = 62,
ts_aux_sym_token25 = 63,
ts_aux_sym_token26 = 64,
ts_aux_sym_token27 = 65,
ts_sym_program = ts_start_sym,
ts_sym_package_directive,
ts_sym_imports_block,
ts_sym_package_import,
ts_sym_declaration,
ts_sym_type_declaration,
ts_sym_var_declaration,
ts_sym_func_declaration,
ts_sym_statement_block,
ts_sym_type_expression,
ts_sym_pointer_type,
ts_sym_map_type,
ts_sym_slice_type,
ts_sym_struct_type,
ts_sym_interface_type,
ts_sym_expression,
ts_sym_math_op,
ts_sym_bool_op,
ts_sym__func_signature,
ts_sym_package_name,
ts_sym_var_name,
ts_sym_type_name,
ts_sym_string,
ts_sym__identifier,
ts_sym_number,
ts_sym_comment,
ts_aux_sym_program_repeat0,
ts_aux_sym_program_repeat1,
ts_aux_sym_imports_block_repeat0,
ts_aux_sym_struct_type_repeat0,
ts_aux_sym_interface_type_repeat0,
ts_aux_sym__func_signature_repeat0,
ts_aux_sym__func_signature_repeat1,
ts_aux_sym__func_signature_repeat2,
ts_aux_sym__func_signature_repeat3,
ts_aux_sym__func_signature_repeat4,
ts_aux_sym_token0,
ts_aux_sym_token1,
ts_aux_sym_token2,
ts_aux_sym_token3,
ts_aux_sym_token4,
ts_aux_sym_token5,
ts_aux_sym_token6,
ts_aux_sym_token7,
ts_aux_sym_token8,
ts_aux_sym_token9,
ts_aux_sym_token10,
ts_aux_sym_token11,
ts_aux_sym_token12,
ts_aux_sym_token13,
ts_aux_sym_token14,
ts_aux_sym_token15,
ts_aux_sym_token16,
ts_aux_sym_token17,
ts_aux_sym_token18,
ts_aux_sym_token19,
ts_aux_sym_token20,
ts_aux_sym_token21,
ts_aux_sym_token22,
ts_aux_sym_token23,
ts_aux_sym_token24,
ts_aux_sym_token25,
ts_aux_sym_token26,
ts_aux_sym_token27,
};
SYMBOL_NAMES = {

View file

@ -4,91 +4,91 @@
#define SYMBOL_COUNT 87
enum {
ts_sym_program = 2,
ts_sym_statement = 3,
ts_sym_statement_block = 4,
ts_sym_for_statement = 5,
ts_sym_if_statement = 6,
ts_sym_switch_statement = 7,
ts_sym_switch_case = 8,
ts_sym_break_statement = 9,
ts_sym_var_declaration = 10,
ts_sym_expression_statement = 11,
ts_sym_return_statement = 12,
ts_sym_delete_statement = 13,
ts_sym_expression = 14,
ts_sym_math_op = 15,
ts_sym_bool_op = 16,
ts_sym_ternary = 17,
ts_sym_assignment = 18,
ts_sym_function_expression = 19,
ts_sym_function_call = 20,
ts_sym_constructor_call = 21,
ts_sym_property_access = 22,
ts_sym_formal_parameters = 23,
ts_sym_object = 24,
ts_sym_array = 25,
ts_sym_comment = 26,
ts_sym__terminator = 27,
ts_sym_regex = 28,
ts_sym_string = 29,
ts_sym_identifier = 30,
ts_sym_number = 31,
ts_sym_null = 32,
ts_sym_true = 33,
ts_sym_false = 34,
ts_aux_sym_program_repeat0 = 35,
ts_aux_sym_statement_block_repeat0 = 36,
ts_aux_sym_switch_statement_repeat0 = 37,
ts_aux_sym_switch_case_repeat0 = 38,
ts_aux_sym_var_declaration_repeat0 = 39,
ts_aux_sym_function_call_repeat0 = 40,
ts_aux_sym_formal_parameters_repeat0 = 41,
ts_aux_sym_object_repeat0 = 42,
ts_aux_sym_array_repeat0 = 43,
ts_aux_sym_token0 = 44,
ts_aux_sym_token1 = 45,
ts_aux_sym_token2 = 46,
ts_aux_sym_token3 = 47,
ts_aux_sym_token4 = 48,
ts_aux_sym_token5 = 49,
ts_aux_sym_token6 = 50,
ts_aux_sym_token7 = 51,
ts_aux_sym_token8 = 52,
ts_aux_sym_token9 = 53,
ts_aux_sym_token10 = 54,
ts_aux_sym_token11 = 55,
ts_aux_sym_token12 = 56,
ts_aux_sym_token13 = 57,
ts_aux_sym_token14 = 58,
ts_aux_sym_token15 = 59,
ts_aux_sym_token16 = 60,
ts_aux_sym_token17 = 61,
ts_aux_sym_token18 = 62,
ts_aux_sym_token19 = 63,
ts_aux_sym_token20 = 64,
ts_aux_sym_token21 = 65,
ts_aux_sym_token22 = 66,
ts_aux_sym_token23 = 67,
ts_aux_sym_token24 = 68,
ts_aux_sym_token25 = 69,
ts_aux_sym_token26 = 70,
ts_aux_sym_token27 = 71,
ts_aux_sym_token28 = 72,
ts_aux_sym_token29 = 73,
ts_aux_sym_token30 = 74,
ts_aux_sym_token31 = 75,
ts_aux_sym_token32 = 76,
ts_aux_sym_token33 = 77,
ts_aux_sym_token34 = 78,
ts_aux_sym_token35 = 79,
ts_aux_sym_token36 = 80,
ts_aux_sym_token37 = 81,
ts_aux_sym_token38 = 82,
ts_aux_sym_token39 = 83,
ts_aux_sym_token40 = 84,
ts_aux_sym_token41 = 85,
ts_aux_sym_token42 = 86,
ts_sym_program = ts_start_sym,
ts_sym_statement,
ts_sym_statement_block,
ts_sym_for_statement,
ts_sym_if_statement,
ts_sym_switch_statement,
ts_sym_switch_case,
ts_sym_break_statement,
ts_sym_var_declaration,
ts_sym_expression_statement,
ts_sym_return_statement,
ts_sym_delete_statement,
ts_sym_expression,
ts_sym_math_op,
ts_sym_bool_op,
ts_sym_ternary,
ts_sym_assignment,
ts_sym_function_expression,
ts_sym_function_call,
ts_sym_constructor_call,
ts_sym_property_access,
ts_sym_formal_parameters,
ts_sym_object,
ts_sym_array,
ts_sym_comment,
ts_sym__terminator,
ts_sym_regex,
ts_sym_string,
ts_sym_identifier,
ts_sym_number,
ts_sym_null,
ts_sym_true,
ts_sym_false,
ts_aux_sym_program_repeat0,
ts_aux_sym_statement_block_repeat0,
ts_aux_sym_switch_statement_repeat0,
ts_aux_sym_switch_case_repeat0,
ts_aux_sym_var_declaration_repeat0,
ts_aux_sym_function_call_repeat0,
ts_aux_sym_formal_parameters_repeat0,
ts_aux_sym_object_repeat0,
ts_aux_sym_array_repeat0,
ts_aux_sym_token0,
ts_aux_sym_token1,
ts_aux_sym_token2,
ts_aux_sym_token3,
ts_aux_sym_token4,
ts_aux_sym_token5,
ts_aux_sym_token6,
ts_aux_sym_token7,
ts_aux_sym_token8,
ts_aux_sym_token9,
ts_aux_sym_token10,
ts_aux_sym_token11,
ts_aux_sym_token12,
ts_aux_sym_token13,
ts_aux_sym_token14,
ts_aux_sym_token15,
ts_aux_sym_token16,
ts_aux_sym_token17,
ts_aux_sym_token18,
ts_aux_sym_token19,
ts_aux_sym_token20,
ts_aux_sym_token21,
ts_aux_sym_token22,
ts_aux_sym_token23,
ts_aux_sym_token24,
ts_aux_sym_token25,
ts_aux_sym_token26,
ts_aux_sym_token27,
ts_aux_sym_token28,
ts_aux_sym_token29,
ts_aux_sym_token30,
ts_aux_sym_token31,
ts_aux_sym_token32,
ts_aux_sym_token33,
ts_aux_sym_token34,
ts_aux_sym_token35,
ts_aux_sym_token36,
ts_aux_sym_token37,
ts_aux_sym_token38,
ts_aux_sym_token39,
ts_aux_sym_token40,
ts_aux_sym_token41,
ts_aux_sym_token42,
};
SYMBOL_NAMES = {

View file

@ -4,22 +4,22 @@
#define SYMBOL_COUNT 18
enum {
ts_sym_value = 2,
ts_sym_object = 3,
ts_sym_array = 4,
ts_sym_string = 5,
ts_sym_number = 6,
ts_sym_null = 7,
ts_sym_true = 8,
ts_sym_false = 9,
ts_aux_sym_object_repeat0 = 10,
ts_aux_sym_array_repeat0 = 11,
ts_aux_sym_token0 = 12,
ts_aux_sym_token1 = 13,
ts_aux_sym_token2 = 14,
ts_aux_sym_token3 = 15,
ts_aux_sym_token4 = 16,
ts_aux_sym_token5 = 17,
ts_sym_value = ts_start_sym,
ts_sym_object,
ts_sym_array,
ts_sym_string,
ts_sym_number,
ts_sym_null,
ts_sym_true,
ts_sym_false,
ts_aux_sym_object_repeat0,
ts_aux_sym_array_repeat0,
ts_aux_sym_token0,
ts_aux_sym_token1,
ts_aux_sym_token2,
ts_aux_sym_token3,
ts_aux_sym_token4,
ts_aux_sym_token5,
};
SYMBOL_NAMES = {

View file

@ -10,6 +10,7 @@ extern "C" {
typedef unsigned short ts_symbol;
#define ts_builtin_sym_error 0
#define ts_builtin_sym_end 1
#define ts_start_sym 2
typedef struct ts_tree ts_tree;
ts_tree * ts_tree_make_leaf(ts_symbol symbol, size_t size, size_t offset);

View file

@ -204,10 +204,15 @@ namespace tree_sitter {
string symbol_enum() {
string result = "enum {\n";
size_t index = 2;
bool at_start = true;
for (auto symbol : parse_table.symbols)
if (!symbol.is_built_in())
result += indent(symbol_id(symbol)) + " = " + to_string(index++) + ",\n";
if (!symbol.is_built_in()) {
if (at_start)
result += indent(symbol_id(symbol)) + " = ts_start_sym,\n";
else
result += indent(symbol_id(symbol)) + ",\n";
at_start = false;
}
return result + "};";
}