#include <tree_sitter/parser.h>

#if defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif

#define LANGUAGE_VERSION 14
#define STATE_COUNT 31
#define LARGE_STATE_COUNT 2
#define SYMBOL_COUNT 30
#define ALIAS_COUNT 0
#define TOKEN_COUNT 20
#define EXTERNAL_TOKEN_COUNT 0
#define FIELD_COUNT 0
#define MAX_ALIAS_SEQUENCE_LENGTH 8
#define PRODUCTION_ID_COUNT 1

enum
{
  anon_sym_LF = 1,
  anon_sym_pick = 2,
  anon_sym_p = 3,
  anon_sym_watch = 4,
  anon_sym_w = 5,
  anon_sym_drop = 6,
  anon_sym_d = 7,
  anon_sym_url = 8,
  anon_sym_u = 9,
  sym_id = 10,
  aux_sym_title_token1 = 11,
  aux_sym_date_token1 = 12,
  anon_sym_LBRACK = 13,
  anon_sym_NoDuration = 14,
  aux_sym_duration_token1 = 15,
  aux_sym_duration_token2 = 16,
  anon_sym_RBRACK = 17,
  sym_comment = 18,
  sym_quote = 19,
  sym_source_file = 20,
  sym_line = 21,
  sym_command = 22,
  sym_title = 23,
  sym_date = 24,
  sym_author = 25,
  sym_duration = 26,
  sym_url = 27,
  sym__q = 28,
  aux_sym_source_file_repeat1 = 29,
};

static const char *const ts_symbol_names[] = {
  [ts_builtin_sym_end] = "end",
  [anon_sym_LF] = "\n",
  [anon_sym_pick] = "pick",
  [anon_sym_p] = "p",
  [anon_sym_watch] = "watch",
  [anon_sym_w] = "w",
  [anon_sym_drop] = "drop",
  [anon_sym_d] = "d",
  [anon_sym_url] = "url",
  [anon_sym_u] = "u",
  [sym_id] = "id",
  [aux_sym_title_token1] = "title_token1",
  [aux_sym_date_token1] = "date_token1",
  [anon_sym_LBRACK] = "[",
  [anon_sym_NoDuration] = "No Duration",
  [aux_sym_duration_token1] = "duration_token1",
  [aux_sym_duration_token2] = "duration_token2",
  [anon_sym_RBRACK] = "]",
  [sym_comment] = "comment",
  [sym_quote] = "quote",
  [sym_source_file] = "source_file",
  [sym_line] = "line",
  [sym_command] = "command",
  [sym_title] = "title",
  [sym_date] = "date",
  [sym_author] = "author",
  [sym_duration] = "duration",
  [sym_url] = "url",
  [sym__q] = "_q",
  [aux_sym_source_file_repeat1] = "source_file_repeat1",
};

static const TSSymbol ts_symbol_map[] = {
  [ts_builtin_sym_end] = ts_builtin_sym_end,
  [anon_sym_LF] = anon_sym_LF,
  [anon_sym_pick] = anon_sym_pick,
  [anon_sym_p] = anon_sym_p,
  [anon_sym_watch] = anon_sym_watch,
  [anon_sym_w] = anon_sym_w,
  [anon_sym_drop] = anon_sym_drop,
  [anon_sym_d] = anon_sym_d,
  [anon_sym_url] = anon_sym_url,
  [anon_sym_u] = anon_sym_u,
  [sym_id] = sym_id,
  [aux_sym_title_token1] = aux_sym_title_token1,
  [aux_sym_date_token1] = aux_sym_date_token1,
  [anon_sym_LBRACK] = anon_sym_LBRACK,
  [anon_sym_NoDuration] = anon_sym_NoDuration,
  [aux_sym_duration_token1] = aux_sym_duration_token1,
  [aux_sym_duration_token2] = aux_sym_duration_token2,
  [anon_sym_RBRACK] = anon_sym_RBRACK,
  [sym_comment] = sym_comment,
  [sym_quote] = sym_quote,
  [sym_source_file] = sym_source_file,
  [sym_line] = sym_line,
  [sym_command] = sym_command,
  [sym_title] = sym_title,
  [sym_date] = sym_date,
  [sym_author] = sym_author,
  [sym_duration] = sym_duration,
  [sym_url] = sym_url,
  [sym__q] = sym__q,
  [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1,
};

static const TSSymbolMetadata ts_symbol_metadata[] = {
  [ts_builtin_sym_end] = {
    .visible = false,
    .named = true,
  },
  [anon_sym_LF] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_pick] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_p] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_watch] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_w] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_drop] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_d] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_url] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_u] = {
    .visible = true,
    .named = false,
  },
  [sym_id] = {
    .visible = true,
    .named = true,
  },
  [aux_sym_title_token1] = {
    .visible = false,
    .named = false,
  },
  [aux_sym_date_token1] = {
    .visible = false,
    .named = false,
  },
  [anon_sym_LBRACK] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_NoDuration] = {
    .visible = true,
    .named = false,
  },
  [aux_sym_duration_token1] = {
    .visible = false,
    .named = false,
  },
  [aux_sym_duration_token2] = {
    .visible = false,
    .named = false,
  },
  [anon_sym_RBRACK] = {
    .visible = true,
    .named = false,
  },
  [sym_comment] = {
    .visible = true,
    .named = true,
  },
  [sym_quote] = {
    .visible = true,
    .named = true,
  },
  [sym_source_file] = {
    .visible = true,
    .named = true,
  },
  [sym_line] = {
    .visible = true,
    .named = true,
  },
  [sym_command] = {
    .visible = true,
    .named = true,
  },
  [sym_title] = {
    .visible = true,
    .named = true,
  },
  [sym_date] = {
    .visible = true,
    .named = true,
  },
  [sym_author] = {
    .visible = true,
    .named = true,
  },
  [sym_duration] = {
    .visible = true,
    .named = true,
  },
  [sym_url] = {
    .visible = true,
    .named = true,
  },
  [sym__q] = {
    .visible = false,
    .named = true,
  },
  [aux_sym_source_file_repeat1] = {
    .visible = false,
    .named = false,
  },
};

static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT]
                                        [MAX_ALIAS_SEQUENCE_LENGTH]
    = {
        [0] = { 0 },
      };

static const uint16_t ts_non_terminal_alias_map[] = {
  0,
};

static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
  [0] = 0,   [1] = 1,   [2] = 2,   [3] = 3,   [4] = 4,   [5] = 5,   [6] = 6,
  [7] = 7,   [8] = 8,   [9] = 9,   [10] = 10, [11] = 11, [12] = 12, [13] = 13,
  [14] = 14, [15] = 15, [16] = 16, [17] = 17, [18] = 18, [19] = 19, [20] = 20,
  [21] = 21, [22] = 22, [23] = 23, [24] = 24, [25] = 25, [26] = 26, [27] = 27,
  [28] = 28, [29] = 29, [30] = 30,
};

static bool
ts_lex (TSLexer *lexer, TSStateId state)
{
  START_LEXER ();
  eof = lexer->eof (lexer);
  switch (state)
    {
    case 0:
      if (eof)
        ADVANCE (47);
      if (lookahead == '"')
        ADVANCE (74);
      if (lookahead == '#')
        ADVANCE (73);
      if (lookahead == 'N')
        ADVANCE (30);
      if (lookahead == '[')
        ADVANCE (68);
      if (lookahead == '\\')
        SKIP (46)
      if (lookahead == ']')
        ADVANCE (72);
      if (lookahead == 'd')
        ADVANCE (54);
      if (lookahead == 'p')
        ADVANCE (50);
      if (lookahead == 'u')
        ADVANCE (56);
      if (lookahead == 'w')
        ADVANCE (52);
      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
          || lookahead == ' ')
        SKIP (0)
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (60);
      END_STATE ();
    case 1:
      if (lookahead == '\n')
        SKIP (14)
      END_STATE ();
    case 2:
      if (lookahead == '\n')
        SKIP (14)
      if (lookahead == '\r')
        SKIP (1)
      END_STATE ();
    case 3:
      if (lookahead == '\n')
        SKIP (16)
      END_STATE ();
    case 4:
      if (lookahead == '\n')
        SKIP (16)
      if (lookahead == '\r')
        SKIP (3)
      END_STATE ();
    case 5:
      if (lookahead == '\n')
        SKIP (7)
      END_STATE ();
    case 6:
      if (lookahead == '\n')
        SKIP (7)
      if (lookahead == '\r')
        SKIP (5)
      END_STATE ();
    case 7:
      if (lookahead == '\n')
        ADVANCE (48);
      if (lookahead == '\\')
        SKIP (6)
      if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ')
        SKIP (7)
      END_STATE ();
    case 8:
      if (lookahead == ' ')
        ADVANCE (13);
      END_STATE ();
    case 9:
      if (lookahead == ' ')
        ADVANCE (39);
      END_STATE ();
    case 10:
      if (lookahead == ' ')
        ADVANCE (40);
      END_STATE ();
    case 11:
      if (lookahead == '-')
        ADVANCE (43);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (24);
      END_STATE ();
    case 12:
      if (lookahead == '-')
        ADVANCE (44);
      END_STATE ();
    case 13:
      if (lookahead == 'D')
        ADVANCE (38);
      END_STATE ();
    case 14:
      if (lookahead == 'N')
        ADVANCE (30);
      if (lookahead == '\\')
        SKIP (2)
      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
          || lookahead == ' ')
        SKIP (14)
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (23);
      END_STATE ();
    case 15:
      if (lookahead == '\\')
        ADVANCE (63);
      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
          || lookahead == ' ')
        ADVANCE (65);
      if (lookahead != 0 && lookahead != '"')
        ADVANCE (66);
      END_STATE ();
    case 16:
      if (lookahead == '\\')
        SKIP (4)
      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
          || lookahead == ' ')
        SKIP (16)
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (62);
      END_STATE ();
    case 17:
      if (lookahead == 'a')
        ADVANCE (36);
      END_STATE ();
    case 18:
      if (lookahead == 'c')
        ADVANCE (26);
      END_STATE ();
    case 19:
      if (lookahead == 'c')
        ADVANCE (20);
      END_STATE ();
    case 20:
      if (lookahead == 'h')
        ADVANCE (51);
      END_STATE ();
    case 21:
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (11);
      END_STATE ();
    case 22:
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (21);
      END_STATE ();
    case 23:
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (22);
      END_STATE ();
    case 24:
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (24);
      END_STATE ();
    case 25:
      if (lookahead == 'i')
        ADVANCE (32);
      END_STATE ();
    case 26:
      if (lookahead == 'k')
        ADVANCE (49);
      END_STATE ();
    case 27:
      if (lookahead == 'l')
        ADVANCE (55);
      END_STATE ();
    case 28:
      if (lookahead == 'm')
        ADVANCE (71);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (28);
      END_STATE ();
    case 29:
      if (lookahead == 'n')
        ADVANCE (69);
      END_STATE ();
    case 30:
      if (lookahead == 'o')
        ADVANCE (8);
      END_STATE ();
    case 31:
      if (lookahead == 'o')
        ADVANCE (33);
      END_STATE ();
    case 32:
      if (lookahead == 'o')
        ADVANCE (29);
      END_STATE ();
    case 33:
      if (lookahead == 'p')
        ADVANCE (53);
      END_STATE ();
    case 34:
      if (lookahead == 'r')
        ADVANCE (17);
      END_STATE ();
    case 35:
      if (lookahead == 's')
        ADVANCE (70);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (35);
      END_STATE ();
    case 36:
      if (lookahead == 't')
        ADVANCE (25);
      END_STATE ();
    case 37:
      if (lookahead == 't')
        ADVANCE (19);
      END_STATE ();
    case 38:
      if (lookahead == 'u')
        ADVANCE (34);
      END_STATE ();
    case 39:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (28);
      END_STATE ();
    case 40:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (35);
      END_STATE ();
    case 41:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (12);
      END_STATE ();
    case 42:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (67);
      END_STATE ();
    case 43:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (41);
      END_STATE ();
    case 44:
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (42);
      END_STATE ();
    case 45:
      if (eof)
        ADVANCE (47);
      if (lookahead == '\n')
        SKIP (0)
      END_STATE ();
    case 46:
      if (eof)
        ADVANCE (47);
      if (lookahead == '\n')
        SKIP (0)
      if (lookahead == '\r')
        SKIP (45)
      END_STATE ();
    case 47:
      ACCEPT_TOKEN (ts_builtin_sym_end);
      END_STATE ();
    case 48:
      ACCEPT_TOKEN (anon_sym_LF);
      if (lookahead == '\n')
        ADVANCE (48);
      END_STATE ();
    case 49:
      ACCEPT_TOKEN (anon_sym_pick);
      END_STATE ();
    case 50:
      ACCEPT_TOKEN (anon_sym_p);
      if (lookahead == 'i')
        ADVANCE (18);
      END_STATE ();
    case 51:
      ACCEPT_TOKEN (anon_sym_watch);
      END_STATE ();
    case 52:
      ACCEPT_TOKEN (anon_sym_w);
      if (lookahead == 'a')
        ADVANCE (37);
      END_STATE ();
    case 53:
      ACCEPT_TOKEN (anon_sym_drop);
      END_STATE ();
    case 54:
      ACCEPT_TOKEN (anon_sym_d);
      if (lookahead == 'r')
        ADVANCE (31);
      END_STATE ();
    case 55:
      ACCEPT_TOKEN (anon_sym_url);
      END_STATE ();
    case 56:
      ACCEPT_TOKEN (anon_sym_u);
      if (lookahead == 'r')
        ADVANCE (27);
      END_STATE ();
    case 57:
      ACCEPT_TOKEN (sym_id);
      if (lookahead == '-')
        ADVANCE (43);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (61);
      END_STATE ();
    case 58:
      ACCEPT_TOKEN (sym_id);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (57);
      END_STATE ();
    case 59:
      ACCEPT_TOKEN (sym_id);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (58);
      END_STATE ();
    case 60:
      ACCEPT_TOKEN (sym_id);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (59);
      END_STATE ();
    case 61:
      ACCEPT_TOKEN (sym_id);
      if (lookahead == 'h')
        ADVANCE (9);
      if (lookahead == 'm')
        ADVANCE (10);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (61);
      END_STATE ();
    case 62:
      ACCEPT_TOKEN (sym_id);
      if (('0' <= lookahead && lookahead <= '9'))
        ADVANCE (62);
      END_STATE ();
    case 63:
      ACCEPT_TOKEN (aux_sym_title_token1);
      if (lookahead == '\n')
        ADVANCE (65);
      if (lookahead == '\r')
        ADVANCE (64);
      if (lookahead != 0 && lookahead != '"')
        ADVANCE (66);
      END_STATE ();
    case 64:
      ACCEPT_TOKEN (aux_sym_title_token1);
      if (lookahead == '\n')
        ADVANCE (65);
      if (lookahead != 0 && lookahead != '"')
        ADVANCE (66);
      END_STATE ();
    case 65:
      ACCEPT_TOKEN (aux_sym_title_token1);
      if (lookahead == '\\')
        ADVANCE (63);
      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
          || lookahead == ' ')
        ADVANCE (65);
      if (lookahead != 0 && lookahead != '"')
        ADVANCE (66);
      END_STATE ();
    case 66:
      ACCEPT_TOKEN (aux_sym_title_token1);
      if (lookahead != 0 && lookahead != '"')
        ADVANCE (66);
      END_STATE ();
    case 67:
      ACCEPT_TOKEN (aux_sym_date_token1);
      END_STATE ();
    case 68:
      ACCEPT_TOKEN (anon_sym_LBRACK);
      END_STATE ();
    case 69:
      ACCEPT_TOKEN (anon_sym_NoDuration);
      END_STATE ();
    case 70:
      ACCEPT_TOKEN (aux_sym_duration_token1);
      END_STATE ();
    case 71:
      ACCEPT_TOKEN (aux_sym_duration_token2);
      END_STATE ();
    case 72:
      ACCEPT_TOKEN (anon_sym_RBRACK);
      END_STATE ();
    case 73:
      ACCEPT_TOKEN (sym_comment);
      if (lookahead != 0 && lookahead != '\n')
        ADVANCE (73);
      END_STATE ();
    case 74:
      ACCEPT_TOKEN (sym_quote);
      END_STATE ();
    default:
      return false;
    }
}

static const TSLexMode ts_lex_modes[STATE_COUNT] = {
  [0] = { .lex_state = 0 },   [1] = { .lex_state = 0 },
  [2] = { .lex_state = 0 },   [3] = { .lex_state = 0 },
  [4] = { .lex_state = 0 },   [5] = { .lex_state = 0 },
  [6] = { .lex_state = 0 },   [7] = { .lex_state = 0 },
  [8] = { .lex_state = 14 },  [9] = { .lex_state = 0 },
  [10] = { .lex_state = 0 },  [11] = { .lex_state = 0 },
  [12] = { .lex_state = 0 },  [13] = { .lex_state = 0 },
  [14] = { .lex_state = 0 },  [15] = { .lex_state = 0 },
  [16] = { .lex_state = 15 }, [17] = { .lex_state = 0 },
  [18] = { .lex_state = 0 },  [19] = { .lex_state = 16 },
  [20] = { .lex_state = 0 },  [21] = { .lex_state = 7 },
  [22] = { .lex_state = 15 }, [23] = { .lex_state = 14 },
  [24] = { .lex_state = 0 },  [25] = { .lex_state = 15 },
  [26] = { .lex_state = 16 }, [27] = { .lex_state = 0 },
  [28] = { .lex_state = 7 },  [29] = { .lex_state = 0 },
  [30] = { .lex_state = 0 },
};

static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
  [0] = {
    [ts_builtin_sym_end] = ACTIONS(1),
    [anon_sym_pick] = ACTIONS(1),
    [anon_sym_p] = ACTIONS(1),
    [anon_sym_watch] = ACTIONS(1),
    [anon_sym_w] = ACTIONS(1),
    [anon_sym_drop] = ACTIONS(1),
    [anon_sym_d] = ACTIONS(1),
    [anon_sym_url] = ACTIONS(1),
    [anon_sym_u] = ACTIONS(1),
    [sym_id] = ACTIONS(1),
    [aux_sym_date_token1] = ACTIONS(1),
    [anon_sym_LBRACK] = ACTIONS(1),
    [anon_sym_NoDuration] = ACTIONS(1),
    [aux_sym_duration_token1] = ACTIONS(1),
    [aux_sym_duration_token2] = ACTIONS(1),
    [anon_sym_RBRACK] = ACTIONS(1),
    [sym_comment] = ACTIONS(1),
    [sym_quote] = ACTIONS(1),
  },
  [1] = {
    [sym_source_file] = STATE(29),
    [sym_line] = STATE(2),
    [sym_command] = STATE(26),
    [aux_sym_source_file_repeat1] = STATE(2),
    [ts_builtin_sym_end] = ACTIONS(3),
    [anon_sym_pick] = ACTIONS(5),
    [anon_sym_p] = ACTIONS(7),
    [anon_sym_watch] = ACTIONS(5),
    [anon_sym_w] = ACTIONS(7),
    [anon_sym_drop] = ACTIONS(5),
    [anon_sym_d] = ACTIONS(7),
    [anon_sym_url] = ACTIONS(5),
    [anon_sym_u] = ACTIONS(7),
    [sym_comment] = ACTIONS(9),
  },
};

static const uint16_t ts_small_parse_table[] = {
  [0] = 6,
  ACTIONS (11),
  1,
  ts_builtin_sym_end,
  ACTIONS (13),
  1,
  sym_comment,
  STATE (26),
  1,
  sym_command,
  STATE (3),
  2,
  sym_line,
  aux_sym_source_file_repeat1,
  ACTIONS (5),
  4,
  anon_sym_pick,
  anon_sym_watch,
  anon_sym_drop,
  anon_sym_url,
  ACTIONS (7),
  4,
  anon_sym_p,
  anon_sym_w,
  anon_sym_d,
  anon_sym_u,
  [26] = 6,
  ACTIONS (15),
  1,
  ts_builtin_sym_end,
  ACTIONS (23),
  1,
  sym_comment,
  STATE (26),
  1,
  sym_command,
  STATE (3),
  2,
  sym_line,
  aux_sym_source_file_repeat1,
  ACTIONS (17),
  4,
  anon_sym_pick,
  anon_sym_watch,
  anon_sym_drop,
  anon_sym_url,
  ACTIONS (20),
  4,
  anon_sym_p,
  anon_sym_w,
  anon_sym_d,
  anon_sym_u,
  [52] = 2,
  ACTIONS (28),
  4,
  anon_sym_p,
  anon_sym_w,
  anon_sym_d,
  anon_sym_u,
  ACTIONS (26),
  6,
  ts_builtin_sym_end,
  anon_sym_pick,
  anon_sym_watch,
  anon_sym_drop,
  anon_sym_url,
  sym_comment,
  [67] = 3,
  ACTIONS (30),
  1,
  sym_quote,
  STATE (21),
  1,
  sym_url,
  STATE (22),
  1,
  sym__q,
  [77] = 3,
  ACTIONS (32),
  1,
  sym_quote,
  STATE (7),
  1,
  sym_title,
  STATE (25),
  1,
  sym__q,
  [87] = 3,
  ACTIONS (34),
  1,
  sym_quote,
  STATE (9),
  1,
  sym_date,
  STATE (23),
  1,
  sym__q,
  [97] = 1,
  ACTIONS (36),
  3,
  anon_sym_NoDuration,
  aux_sym_duration_token1,
  aux_sym_duration_token2,
  [103] = 3,
  ACTIONS (38),
  1,
  sym_quote,
  STATE (10),
  1,
  sym_author,
  STATE (16),
  1,
  sym__q,
  [113] = 3,
  ACTIONS (40),
  1,
  sym_quote,
  STATE (5),
  1,
  sym_duration,
  STATE (18),
  1,
  sym__q,
  [123] = 2,
  ACTIONS (42),
  1,
  sym_quote,
  STATE (30),
  1,
  sym__q,
  [130] = 2,
  ACTIONS (44),
  1,
  sym_quote,
  STATE (28),
  1,
  sym__q,
  [137] = 2,
  ACTIONS (46),
  1,
  sym_quote,
  STATE (24),
  1,
  sym__q,
  [144] = 2,
  ACTIONS (48),
  1,
  sym_quote,
  STATE (17),
  1,
  sym__q,
  [151] = 2,
  ACTIONS (50),
  1,
  sym_quote,
  STATE (20),
  1,
  sym__q,
  [158] = 1,
  ACTIONS (52),
  1,
  aux_sym_title_token1,
  [162] = 1,
  ACTIONS (54),
  1,
  sym_quote,
  [166] = 1,
  ACTIONS (56),
  1,
  anon_sym_LBRACK,
  [170] = 1,
  ACTIONS (58),
  1,
  sym_id,
  [174] = 1,
  ACTIONS (60),
  1,
  sym_quote,
  [178] = 1,
  ACTIONS (62),
  1,
  anon_sym_LF,
  [182] = 1,
  ACTIONS (64),
  1,
  aux_sym_title_token1,
  [186] = 1,
  ACTIONS (66),
  1,
  aux_sym_date_token1,
  [190] = 1,
  ACTIONS (68),
  1,
  sym_quote,
  [194] = 1,
  ACTIONS (70),
  1,
  aux_sym_title_token1,
  [198] = 1,
  ACTIONS (72),
  1,
  sym_id,
  [202] = 1,
  ACTIONS (74),
  1,
  anon_sym_RBRACK,
  [206] = 1,
  ACTIONS (76),
  1,
  anon_sym_LF,
  [210] = 1,
  ACTIONS (78),
  1,
  ts_builtin_sym_end,
  [214] = 1,
  ACTIONS (80),
  1,
  sym_quote,
};

static const uint32_t ts_small_parse_table_map[] = {
  [SMALL_STATE (2)] = 0,    [SMALL_STATE (3)] = 26,   [SMALL_STATE (4)] = 52,
  [SMALL_STATE (5)] = 67,   [SMALL_STATE (6)] = 77,   [SMALL_STATE (7)] = 87,
  [SMALL_STATE (8)] = 97,   [SMALL_STATE (9)] = 103,  [SMALL_STATE (10)] = 113,
  [SMALL_STATE (11)] = 123, [SMALL_STATE (12)] = 130, [SMALL_STATE (13)] = 137,
  [SMALL_STATE (14)] = 144, [SMALL_STATE (15)] = 151, [SMALL_STATE (16)] = 158,
  [SMALL_STATE (17)] = 162, [SMALL_STATE (18)] = 166, [SMALL_STATE (19)] = 170,
  [SMALL_STATE (20)] = 174, [SMALL_STATE (21)] = 178, [SMALL_STATE (22)] = 182,
  [SMALL_STATE (23)] = 186, [SMALL_STATE (24)] = 190, [SMALL_STATE (25)] = 194,
  [SMALL_STATE (26)] = 198, [SMALL_STATE (27)] = 202, [SMALL_STATE (28)] = 206,
  [SMALL_STATE (29)] = 210, [SMALL_STATE (30)] = 214,
};

static const TSParseActionEntry ts_parse_actions[] = {
  [0] = { .entry = { .count = 0, .reusable = false } },
  [1] = { .entry = { .count = 1, .reusable = false } },
  RECOVER (),
  [3] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_source_file, 0),
  [5] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (19),
  [7] = { .entry = { .count = 1, .reusable = false } },
  SHIFT (19),
  [9] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (2),
  [11] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_source_file, 1),
  [13] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (3),
  [15] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (aux_sym_source_file_repeat1, 2),
  [17] = { .entry = { .count = 2, .reusable = true } },
  REDUCE (aux_sym_source_file_repeat1, 2),
  SHIFT_REPEAT (19),
  [20] = { .entry = { .count = 2, .reusable = false } },
  REDUCE (aux_sym_source_file_repeat1, 2),
  SHIFT_REPEAT (19),
  [23] = { .entry = { .count = 2, .reusable = true } },
  REDUCE (aux_sym_source_file_repeat1, 2),
  SHIFT_REPEAT (3),
  [26] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_line, 8),
  [28] = { .entry = { .count = 1, .reusable = false } },
  REDUCE (sym_line, 8),
  [30] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (22),
  [32] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (25),
  [34] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (23),
  [36] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (27),
  [38] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (16),
  [40] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (18),
  [42] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (30),
  [44] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (28),
  [46] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (24),
  [48] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (17),
  [50] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (20),
  [52] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (13),
  [54] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_title, 3),
  [56] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (8),
  [58] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_command, 1),
  [60] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_date, 3),
  [62] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (4),
  [64] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (12),
  [66] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (15),
  [68] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_author, 3),
  [70] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (14),
  [72] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (6),
  [74] = { .entry = { .count = 1, .reusable = true } },
  SHIFT (11),
  [76] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_url, 3),
  [78] = { .entry = { .count = 1, .reusable = true } },
  ACCEPT_INPUT (),
  [80] = { .entry = { .count = 1, .reusable = true } },
  REDUCE (sym_duration, 5),
};

#ifdef __cplusplus
extern "C"
{
#endif
#ifdef _WIN32
#define extern __declspec (dllexport)
#endif

  extern const TSLanguage *
  tree_sitter_yts (void)
  {
    static const TSLanguage language = {
      .version = LANGUAGE_VERSION,
      .symbol_count = SYMBOL_COUNT,
      .alias_count = ALIAS_COUNT,
      .token_count = TOKEN_COUNT,
      .external_token_count = EXTERNAL_TOKEN_COUNT,
      .state_count = STATE_COUNT,
      .large_state_count = LARGE_STATE_COUNT,
      .production_id_count = PRODUCTION_ID_COUNT,
      .field_count = FIELD_COUNT,
      .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH,
      .parse_table = &ts_parse_table[0][0],
      .small_parse_table = ts_small_parse_table,
      .small_parse_table_map = ts_small_parse_table_map,
      .parse_actions = ts_parse_actions,
      .symbol_names = ts_symbol_names,
      .symbol_metadata = ts_symbol_metadata,
      .public_symbol_map = ts_symbol_map,
      .alias_map = ts_non_terminal_alias_map,
      .alias_sequences = &ts_alias_sequences[0][0],
      .lex_modes = ts_lex_modes,
      .lex_fn = ts_lex,
      .primary_state_ids = ts_primary_state_ids,
    };
    return &language;
  }
#ifdef __cplusplus
}
#endif