From af279907bb94cf49a1846767cdcef08a0ddf2787 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 14 Jul 2017 12:43:42 -0700 Subject: [PATCH] Add file redirects --- corpus/commands.txt | 23 + grammar.js | 23 +- src/grammar.json | 88 ++- src/parser.c | 1628 ++++++++++++++++++++++++++++++++----------- 4 files changed, 1363 insertions(+), 399 deletions(-) diff --git a/corpus/commands.txt b/corpus/commands.txt index f7c2393..066d7a6 100644 --- a/corpus/commands.txt +++ b/corpus/commands.txt @@ -77,3 +77,26 @@ a | b && c; d e f | e g (pipeline (simple_command (command_name) (argument) (argument)) (simple_command (command_name) (argument)))))) + +=============================== +File redirects +=============================== + +whoami > /dev/null +cat a b 2> /dev/null +2>&1 whoami + +--- + +(program + (command (simple_command + (command_name) + (file_redirect (file_name)))) + (command (simple_command + (command_name) + (argument) + (argument) + (file_redirect (file_descriptor) (file_name)))) + (command (simple_command + (file_redirect (file_descriptor) (file_descriptor)) + (command_name)))) diff --git a/grammar.js b/grammar.js index 9e344e9..2588e6f 100644 --- a/grammar.js +++ b/grammar.js @@ -16,12 +16,18 @@ module.exports = grammar({ ), simple_command: $ => seq( - repeat($.environment_variable_assignment), + repeat(choice( + $.environment_variable_assignment, + $.file_redirect + )), rename($.leading_word, 'command_name'), optional(seq( /\s+/, repeat(rename($.word, 'argument')) - )) + )), + repeat( + $.file_redirect + ) ), pipeline: $ => prec.left(seq( @@ -49,9 +55,20 @@ module.exports = grammar({ rename($.word, 'argument') ), + file_redirect: $ => seq( + optional($.file_descriptor), + choice('<', '>', '<&', '>&'), + choice( + $.file_descriptor, + rename($.word, 'file_name') + ) + ), + + file_descriptor: $ => token(prec(1, /\d+/)), + leading_word: $ => /[^\s=|;]+/, - word: $ => /[^\s]+/, + word: $ => /[^\s<>&]+/, control_operator: $ => choice( '\n', diff --git a/src/grammar.json b/src/grammar.json index 04ef06a..ed48741 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -40,8 +40,17 @@ { "type": "REPEAT", "content": { - "type": "SYMBOL", - "name": "environment_variable_assignment" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "environment_variable_assignment" + }, + { + "type": "SYMBOL", + "name": "file_redirect" + } + ] } }, { @@ -79,6 +88,13 @@ "type": "BLANK" } ] + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "file_redirect" + } } ] }, @@ -189,13 +205,79 @@ } ] }, + "file_redirect": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "file_descriptor" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "<&" + }, + { + "type": "STRING", + "value": ">&" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "file_descriptor" + }, + { + "type": "RENAME", + "content": { + "type": "SYMBOL", + "name": "word" + }, + "value": "file_name" + } + ] + } + ] + }, + "file_descriptor": { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "\\d+" + } + } + }, "leading_word": { "type": "PATTERN", "value": "[^\\s=|;]+" }, "word": { "type": "PATTERN", - "value": "[^\\s]+" + "value": "[^\\s<>&]+" }, "control_operator": { "type": "CHOICE", diff --git a/src/parser.c b/src/parser.c index c2ac892..1a79ca8 100644 --- a/src/parser.c +++ b/src/parser.c @@ -4,11 +4,11 @@ #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #define LANGUAGE_VERSION 3 -#define STATE_COUNT 33 -#define SYMBOL_COUNT 20 -#define TOKEN_COUNT 11 +#define STATE_COUNT 66 +#define SYMBOL_COUNT 27 +#define TOKEN_COUNT 16 #define EXTERNAL_TOKEN_COUNT 0 -#define MAX_RENAME_SEQUENCE_LENGTH 4 +#define MAX_RENAME_SEQUENCE_LENGTH 5 enum { aux_sym_SLASH_BSLASHs_PLUS_SLASH = 1, @@ -17,23 +17,31 @@ enum { anon_sym_AMP_AMP = 4, anon_sym_SEMI = 5, anon_sym_EQ = 6, - sym_leading_word = 7, - sym_word = 8, - anon_sym_LF = 9, - anon_sym_SEMI_SEMI = 10, - sym_program = 11, - sym_command = 12, - sym_simple_command = 13, - sym_pipeline = 14, - sym_list = 15, - sym_environment_variable_assignment = 16, - aux_sym_program_repeat1 = 17, - aux_sym_simple_command_repeat1 = 18, - aux_sym_simple_command_repeat2 = 19, - rename_sym_1 = 20, - rename_sym_argument = 21, - rename_sym_command_name = 22, - rename_sym_variable_name = 23, + anon_sym_LT = 7, + anon_sym_GT = 8, + anon_sym_LT_AMP = 9, + anon_sym_GT_AMP = 10, + sym_file_descriptor = 11, + sym_leading_word = 12, + sym_word = 13, + anon_sym_LF = 14, + anon_sym_SEMI_SEMI = 15, + sym_program = 16, + sym_command = 17, + sym_simple_command = 18, + sym_pipeline = 19, + sym_list = 20, + sym_environment_variable_assignment = 21, + sym_file_redirect = 22, + aux_sym_program_repeat1 = 23, + aux_sym_simple_command_repeat1 = 24, + aux_sym_simple_command_repeat2 = 25, + aux_sym_simple_command_repeat3 = 26, + rename_sym_1 = 27, + rename_sym_argument = 28, + rename_sym_command_name = 29, + rename_sym_file_name = 30, + rename_sym_variable_name = 31, }; static const char *ts_symbol_names[] = { @@ -44,6 +52,11 @@ static const char *ts_symbol_names[] = { [anon_sym_AMP_AMP] = "&&", [anon_sym_SEMI] = ";", [anon_sym_EQ] = "=", + [anon_sym_LT] = "<", + [anon_sym_GT] = ">", + [anon_sym_LT_AMP] = "<&", + [anon_sym_GT_AMP] = ">&", + [sym_file_descriptor] = "file_descriptor", [sym_leading_word] = "leading_word", [sym_word] = "word", [anon_sym_LF] = "\n", @@ -54,12 +67,15 @@ static const char *ts_symbol_names[] = { [sym_pipeline] = "pipeline", [sym_list] = "list", [sym_environment_variable_assignment] = "environment_variable_assignment", + [sym_file_redirect] = "file_redirect", [aux_sym_program_repeat1] = "program_repeat1", [aux_sym_simple_command_repeat1] = "simple_command_repeat1", [aux_sym_simple_command_repeat2] = "simple_command_repeat2", + [aux_sym_simple_command_repeat3] = "simple_command_repeat3", [rename_sym_1] = "", [rename_sym_argument] = "argument", [rename_sym_command_name] = "command_name", + [rename_sym_file_name] = "file_name", [rename_sym_variable_name] = "variable_name", }; @@ -106,6 +122,36 @@ static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = { .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_LT_AMP] = { + .visible = true, + .named = false, + .structural = true, + .extra = false, + }, + [anon_sym_GT_AMP] = { + .visible = true, + .named = false, + .structural = true, + .extra = false, + }, + [sym_file_descriptor] = { + .visible = true, + .named = true, + .structural = true, + .extra = false, + }, [sym_leading_word] = { .visible = true, .named = true, @@ -166,6 +212,12 @@ static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = { .structural = true, .extra = false, }, + [sym_file_redirect] = { + .visible = true, + .named = true, + .structural = true, + .extra = false, + }, [aux_sym_program_repeat1] = { .visible = false, .named = false, @@ -184,35 +236,53 @@ static const TSSymbolMetadata ts_symbol_metadata[SYMBOL_COUNT] = { .structural = true, .extra = false, }, + [aux_sym_simple_command_repeat3] = { + .visible = false, + .named = false, + .structural = true, + .extra = false, + }, }; -static TSSymbol ts_rename_sequences[10][MAX_RENAME_SEQUENCE_LENGTH] = { +static TSSymbol ts_rename_sequences[14][MAX_RENAME_SEQUENCE_LENGTH] = { [1] = { [0] = rename_sym_command_name, }, [2] = { - [0] = rename_sym_command_name, + [1] = rename_sym_file_name, }, [3] = { - [1] = rename_sym_command_name, - }, - [4] = { - [0] = rename_sym_argument, - }, - [5] = { [0] = rename_sym_command_name, }, + [4] = { + [1] = rename_sym_command_name, + }, + [5] = { + [2] = rename_sym_file_name, + }, [6] = { + [0] = rename_sym_argument, + }, + [7] = { + [0] = rename_sym_command_name, + }, + [8] = { [0] = rename_sym_variable_name, [2] = rename_sym_argument, }, - [7] = { + [9] = { [1] = rename_sym_command_name, }, - [8] = { + [10] = { [1] = rename_sym_argument, }, - [9] = { + [11] = { + [0] = rename_sym_command_name, + }, + [12] = { + [1] = rename_sym_command_name, + }, + [13] = { [1] = rename_sym_command_name, }, }; @@ -227,15 +297,21 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { ADVANCE(2); if (lookahead == ';') ADVANCE(4); - if (lookahead == '=') + if (lookahead == '<') ADVANCE(6); + if (lookahead == '=') + ADVANCE(8); + if (lookahead == '>') + ADVANCE(9); if (lookahead == '|') - ADVANCE(7); + ADVANCE(11); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - ADVANCE(8); + ADVANCE(12); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(13); END_STATE(); case 1: ACCEPT_TOKEN(ts_builtin_sym_end); @@ -256,33 +332,85 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { ACCEPT_TOKEN(anon_sym_SEMI_SEMI); END_STATE(); case 6: - ACCEPT_TOKEN(anon_sym_EQ); + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '&') + ADVANCE(7); END_STATE(); case 7: - ACCEPT_TOKEN(anon_sym_PIPE); + ACCEPT_TOKEN(anon_sym_LT_AMP); END_STATE(); case 8: + ACCEPT_TOKEN(anon_sym_EQ); + END_STATE(); + case 9: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '&') + ADVANCE(10); + END_STATE(); + case 10: + ACCEPT_TOKEN(anon_sym_GT_AMP); + END_STATE(); + case 11: + ACCEPT_TOKEN(anon_sym_PIPE); + END_STATE(); + case 12: ACCEPT_TOKEN(aux_sym_SLASH_BSLASHs_PLUS_SLASH); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - ADVANCE(8); + ADVANCE(12); END_STATE(); - case 9: + case 13: + ACCEPT_TOKEN(sym_file_descriptor); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(13); + END_STATE(); + case 14: if (lookahead == 0) ADVANCE(1); + if (lookahead == '<') + ADVANCE(15); + if (lookahead == '>') + ADVANCE(18); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - SKIP(9); - if (lookahead != ';' && + SKIP(14); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(20); + if ((lookahead < ';' || lookahead > '>') && + lookahead != '|') + ADVANCE(17); + END_STATE(); + case 15: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '&') + ADVANCE(16); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && lookahead != '=' && lookahead != '|') - ADVANCE(10); + ADVANCE(17); END_STATE(); - case 10: + case 16: + ACCEPT_TOKEN(anon_sym_LT_AMP); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && + lookahead != '=' && + lookahead != '|') + ADVANCE(17); + END_STATE(); + case 17: ACCEPT_TOKEN(sym_leading_word); if (lookahead != 0 && lookahead != '\t' && @@ -292,79 +420,158 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead != ';' && lookahead != '=' && lookahead != '|') - ADVANCE(10); + ADVANCE(17); END_STATE(); - case 11: + case 18: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '&') + ADVANCE(19); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && + lookahead != '=' && + lookahead != '|') + ADVANCE(17); + END_STATE(); + case 19: + ACCEPT_TOKEN(anon_sym_GT_AMP); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && + lookahead != '=' && + lookahead != '|') + ADVANCE(17); + END_STATE(); + case 20: + ACCEPT_TOKEN(sym_file_descriptor); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(20); + END_STATE(); + case 21: + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') + SKIP(21); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(22); + if (lookahead != 0 && + lookahead != '&' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); + END_STATE(); + case 22: + ACCEPT_TOKEN(sym_file_descriptor); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(22); + END_STATE(); + case 23: + ACCEPT_TOKEN(sym_word); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != '&' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); + END_STATE(); + case 24: + if (lookahead == '<') + ADVANCE(6); + if (lookahead == '>') + ADVANCE(9); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') + SKIP(24); + END_STATE(); + case 25: if (lookahead == '\n') - ADVANCE(12); + ADVANCE(26); if (lookahead == '&') ADVANCE(2); if (lookahead == ';') ADVANCE(4); - if (lookahead == '=') + if (lookahead == '<') ADVANCE(6); + if (lookahead == '=') + ADVANCE(8); + if (lookahead == '>') + ADVANCE(9); if (lookahead == '|') - ADVANCE(14); + ADVANCE(28); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') + ADVANCE(27); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(13); END_STATE(); - case 12: + case 26: ACCEPT_TOKEN(anon_sym_LF); if (lookahead == '\n') - ADVANCE(12); + ADVANCE(26); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') - ADVANCE(13); + ADVANCE(27); END_STATE(); - case 13: + case 27: ACCEPT_TOKEN(aux_sym_SLASH_BSLASHs_PLUS_SLASH); if (lookahead == '\n') - ADVANCE(12); + ADVANCE(26); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') - ADVANCE(13); + ADVANCE(27); END_STATE(); - case 14: + case 28: ACCEPT_TOKEN(anon_sym_PIPE); if (lookahead == '&') - ADVANCE(15); + ADVANCE(29); END_STATE(); - case 15: + case 29: ACCEPT_TOKEN(anon_sym_PIPE_AMP); END_STATE(); - case 16: + case 30: if (lookahead == 0) ADVANCE(1); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - SKIP(16); + SKIP(30); END_STATE(); - case 17: + case 31: if (lookahead == '\n') - ADVANCE(18); + ADVANCE(32); if (lookahead == '&') ADVANCE(2); if (lookahead == ';') ADVANCE(4); if (lookahead == '|') - ADVANCE(14); + ADVANCE(28); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') - SKIP(17); + SKIP(31); END_STATE(); - case 18: + case 32: ACCEPT_TOKEN(anon_sym_LF); END_STATE(); - case 19: + case 33: if (lookahead == '\n') - ADVANCE(18); + ADVANCE(32); if (lookahead == '&') ADVANCE(2); if (lookahead == ';') @@ -372,113 +579,167 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') - SKIP(19); + SKIP(33); END_STATE(); - case 20: + case 34: + if (lookahead == '<') + ADVANCE(15); + if (lookahead == '>') + ADVANCE(18); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - SKIP(20); + SKIP(34); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(20); if (lookahead != 0 && - lookahead != ';' && - lookahead != '=' && + (lookahead < ';' || lookahead > '>') && lookahead != '|') - ADVANCE(10); + ADVANCE(17); END_STATE(); - case 21: + case 35: if (lookahead == '\n') - ADVANCE(18); + ADVANCE(32); if (lookahead == '&') - ADVANCE(22); + ADVANCE(2); if (lookahead == ';') - ADVANCE(25); + ADVANCE(36); + if (lookahead == '<') + ADVANCE(6); + if (lookahead == '>') + ADVANCE(9); if (lookahead == '|') - ADVANCE(27); + ADVANCE(38); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') - SKIP(21); + SKIP(35); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(22); if (lookahead != 0) - ADVANCE(24); - END_STATE(); - case 22: - ACCEPT_TOKEN(sym_word); - if (lookahead == '&') ADVANCE(23); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); END_STATE(); - case 23: - ACCEPT_TOKEN(anon_sym_AMP_AMP); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); - END_STATE(); - case 24: - ACCEPT_TOKEN(sym_word); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); - END_STATE(); - case 25: + case 36: ACCEPT_TOKEN(anon_sym_SEMI); if (lookahead == ';') - ADVANCE(26); + ADVANCE(37); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); + lookahead != ' ' && + lookahead != '&' && + lookahead != ';' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); END_STATE(); - case 26: + case 37: ACCEPT_TOKEN(anon_sym_SEMI_SEMI); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); + lookahead != ' ' && + lookahead != '&' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); END_STATE(); - case 27: + case 38: ACCEPT_TOKEN(anon_sym_PIPE); if (lookahead == '&') - ADVANCE(28); + ADVANCE(29); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); + lookahead != ' ' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); END_STATE(); - case 28: - ACCEPT_TOKEN(anon_sym_PIPE_AMP); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != ' ') - ADVANCE(24); - END_STATE(); - case 29: + case 39: if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') - SKIP(29); - if (lookahead != 0) - ADVANCE(24); + SKIP(39); + if (lookahead != 0 && + lookahead != '&' && + lookahead != '<' && + lookahead != '>') + ADVANCE(23); + END_STATE(); + case 40: + if (lookahead == '\n') + ADVANCE(32); + if (lookahead == '&') + ADVANCE(2); + if (lookahead == ';') + ADVANCE(4); + if (lookahead == '<') + ADVANCE(6); + if (lookahead == '>') + ADVANCE(9); + if (lookahead == '|') + ADVANCE(28); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') + SKIP(40); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(13); + END_STATE(); + case 41: + if (lookahead == '\n') + ADVANCE(32); + if (lookahead == '&') + ADVANCE(42); + if (lookahead == ';') + ADVANCE(4); + if (lookahead == '<') + ADVANCE(15); + if (lookahead == '>') + ADVANCE(18); + if (lookahead == '|') + ADVANCE(28); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') + SKIP(41); + if (('0' <= lookahead && lookahead <= '9')) + ADVANCE(20); + if (lookahead != 0 && + (lookahead < ';' || lookahead > '>')) + ADVANCE(17); + END_STATE(); + case 42: + ACCEPT_TOKEN(sym_leading_word); + if (lookahead == '&') + ADVANCE(43); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && + lookahead != '=' && + lookahead != '|') + ADVANCE(17); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_AMP_AMP); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ' && + lookahead != ';' && + lookahead != '=' && + lookahead != '|') + ADVANCE(17); END_STATE(); default: return false; @@ -487,327 +748,908 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 9}, - [2] = {.lex_state = 11}, - [3] = {.lex_state = 16}, - [4] = {.lex_state = 9}, - [5] = {.lex_state = 17}, - [6] = {.lex_state = 19}, - [7] = {.lex_state = 20}, - [8] = {.lex_state = 9}, - [9] = {.lex_state = 20}, - [10] = {.lex_state = 21}, - [11] = {.lex_state = 29}, - [12] = {.lex_state = 20}, - [13] = {.lex_state = 20}, - [14] = {.lex_state = 9}, - [15] = {.lex_state = 9}, - [16] = {.lex_state = 11}, - [17] = {.lex_state = 20}, - [18] = {.lex_state = 21}, - [19] = {.lex_state = 21}, - [20] = {.lex_state = 20}, - [21] = {.lex_state = 19}, - [22] = {.lex_state = 17}, - [23] = {.lex_state = 19}, - [24] = {.lex_state = 21}, - [25] = {.lex_state = 21}, - [26] = {.lex_state = 21}, - [27] = {.lex_state = 21}, - [28] = {.lex_state = 9}, - [29] = {.lex_state = 17}, - [30] = {.lex_state = 19}, - [31] = {.lex_state = 20}, - [32] = {.lex_state = 21}, + [1] = {.lex_state = 14}, + [2] = {.lex_state = 21}, + [3] = {.lex_state = 24}, + [4] = {.lex_state = 25}, + [5] = {.lex_state = 30}, + [6] = {.lex_state = 14}, + [7] = {.lex_state = 31}, + [8] = {.lex_state = 33}, + [9] = {.lex_state = 34}, + [10] = {.lex_state = 14}, + [11] = {.lex_state = 34}, + [12] = {.lex_state = 34}, + [13] = {.lex_state = 34}, + [14] = {.lex_state = 21}, + [15] = {.lex_state = 35}, + [16] = {.lex_state = 39}, + [17] = {.lex_state = 21}, + [18] = {.lex_state = 24}, + [19] = {.lex_state = 40}, + [20] = {.lex_state = 40}, + [21] = {.lex_state = 34}, + [22] = {.lex_state = 34}, + [23] = {.lex_state = 14}, + [24] = {.lex_state = 14}, + [25] = {.lex_state = 25}, + [26] = {.lex_state = 34}, + [27] = {.lex_state = 34}, + [28] = {.lex_state = 34}, + [29] = {.lex_state = 35}, + [30] = {.lex_state = 35}, + [31] = {.lex_state = 40}, + [32] = {.lex_state = 34}, + [33] = {.lex_state = 40}, + [34] = {.lex_state = 40}, + [35] = {.lex_state = 21}, + [36] = {.lex_state = 40}, + [37] = {.lex_state = 33}, + [38] = {.lex_state = 31}, + [39] = {.lex_state = 33}, + [40] = {.lex_state = 35}, + [41] = {.lex_state = 40}, + [42] = {.lex_state = 35}, + [43] = {.lex_state = 40}, + [44] = {.lex_state = 40}, + [45] = {.lex_state = 40}, + [46] = {.lex_state = 35}, + [47] = {.lex_state = 40}, + [48] = {.lex_state = 40}, + [49] = {.lex_state = 35}, + [50] = {.lex_state = 21}, + [51] = {.lex_state = 41}, + [52] = {.lex_state = 14}, + [53] = {.lex_state = 31}, + [54] = {.lex_state = 33}, + [55] = {.lex_state = 34}, + [56] = {.lex_state = 41}, + [57] = {.lex_state = 35}, + [58] = {.lex_state = 40}, + [59] = {.lex_state = 40}, + [60] = {.lex_state = 41}, + [61] = {.lex_state = 41}, + [62] = {.lex_state = 21}, + [63] = {.lex_state = 40}, + [64] = {.lex_state = 41}, + [65] = {.lex_state = 41}, }; static uint16_t ts_parse_table[STATE_COUNT][SYMBOL_COUNT] = { [0] = { - [sym_program] = STATE(3), - [sym_command] = STATE(28), - [sym_simple_command] = STATE(29), - [sym_pipeline] = STATE(30), - [sym_list] = STATE(6), - [sym_environment_variable_assignment] = STATE(31), - [aux_sym_program_repeat1] = STATE(8), - [aux_sym_simple_command_repeat1] = STATE(9), - [aux_sym_simple_command_repeat2] = STATE(32), + [sym_program] = STATE(5), + [sym_command] = STATE(52), + [sym_simple_command] = STATE(53), + [sym_pipeline] = STATE(54), + [sym_list] = STATE(8), + [sym_environment_variable_assignment] = STATE(55), + [sym_file_redirect] = STATE(56), + [aux_sym_program_repeat1] = STATE(10), + [aux_sym_simple_command_repeat1] = STATE(11), + [aux_sym_simple_command_repeat2] = STATE(57), + [aux_sym_simple_command_repeat3] = STATE(58), [ts_builtin_sym_end] = ACTIONS(1), [aux_sym_SLASH_BSLASHs_PLUS_SLASH] = ACTIONS(3), [anon_sym_PIPE] = ACTIONS(5), [anon_sym_AMP_AMP] = ACTIONS(7), [anon_sym_SEMI] = ACTIONS(7), [anon_sym_EQ] = ACTIONS(9), - [anon_sym_SEMI_SEMI] = ACTIONS(11), + [anon_sym_LT] = ACTIONS(11), + [anon_sym_GT] = ACTIONS(11), + [anon_sym_LT_AMP] = ACTIONS(11), + [anon_sym_GT_AMP] = ACTIONS(11), + [sym_file_descriptor] = ACTIONS(13), + [anon_sym_SEMI_SEMI] = ACTIONS(15), }, [1] = { - [sym_program] = STATE(3), - [sym_command] = STATE(4), - [sym_simple_command] = STATE(5), - [sym_pipeline] = STATE(6), - [sym_list] = STATE(6), - [sym_environment_variable_assignment] = STATE(7), - [aux_sym_program_repeat1] = STATE(8), - [aux_sym_simple_command_repeat1] = STATE(9), - [ts_builtin_sym_end] = ACTIONS(13), - [sym_leading_word] = ACTIONS(15), + [sym_program] = STATE(5), + [sym_command] = STATE(6), + [sym_simple_command] = STATE(7), + [sym_pipeline] = STATE(8), + [sym_list] = STATE(8), + [sym_environment_variable_assignment] = STATE(9), + [sym_file_redirect] = STATE(9), + [aux_sym_program_repeat1] = STATE(10), + [aux_sym_simple_command_repeat1] = STATE(11), + [ts_builtin_sym_end] = ACTIONS(17), + [anon_sym_LT] = ACTIONS(19), + [anon_sym_GT] = ACTIONS(19), + [anon_sym_LT_AMP] = ACTIONS(19), + [anon_sym_GT_AMP] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(21), + [sym_leading_word] = ACTIONS(23), }, [2] = { - [aux_sym_SLASH_BSLASHs_PLUS_SLASH] = ACTIONS(17), - [anon_sym_PIPE] = ACTIONS(19), - [anon_sym_PIPE_AMP] = ACTIONS(19), - [anon_sym_AMP_AMP] = ACTIONS(19), - [anon_sym_SEMI] = ACTIONS(19), - [anon_sym_EQ] = ACTIONS(21), - [anon_sym_LF] = ACTIONS(19), - [anon_sym_SEMI_SEMI] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(25), + [sym_word] = ACTIONS(27), }, [3] = { - [ts_builtin_sym_end] = ACTIONS(23), + [anon_sym_LT] = ACTIONS(29), + [anon_sym_GT] = ACTIONS(29), + [anon_sym_LT_AMP] = ACTIONS(31), + [anon_sym_GT_AMP] = ACTIONS(31), }, [4] = { - [ts_builtin_sym_end] = ACTIONS(25), - [sym_leading_word] = ACTIONS(27), + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat3] = STATE(20), + [aux_sym_SLASH_BSLASHs_PLUS_SLASH] = ACTIONS(33), + [anon_sym_PIPE] = ACTIONS(35), + [anon_sym_PIPE_AMP] = ACTIONS(35), + [anon_sym_AMP_AMP] = ACTIONS(35), + [anon_sym_SEMI] = ACTIONS(35), + [anon_sym_EQ] = ACTIONS(37), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(35), + [anon_sym_SEMI_SEMI] = ACTIONS(35), }, [5] = { - [anon_sym_PIPE] = ACTIONS(29), - [anon_sym_PIPE_AMP] = ACTIONS(29), - [anon_sym_AMP_AMP] = ACTIONS(31), - [anon_sym_SEMI] = ACTIONS(31), - [anon_sym_LF] = ACTIONS(33), - [anon_sym_SEMI_SEMI] = ACTIONS(33), + [ts_builtin_sym_end] = ACTIONS(43), }, [6] = { - [anon_sym_AMP_AMP] = ACTIONS(31), - [anon_sym_SEMI] = ACTIONS(31), - [anon_sym_LF] = ACTIONS(33), - [anon_sym_SEMI_SEMI] = ACTIONS(33), - }, - [7] = { - [sym_leading_word] = ACTIONS(35), - }, - [8] = { - [sym_command] = STATE(15), - [sym_simple_command] = STATE(5), - [sym_pipeline] = STATE(6), - [sym_list] = STATE(6), - [sym_environment_variable_assignment] = STATE(7), - [aux_sym_simple_command_repeat1] = STATE(9), - [ts_builtin_sym_end] = ACTIONS(37), - [sym_leading_word] = ACTIONS(15), - }, - [9] = { - [sym_environment_variable_assignment] = STATE(17), - [sym_leading_word] = ACTIONS(39), - }, - [10] = { - [aux_sym_simple_command_repeat2] = STATE(19), - [anon_sym_PIPE] = ACTIONS(41), - [anon_sym_PIPE_AMP] = ACTIONS(41), - [anon_sym_AMP_AMP] = ACTIONS(41), - [anon_sym_SEMI] = ACTIONS(41), - [sym_word] = ACTIONS(43), - [anon_sym_LF] = ACTIONS(41), - [anon_sym_SEMI_SEMI] = ACTIONS(41), - }, - [11] = { - [sym_word] = ACTIONS(45), - }, - [12] = { - [sym_simple_command] = STATE(21), - [sym_environment_variable_assignment] = STATE(7), - [aux_sym_simple_command_repeat1] = STATE(9), - [sym_leading_word] = ACTIONS(15), - }, - [13] = { - [sym_simple_command] = STATE(22), - [sym_pipeline] = STATE(23), - [sym_environment_variable_assignment] = STATE(7), - [aux_sym_simple_command_repeat1] = STATE(9), - [sym_leading_word] = ACTIONS(15), - }, - [14] = { - [ts_builtin_sym_end] = ACTIONS(47), + [ts_builtin_sym_end] = ACTIONS(45), + [anon_sym_LT] = ACTIONS(47), + [anon_sym_GT] = ACTIONS(47), + [anon_sym_LT_AMP] = ACTIONS(47), + [anon_sym_GT_AMP] = ACTIONS(47), + [sym_file_descriptor] = ACTIONS(47), [sym_leading_word] = ACTIONS(49), }, - [15] = { - [ts_builtin_sym_end] = ACTIONS(51), - [sym_leading_word] = ACTIONS(53), + [7] = { + [anon_sym_PIPE] = ACTIONS(51), + [anon_sym_PIPE_AMP] = ACTIONS(51), + [anon_sym_AMP_AMP] = ACTIONS(53), + [anon_sym_SEMI] = ACTIONS(53), + [anon_sym_LF] = ACTIONS(55), + [anon_sym_SEMI_SEMI] = ACTIONS(55), }, - [16] = { - [aux_sym_SLASH_BSLASHs_PLUS_SLASH] = ACTIONS(55), - [anon_sym_PIPE] = ACTIONS(57), - [anon_sym_PIPE_AMP] = ACTIONS(57), - [anon_sym_AMP_AMP] = ACTIONS(57), - [anon_sym_SEMI] = ACTIONS(57), - [anon_sym_EQ] = ACTIONS(21), - [anon_sym_LF] = ACTIONS(57), - [anon_sym_SEMI_SEMI] = ACTIONS(57), + [8] = { + [anon_sym_AMP_AMP] = ACTIONS(53), + [anon_sym_SEMI] = ACTIONS(53), + [anon_sym_LF] = ACTIONS(55), + [anon_sym_SEMI_SEMI] = ACTIONS(55), }, - [17] = { + [9] = { + [anon_sym_LT] = ACTIONS(57), + [anon_sym_GT] = ACTIONS(57), + [anon_sym_LT_AMP] = ACTIONS(57), + [anon_sym_GT_AMP] = ACTIONS(57), + [sym_file_descriptor] = ACTIONS(57), [sym_leading_word] = ACTIONS(59), }, - [18] = { - [anon_sym_PIPE] = ACTIONS(61), - [anon_sym_PIPE_AMP] = ACTIONS(61), - [anon_sym_AMP_AMP] = ACTIONS(61), - [anon_sym_SEMI] = ACTIONS(61), - [sym_word] = ACTIONS(61), - [anon_sym_LF] = ACTIONS(61), - [anon_sym_SEMI_SEMI] = ACTIONS(61), + [10] = { + [sym_command] = STATE(24), + [sym_simple_command] = STATE(7), + [sym_pipeline] = STATE(8), + [sym_list] = STATE(8), + [sym_environment_variable_assignment] = STATE(9), + [sym_file_redirect] = STATE(9), + [aux_sym_simple_command_repeat1] = STATE(11), + [ts_builtin_sym_end] = ACTIONS(61), + [anon_sym_LT] = ACTIONS(19), + [anon_sym_GT] = ACTIONS(19), + [anon_sym_LT_AMP] = ACTIONS(19), + [anon_sym_GT_AMP] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(21), + [sym_leading_word] = ACTIONS(23), }, - [19] = { - [anon_sym_PIPE] = ACTIONS(63), - [anon_sym_PIPE_AMP] = ACTIONS(63), - [anon_sym_AMP_AMP] = ACTIONS(63), - [anon_sym_SEMI] = ACTIONS(63), - [sym_word] = ACTIONS(65), - [anon_sym_LF] = ACTIONS(63), - [anon_sym_SEMI_SEMI] = ACTIONS(63), + [11] = { + [sym_environment_variable_assignment] = STATE(26), + [sym_file_redirect] = STATE(26), + [anon_sym_LT] = ACTIONS(19), + [anon_sym_GT] = ACTIONS(19), + [anon_sym_LT_AMP] = ACTIONS(19), + [anon_sym_GT_AMP] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(21), + [sym_leading_word] = ACTIONS(63), }, - [20] = { + [12] = { + [anon_sym_LT] = ACTIONS(65), + [anon_sym_GT] = ACTIONS(65), + [anon_sym_LT_AMP] = ACTIONS(65), + [anon_sym_GT_AMP] = ACTIONS(65), + [sym_file_descriptor] = ACTIONS(65), [sym_leading_word] = ACTIONS(67), }, - [21] = { - [anon_sym_AMP_AMP] = ACTIONS(69), - [anon_sym_SEMI] = ACTIONS(69), - [anon_sym_LF] = ACTIONS(69), - [anon_sym_SEMI_SEMI] = ACTIONS(69), + [13] = { + [anon_sym_LT] = ACTIONS(69), + [anon_sym_GT] = ACTIONS(69), + [anon_sym_LT_AMP] = ACTIONS(69), + [anon_sym_GT_AMP] = ACTIONS(69), + [sym_file_descriptor] = ACTIONS(69), + [sym_leading_word] = ACTIONS(71), }, - [22] = { - [anon_sym_PIPE] = ACTIONS(29), - [anon_sym_PIPE_AMP] = ACTIONS(29), - [anon_sym_AMP_AMP] = ACTIONS(71), - [anon_sym_SEMI] = ACTIONS(71), - [anon_sym_LF] = ACTIONS(71), - [anon_sym_SEMI_SEMI] = ACTIONS(71), - }, - [23] = { - [anon_sym_AMP_AMP] = ACTIONS(71), - [anon_sym_SEMI] = ACTIONS(71), - [anon_sym_LF] = ACTIONS(71), - [anon_sym_SEMI_SEMI] = ACTIONS(71), - }, - [24] = { - [aux_sym_simple_command_repeat2] = STATE(26), - [anon_sym_PIPE] = ACTIONS(73), - [anon_sym_PIPE_AMP] = ACTIONS(73), - [anon_sym_AMP_AMP] = ACTIONS(73), - [anon_sym_SEMI] = ACTIONS(73), - [sym_word] = ACTIONS(43), - [anon_sym_LF] = ACTIONS(73), - [anon_sym_SEMI_SEMI] = ACTIONS(73), - }, - [25] = { - [anon_sym_PIPE] = ACTIONS(75), - [anon_sym_PIPE_AMP] = ACTIONS(75), - [anon_sym_AMP_AMP] = ACTIONS(75), - [anon_sym_SEMI] = ACTIONS(75), + [14] = { + [sym_file_descriptor] = ACTIONS(73), [sym_word] = ACTIONS(75), - [anon_sym_LF] = ACTIONS(75), - [anon_sym_SEMI_SEMI] = ACTIONS(75), }, - [26] = { + [15] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat2] = STATE(30), + [aux_sym_simple_command_repeat3] = STATE(31), [anon_sym_PIPE] = ACTIONS(77), [anon_sym_PIPE_AMP] = ACTIONS(77), [anon_sym_AMP_AMP] = ACTIONS(77), [anon_sym_SEMI] = ACTIONS(77), - [sym_word] = ACTIONS(65), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(79), [anon_sym_LF] = ACTIONS(77), [anon_sym_SEMI_SEMI] = ACTIONS(77), }, + [16] = { + [sym_word] = ACTIONS(81), + }, + [17] = { + [sym_file_descriptor] = ACTIONS(83), + [sym_word] = ACTIONS(85), + }, + [18] = { + [anon_sym_LT] = ACTIONS(87), + [anon_sym_GT] = ACTIONS(87), + [anon_sym_LT_AMP] = ACTIONS(89), + [anon_sym_GT_AMP] = ACTIONS(89), + }, + [19] = { + [anon_sym_PIPE] = ACTIONS(91), + [anon_sym_PIPE_AMP] = ACTIONS(91), + [anon_sym_AMP_AMP] = ACTIONS(91), + [anon_sym_SEMI] = ACTIONS(91), + [anon_sym_LT] = ACTIONS(91), + [anon_sym_GT] = ACTIONS(91), + [anon_sym_LT_AMP] = ACTIONS(91), + [anon_sym_GT_AMP] = ACTIONS(91), + [sym_file_descriptor] = ACTIONS(91), + [anon_sym_LF] = ACTIONS(91), + [anon_sym_SEMI_SEMI] = ACTIONS(91), + }, + [20] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(77), + [anon_sym_PIPE_AMP] = ACTIONS(77), + [anon_sym_AMP_AMP] = ACTIONS(77), + [anon_sym_SEMI] = ACTIONS(77), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(77), + [anon_sym_SEMI_SEMI] = ACTIONS(77), + }, + [21] = { + [sym_simple_command] = STATE(37), + [sym_environment_variable_assignment] = STATE(9), + [sym_file_redirect] = STATE(9), + [aux_sym_simple_command_repeat1] = STATE(11), + [anon_sym_LT] = ACTIONS(19), + [anon_sym_GT] = ACTIONS(19), + [anon_sym_LT_AMP] = ACTIONS(19), + [anon_sym_GT_AMP] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(21), + [sym_leading_word] = ACTIONS(23), + }, + [22] = { + [sym_simple_command] = STATE(38), + [sym_pipeline] = STATE(39), + [sym_environment_variable_assignment] = STATE(9), + [sym_file_redirect] = STATE(9), + [aux_sym_simple_command_repeat1] = STATE(11), + [anon_sym_LT] = ACTIONS(19), + [anon_sym_GT] = ACTIONS(19), + [anon_sym_LT_AMP] = ACTIONS(19), + [anon_sym_GT_AMP] = ACTIONS(19), + [sym_file_descriptor] = ACTIONS(21), + [sym_leading_word] = ACTIONS(23), + }, + [23] = { + [ts_builtin_sym_end] = ACTIONS(93), + [anon_sym_LT] = ACTIONS(95), + [anon_sym_GT] = ACTIONS(95), + [anon_sym_LT_AMP] = ACTIONS(95), + [anon_sym_GT_AMP] = ACTIONS(95), + [sym_file_descriptor] = ACTIONS(95), + [sym_leading_word] = ACTIONS(97), + }, + [24] = { + [ts_builtin_sym_end] = ACTIONS(99), + [anon_sym_LT] = ACTIONS(101), + [anon_sym_GT] = ACTIONS(101), + [anon_sym_LT_AMP] = ACTIONS(101), + [anon_sym_GT_AMP] = ACTIONS(101), + [sym_file_descriptor] = ACTIONS(101), + [sym_leading_word] = ACTIONS(103), + }, + [25] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat3] = STATE(41), + [aux_sym_SLASH_BSLASHs_PLUS_SLASH] = ACTIONS(105), + [anon_sym_PIPE] = ACTIONS(107), + [anon_sym_PIPE_AMP] = ACTIONS(107), + [anon_sym_AMP_AMP] = ACTIONS(107), + [anon_sym_SEMI] = ACTIONS(107), + [anon_sym_EQ] = ACTIONS(37), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(107), + [anon_sym_SEMI_SEMI] = ACTIONS(107), + }, + [26] = { + [anon_sym_LT] = ACTIONS(109), + [anon_sym_GT] = ACTIONS(109), + [anon_sym_LT_AMP] = ACTIONS(109), + [anon_sym_GT_AMP] = ACTIONS(109), + [sym_file_descriptor] = ACTIONS(109), + [sym_leading_word] = ACTIONS(111), + }, [27] = { - [aux_sym_simple_command_repeat2] = STATE(32), - [anon_sym_PIPE] = ACTIONS(79), - [anon_sym_PIPE_AMP] = ACTIONS(79), - [anon_sym_AMP_AMP] = ACTIONS(79), - [anon_sym_SEMI] = ACTIONS(79), - [sym_word] = ACTIONS(43), - [anon_sym_LF] = ACTIONS(79), - [anon_sym_SEMI_SEMI] = ACTIONS(79), + [anon_sym_LT] = ACTIONS(113), + [anon_sym_GT] = ACTIONS(113), + [anon_sym_LT_AMP] = ACTIONS(113), + [anon_sym_GT_AMP] = ACTIONS(113), + [sym_file_descriptor] = ACTIONS(113), + [sym_leading_word] = ACTIONS(115), }, [28] = { - [ts_builtin_sym_end] = ACTIONS(82), - [sym_leading_word] = ACTIONS(85), + [anon_sym_LT] = ACTIONS(117), + [anon_sym_GT] = ACTIONS(117), + [anon_sym_LT_AMP] = ACTIONS(117), + [anon_sym_GT_AMP] = ACTIONS(117), + [sym_file_descriptor] = ACTIONS(117), + [sym_leading_word] = ACTIONS(119), }, [29] = { - [anon_sym_PIPE] = ACTIONS(29), - [anon_sym_PIPE_AMP] = ACTIONS(29), - [anon_sym_AMP_AMP] = ACTIONS(88), - [anon_sym_SEMI] = ACTIONS(88), - [anon_sym_LF] = ACTIONS(92), - [anon_sym_SEMI_SEMI] = ACTIONS(92), + [anon_sym_PIPE] = ACTIONS(121), + [anon_sym_PIPE_AMP] = ACTIONS(121), + [anon_sym_AMP_AMP] = ACTIONS(121), + [anon_sym_SEMI] = ACTIONS(121), + [anon_sym_LT] = ACTIONS(121), + [anon_sym_GT] = ACTIONS(121), + [anon_sym_LT_AMP] = ACTIONS(121), + [anon_sym_GT_AMP] = ACTIONS(121), + [sym_file_descriptor] = ACTIONS(121), + [sym_word] = ACTIONS(121), + [anon_sym_LF] = ACTIONS(121), + [anon_sym_SEMI_SEMI] = ACTIONS(121), }, [30] = { - [anon_sym_AMP_AMP] = ACTIONS(96), - [anon_sym_SEMI] = ACTIONS(96), - [anon_sym_LF] = ACTIONS(99), - [anon_sym_SEMI_SEMI] = ACTIONS(99), + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat3] = STATE(43), + [anon_sym_PIPE] = ACTIONS(123), + [anon_sym_PIPE_AMP] = ACTIONS(123), + [anon_sym_AMP_AMP] = ACTIONS(123), + [anon_sym_SEMI] = ACTIONS(123), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(125), + [anon_sym_LF] = ACTIONS(123), + [anon_sym_SEMI_SEMI] = ACTIONS(123), }, [31] = { - [sym_leading_word] = ACTIONS(102), + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(123), + [anon_sym_PIPE_AMP] = ACTIONS(123), + [anon_sym_AMP_AMP] = ACTIONS(123), + [anon_sym_SEMI] = ACTIONS(123), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(123), + [anon_sym_SEMI_SEMI] = ACTIONS(123), }, [32] = { - [anon_sym_PIPE] = ACTIONS(105), - [anon_sym_PIPE_AMP] = ACTIONS(105), - [anon_sym_AMP_AMP] = ACTIONS(105), - [anon_sym_SEMI] = ACTIONS(105), - [sym_word] = ACTIONS(65), - [anon_sym_LF] = ACTIONS(105), - [anon_sym_SEMI_SEMI] = ACTIONS(105), + [anon_sym_LT] = ACTIONS(127), + [anon_sym_GT] = ACTIONS(127), + [anon_sym_LT_AMP] = ACTIONS(127), + [anon_sym_GT_AMP] = ACTIONS(127), + [sym_file_descriptor] = ACTIONS(127), + [sym_leading_word] = ACTIONS(129), + }, + [33] = { + [anon_sym_PIPE] = ACTIONS(67), + [anon_sym_PIPE_AMP] = ACTIONS(67), + [anon_sym_AMP_AMP] = ACTIONS(67), + [anon_sym_SEMI] = ACTIONS(67), + [anon_sym_LT] = ACTIONS(67), + [anon_sym_GT] = ACTIONS(67), + [anon_sym_LT_AMP] = ACTIONS(67), + [anon_sym_GT_AMP] = ACTIONS(67), + [sym_file_descriptor] = ACTIONS(67), + [anon_sym_LF] = ACTIONS(67), + [anon_sym_SEMI_SEMI] = ACTIONS(67), + }, + [34] = { + [anon_sym_PIPE] = ACTIONS(71), + [anon_sym_PIPE_AMP] = ACTIONS(71), + [anon_sym_AMP_AMP] = ACTIONS(71), + [anon_sym_SEMI] = ACTIONS(71), + [anon_sym_LT] = ACTIONS(71), + [anon_sym_GT] = ACTIONS(71), + [anon_sym_LT_AMP] = ACTIONS(71), + [anon_sym_GT_AMP] = ACTIONS(71), + [sym_file_descriptor] = ACTIONS(71), + [anon_sym_LF] = ACTIONS(71), + [anon_sym_SEMI_SEMI] = ACTIONS(71), + }, + [35] = { + [sym_file_descriptor] = ACTIONS(131), + [sym_word] = ACTIONS(133), + }, + [36] = { + [anon_sym_PIPE] = ACTIONS(135), + [anon_sym_PIPE_AMP] = ACTIONS(135), + [anon_sym_AMP_AMP] = ACTIONS(135), + [anon_sym_SEMI] = ACTIONS(135), + [anon_sym_LT] = ACTIONS(135), + [anon_sym_GT] = ACTIONS(135), + [anon_sym_LT_AMP] = ACTIONS(135), + [anon_sym_GT_AMP] = ACTIONS(135), + [sym_file_descriptor] = ACTIONS(135), + [anon_sym_LF] = ACTIONS(135), + [anon_sym_SEMI_SEMI] = ACTIONS(135), + }, + [37] = { + [anon_sym_AMP_AMP] = ACTIONS(137), + [anon_sym_SEMI] = ACTIONS(137), + [anon_sym_LF] = ACTIONS(137), + [anon_sym_SEMI_SEMI] = ACTIONS(137), + }, + [38] = { + [anon_sym_PIPE] = ACTIONS(51), + [anon_sym_PIPE_AMP] = ACTIONS(51), + [anon_sym_AMP_AMP] = ACTIONS(139), + [anon_sym_SEMI] = ACTIONS(139), + [anon_sym_LF] = ACTIONS(139), + [anon_sym_SEMI_SEMI] = ACTIONS(139), + }, + [39] = { + [anon_sym_AMP_AMP] = ACTIONS(139), + [anon_sym_SEMI] = ACTIONS(139), + [anon_sym_LF] = ACTIONS(139), + [anon_sym_SEMI_SEMI] = ACTIONS(139), + }, + [40] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat2] = STATE(46), + [aux_sym_simple_command_repeat3] = STATE(47), + [anon_sym_PIPE] = ACTIONS(141), + [anon_sym_PIPE_AMP] = ACTIONS(141), + [anon_sym_AMP_AMP] = ACTIONS(141), + [anon_sym_SEMI] = ACTIONS(141), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(79), + [anon_sym_LF] = ACTIONS(141), + [anon_sym_SEMI_SEMI] = ACTIONS(141), + }, + [41] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(141), + [anon_sym_PIPE_AMP] = ACTIONS(141), + [anon_sym_AMP_AMP] = ACTIONS(141), + [anon_sym_SEMI] = ACTIONS(141), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(141), + [anon_sym_SEMI_SEMI] = ACTIONS(141), + }, + [42] = { + [anon_sym_PIPE] = ACTIONS(143), + [anon_sym_PIPE_AMP] = ACTIONS(143), + [anon_sym_AMP_AMP] = ACTIONS(143), + [anon_sym_SEMI] = ACTIONS(143), + [anon_sym_LT] = ACTIONS(143), + [anon_sym_GT] = ACTIONS(143), + [anon_sym_LT_AMP] = ACTIONS(143), + [anon_sym_GT_AMP] = ACTIONS(143), + [sym_file_descriptor] = ACTIONS(143), + [sym_word] = ACTIONS(143), + [anon_sym_LF] = ACTIONS(143), + [anon_sym_SEMI_SEMI] = ACTIONS(143), + }, + [43] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(145), + [anon_sym_PIPE_AMP] = ACTIONS(145), + [anon_sym_AMP_AMP] = ACTIONS(145), + [anon_sym_SEMI] = ACTIONS(145), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(145), + [anon_sym_SEMI_SEMI] = ACTIONS(145), + }, + [44] = { + [anon_sym_PIPE] = ACTIONS(115), + [anon_sym_PIPE_AMP] = ACTIONS(115), + [anon_sym_AMP_AMP] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_AMP] = ACTIONS(115), + [anon_sym_GT_AMP] = ACTIONS(115), + [sym_file_descriptor] = ACTIONS(115), + [anon_sym_LF] = ACTIONS(115), + [anon_sym_SEMI_SEMI] = ACTIONS(115), + }, + [45] = { + [anon_sym_PIPE] = ACTIONS(119), + [anon_sym_PIPE_AMP] = ACTIONS(119), + [anon_sym_AMP_AMP] = ACTIONS(119), + [anon_sym_SEMI] = ACTIONS(119), + [anon_sym_LT] = ACTIONS(119), + [anon_sym_GT] = ACTIONS(119), + [anon_sym_LT_AMP] = ACTIONS(119), + [anon_sym_GT_AMP] = ACTIONS(119), + [sym_file_descriptor] = ACTIONS(119), + [anon_sym_LF] = ACTIONS(119), + [anon_sym_SEMI_SEMI] = ACTIONS(119), + }, + [46] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat3] = STATE(48), + [anon_sym_PIPE] = ACTIONS(147), + [anon_sym_PIPE_AMP] = ACTIONS(147), + [anon_sym_AMP_AMP] = ACTIONS(147), + [anon_sym_SEMI] = ACTIONS(147), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(125), + [anon_sym_LF] = ACTIONS(147), + [anon_sym_SEMI_SEMI] = ACTIONS(147), + }, + [47] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(147), + [anon_sym_PIPE_AMP] = ACTIONS(147), + [anon_sym_AMP_AMP] = ACTIONS(147), + [anon_sym_SEMI] = ACTIONS(147), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(147), + [anon_sym_SEMI_SEMI] = ACTIONS(147), + }, + [48] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(149), + [anon_sym_PIPE_AMP] = ACTIONS(149), + [anon_sym_AMP_AMP] = ACTIONS(149), + [anon_sym_SEMI] = ACTIONS(149), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(149), + [anon_sym_SEMI_SEMI] = ACTIONS(149), + }, + [49] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat2] = STATE(57), + [aux_sym_simple_command_repeat3] = STATE(59), + [anon_sym_PIPE] = ACTIONS(151), + [anon_sym_PIPE_AMP] = ACTIONS(151), + [anon_sym_AMP_AMP] = ACTIONS(151), + [anon_sym_SEMI] = ACTIONS(151), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(79), + [anon_sym_LF] = ACTIONS(151), + [anon_sym_SEMI_SEMI] = ACTIONS(151), + }, + [50] = { + [sym_file_descriptor] = ACTIONS(154), + [sym_word] = ACTIONS(156), + }, + [51] = { + [anon_sym_PIPE] = ACTIONS(158), + [anon_sym_PIPE_AMP] = ACTIONS(158), + [anon_sym_AMP_AMP] = ACTIONS(158), + [anon_sym_SEMI] = ACTIONS(158), + [anon_sym_LT] = ACTIONS(161), + [anon_sym_GT] = ACTIONS(161), + [anon_sym_LT_AMP] = ACTIONS(161), + [anon_sym_GT_AMP] = ACTIONS(161), + [sym_file_descriptor] = ACTIONS(158), + [sym_leading_word] = ACTIONS(158), + [anon_sym_LF] = ACTIONS(158), + [anon_sym_SEMI_SEMI] = ACTIONS(158), + }, + [52] = { + [ts_builtin_sym_end] = ACTIONS(165), + [anon_sym_LT] = ACTIONS(168), + [anon_sym_GT] = ACTIONS(168), + [anon_sym_LT_AMP] = ACTIONS(168), + [anon_sym_GT_AMP] = ACTIONS(168), + [sym_file_descriptor] = ACTIONS(168), + [sym_leading_word] = ACTIONS(171), + }, + [53] = { + [anon_sym_PIPE] = ACTIONS(51), + [anon_sym_PIPE_AMP] = ACTIONS(51), + [anon_sym_AMP_AMP] = ACTIONS(174), + [anon_sym_SEMI] = ACTIONS(174), + [anon_sym_LF] = ACTIONS(178), + [anon_sym_SEMI_SEMI] = ACTIONS(178), + }, + [54] = { + [anon_sym_AMP_AMP] = ACTIONS(182), + [anon_sym_SEMI] = ACTIONS(182), + [anon_sym_LF] = ACTIONS(185), + [anon_sym_SEMI_SEMI] = ACTIONS(185), + }, + [55] = { + [anon_sym_LT] = ACTIONS(188), + [anon_sym_GT] = ACTIONS(188), + [anon_sym_LT_AMP] = ACTIONS(188), + [anon_sym_GT_AMP] = ACTIONS(188), + [sym_file_descriptor] = ACTIONS(188), + [sym_leading_word] = ACTIONS(191), + }, + [56] = { + [anon_sym_PIPE] = ACTIONS(194), + [anon_sym_PIPE_AMP] = ACTIONS(194), + [anon_sym_AMP_AMP] = ACTIONS(194), + [anon_sym_SEMI] = ACTIONS(194), + [anon_sym_LT] = ACTIONS(197), + [anon_sym_GT] = ACTIONS(197), + [anon_sym_LT_AMP] = ACTIONS(197), + [anon_sym_GT_AMP] = ACTIONS(197), + [sym_file_descriptor] = ACTIONS(197), + [sym_leading_word] = ACTIONS(191), + [anon_sym_LF] = ACTIONS(194), + [anon_sym_SEMI_SEMI] = ACTIONS(194), + }, + [57] = { + [sym_file_redirect] = STATE(19), + [aux_sym_simple_command_repeat3] = STATE(63), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_PIPE_AMP] = ACTIONS(202), + [anon_sym_AMP_AMP] = ACTIONS(202), + [anon_sym_SEMI] = ACTIONS(202), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [sym_word] = ACTIONS(125), + [anon_sym_LF] = ACTIONS(202), + [anon_sym_SEMI_SEMI] = ACTIONS(202), + }, + [58] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(205), + [anon_sym_PIPE_AMP] = ACTIONS(205), + [anon_sym_AMP_AMP] = ACTIONS(205), + [anon_sym_SEMI] = ACTIONS(205), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(205), + [anon_sym_SEMI_SEMI] = ACTIONS(205), + }, + [59] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_PIPE_AMP] = ACTIONS(202), + [anon_sym_AMP_AMP] = ACTIONS(202), + [anon_sym_SEMI] = ACTIONS(202), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(202), + [anon_sym_SEMI_SEMI] = ACTIONS(202), + }, + [60] = { + [anon_sym_PIPE] = ACTIONS(158), + [anon_sym_PIPE_AMP] = ACTIONS(158), + [anon_sym_AMP_AMP] = ACTIONS(158), + [anon_sym_SEMI] = ACTIONS(158), + [anon_sym_LT] = ACTIONS(158), + [anon_sym_GT] = ACTIONS(158), + [anon_sym_LT_AMP] = ACTIONS(158), + [anon_sym_GT_AMP] = ACTIONS(158), + [sym_file_descriptor] = ACTIONS(158), + [sym_leading_word] = ACTIONS(158), + [anon_sym_LF] = ACTIONS(158), + [anon_sym_SEMI_SEMI] = ACTIONS(158), + }, + [61] = { + [anon_sym_PIPE] = ACTIONS(212), + [anon_sym_PIPE_AMP] = ACTIONS(212), + [anon_sym_AMP_AMP] = ACTIONS(212), + [anon_sym_SEMI] = ACTIONS(212), + [anon_sym_LT] = ACTIONS(212), + [anon_sym_GT] = ACTIONS(212), + [anon_sym_LT_AMP] = ACTIONS(212), + [anon_sym_GT_AMP] = ACTIONS(212), + [sym_file_descriptor] = ACTIONS(212), + [sym_leading_word] = ACTIONS(212), + [anon_sym_LF] = ACTIONS(212), + [anon_sym_SEMI_SEMI] = ACTIONS(212), + }, + [62] = { + [sym_file_descriptor] = ACTIONS(215), + [sym_word] = ACTIONS(217), + }, + [63] = { + [sym_file_redirect] = STATE(36), + [anon_sym_PIPE] = ACTIONS(219), + [anon_sym_PIPE_AMP] = ACTIONS(219), + [anon_sym_AMP_AMP] = ACTIONS(219), + [anon_sym_SEMI] = ACTIONS(219), + [anon_sym_LT] = ACTIONS(39), + [anon_sym_GT] = ACTIONS(39), + [anon_sym_LT_AMP] = ACTIONS(39), + [anon_sym_GT_AMP] = ACTIONS(39), + [sym_file_descriptor] = ACTIONS(41), + [anon_sym_LF] = ACTIONS(219), + [anon_sym_SEMI_SEMI] = ACTIONS(219), + }, + [64] = { + [anon_sym_PIPE] = ACTIONS(115), + [anon_sym_PIPE_AMP] = ACTIONS(115), + [anon_sym_AMP_AMP] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(115), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_AMP] = ACTIONS(115), + [anon_sym_GT_AMP] = ACTIONS(115), + [sym_file_descriptor] = ACTIONS(115), + [sym_leading_word] = ACTIONS(115), + [anon_sym_LF] = ACTIONS(115), + [anon_sym_SEMI_SEMI] = ACTIONS(115), + }, + [65] = { + [anon_sym_PIPE] = ACTIONS(119), + [anon_sym_PIPE_AMP] = ACTIONS(119), + [anon_sym_AMP_AMP] = ACTIONS(119), + [anon_sym_SEMI] = ACTIONS(119), + [anon_sym_LT] = ACTIONS(119), + [anon_sym_GT] = ACTIONS(119), + [anon_sym_LT_AMP] = ACTIONS(119), + [anon_sym_GT_AMP] = ACTIONS(119), + [sym_file_descriptor] = ACTIONS(119), + [sym_leading_word] = ACTIONS(119), + [anon_sym_LF] = ACTIONS(119), + [anon_sym_SEMI_SEMI] = ACTIONS(119), }, }; static TSParseActionEntry ts_parse_actions[] = { [0] = {.count = 0, .reusable = false, .depends_on_lookahead = false}, [1] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(0), - [3] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, RECOVER(27), - [5] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(12), - [7] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(13), - [9] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(11), - [11] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(14), - [13] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_program, 0), - [15] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(2), - [17] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(10), - [19] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 1, .rename_sequence_id = 1), - [21] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(11), - [23] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, ACCEPT_INPUT(), - [25] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), - [27] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 1), - [29] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(12), - [31] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(13), - [33] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(14), - [35] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 1), - [37] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_program, 1), - [39] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(16), - [41] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 2), - [43] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(18), - [45] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(20), - [47] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_command, 2), - [49] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_command, 2), - [51] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 2), - [53] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 2), - [55] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(24), - [57] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 3), - [59] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 2), - [61] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat2, 1, .rename_sequence_id = 4), - [63] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 5), - [65] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(25), - [67] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_environment_variable_assignment, 3, .rename_sequence_id = 6), - [69] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), - [71] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), - [73] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 7), - [75] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat2, 2, .rename_sequence_id = 8), - [77] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 4, .rename_sequence_id = 9), - [79] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 2), REDUCE(sym_simple_command, 3, .rename_sequence_id = 7), - [82] = {.count = 2, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), REDUCE(aux_sym_program_repeat1, 2), - [85] = {.count = 2, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 1), REDUCE(aux_sym_program_repeat1, 2), - [88] = {.count = 3, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), REDUCE(sym_list, 3), SHIFT(13), - [92] = {.count = 3, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), REDUCE(sym_list, 3), SHIFT(14), - [96] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), SHIFT(13), - [99] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), SHIFT(14), - [102] = {.count = 2, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 1), REDUCE(aux_sym_simple_command_repeat1, 2), - [105] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 5), REDUCE(sym_simple_command, 4, .rename_sequence_id = 9), + [3] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, RECOVER(49), + [5] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(21), + [7] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(22), + [9] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(16), + [11] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(50), + [13] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(51), + [15] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, RECOVER(23), + [17] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_program, 0), + [19] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(2), + [21] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(3), + [23] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(4), + [25] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(12), + [27] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(13), + [29] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(14), + [31] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(14), + [33] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(15), + [35] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 1, .rename_sequence_id = 1), + [37] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(16), + [39] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(17), + [41] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(18), + [43] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, ACCEPT_INPUT(), + [45] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), + [47] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 1), + [49] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), + [51] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(21), + [53] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(22), + [55] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(23), + [57] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 1), + [59] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat1, 1), + [61] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_program, 1), + [63] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(25), + [65] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_file_redirect, 2), + [67] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 2), + [69] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_file_redirect, 2, .rename_sequence_id = 2), + [71] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 2, .rename_sequence_id = 2), + [73] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(27), + [75] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(28), + [77] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 3), + [79] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(29), + [81] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(32), + [83] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(33), + [85] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(34), + [87] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(35), + [89] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(35), + [91] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat3, 1), + [93] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_command, 2), + [95] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_command, 2), + [97] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_command, 2), + [99] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 2), + [101] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 2), + [103] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 2), + [105] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(40), + [107] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 4), + [109] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 2), + [111] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat1, 2), + [113] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_file_redirect, 3), + [115] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 3), + [117] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_file_redirect, 3, .rename_sequence_id = 5), + [119] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 3, .rename_sequence_id = 5), + [121] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat2, 1, .rename_sequence_id = 6), + [123] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 7), + [125] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(42), + [127] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, REDUCE(sym_environment_variable_assignment, 3, .rename_sequence_id = 8), + [129] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_environment_variable_assignment, 3, .rename_sequence_id = 8), + [131] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(44), + [133] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(45), + [135] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat3, 2), + [137] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), + [139] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), + [141] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 9), + [143] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat2, 2, .rename_sequence_id = 10), + [145] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 4, .rename_sequence_id = 11), + [147] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 4, .rename_sequence_id = 12), + [149] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 5, .rename_sequence_id = 13), + [151] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 3), REDUCE(sym_simple_command, 3, .rename_sequence_id = 9), + [154] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(60), + [156] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(61), + [158] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 2), REDUCE(sym_file_redirect, 3), + [161] = {.count = 3, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 2), REDUCE(sym_file_redirect, 3), SHIFT(62), + [165] = {.count = 2, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), REDUCE(aux_sym_program_repeat1, 2), + [168] = {.count = 2, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_program_repeat1, 1), REDUCE(aux_sym_program_repeat1, 2), + [171] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_program_repeat1, 1), REDUCE(aux_sym_program_repeat1, 2), + [174] = {.count = 3, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), REDUCE(sym_list, 3), SHIFT(22), + [178] = {.count = 3, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_pipeline, 3), REDUCE(sym_list, 3), SHIFT(23), + [182] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), SHIFT(22), + [185] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_list, 3), SHIFT(23), + [188] = {.count = 2, .reusable = true, .depends_on_lookahead = true}, REDUCE(aux_sym_simple_command_repeat1, 1), REDUCE(aux_sym_simple_command_repeat1, 2), + [191] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat1, 1), REDUCE(aux_sym_simple_command_repeat1, 2), + [194] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat3, 1), REDUCE(aux_sym_simple_command_repeat3, 2), + [197] = {.count = 4, .reusable = false, .depends_on_lookahead = false}, REDUCE(aux_sym_simple_command_repeat1, 1), REDUCE(aux_sym_simple_command_repeat3, 1), REDUCE(aux_sym_simple_command_repeat1, 2), REDUCE(aux_sym_simple_command_repeat3, 2), + [202] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 3, .rename_sequence_id = 7), REDUCE(sym_simple_command, 4, .rename_sequence_id = 12), + [205] = {.count = 6, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 2, .rename_sequence_id = 3), REDUCE(sym_simple_command, 3, .rename_sequence_id = 9), REDUCE(sym_simple_command, 3, .rename_sequence_id = 7), REDUCE(sym_simple_command, 4, .rename_sequence_id = 12), REDUCE(sym_simple_command, 4, .rename_sequence_id = 11), REDUCE(sym_simple_command, 5, .rename_sequence_id = 13), + [212] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_file_redirect, 2, .rename_sequence_id = 2), REDUCE(sym_file_redirect, 3, .rename_sequence_id = 5), + [215] = {.count = 1, .reusable = true, .depends_on_lookahead = true}, SHIFT(64), + [217] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(65), + [219] = {.count = 2, .reusable = false, .depends_on_lookahead = false}, REDUCE(sym_simple_command, 4, .rename_sequence_id = 11), REDUCE(sym_simple_command, 5, .rename_sequence_id = 13), }; const TSLanguage *tree_sitter_bash() {