1',
        symbols: [
          'FIELD_VALUE$ebnf$2$subexpression$1$ebnf$1',
          'INPUT_CHARACTER',
        ],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'FIELD_VALUE$ebnf$2$subexpression$1',
        symbols: [
          '__',
          'FIELD_VALUE$ebnf$2$subexpression$1$subexpression$1',
          'FIELD_VALUE$ebnf$2$subexpression$1$ebnf$1',
        ],
      },
      {
        name: 'FIELD_VALUE$ebnf$2',
        symbols: ['FIELD_VALUE$ebnf$2$subexpression$1'],
        postprocess: id,
      },
      {
        name: 'FIELD_VALUE$ebnf$2',
        symbols: [],
        postprocess: function (d) {
          return null;
        },
      },
      {
        name: 'FIELD_VALUE',
        symbols: ['FIELD_VALUE$ebnf$1', 'FIELD_VALUE$ebnf$2'],
        postprocess: fieldValue,
      },
      {
        name: 'FIELD_VALUE',
        symbols: ['NEW_LINE_WITH_INDENT', 'FIELD_VALUE'],
        postprocess: nth(1),
      },
      { name: 'MESSAGE_BODY', symbols: ['MESSAGES'], postprocess: messageBody },
      { name: 'MESSAGES$ebnf$1', symbols: [] },
      {
        name: 'MESSAGES$ebnf$1$subexpression$1',
        symbols: ['MESSAGE_LINE', 'NEW_LINE'],
        postprocess: id,
      },
      {
        name: 'MESSAGES$ebnf$1',
        symbols: ['MESSAGES$ebnf$1', 'MESSAGES$ebnf$1$subexpression$1'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      { name: 'MESSAGES', symbols: ['MESSAGES$ebnf$1'], postprocess: messages },
      { name: 'MESSAGE_LINE$ebnf$1', symbols: [] },
      {
        name: 'MESSAGE_LINE$ebnf$1',
        symbols: ['MESSAGE_LINE$ebnf$1', 'INPUT_CHARACTER'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'MESSAGE_LINE',
        symbols: ['MESSAGE_LINE$ebnf$1'],
        postprocess: messageLine,
      },
      { name: 'MESSAGE_LINE', symbols: ['INPUT_FILE_REF'], postprocess: id },
      {
        name: 'INPUT_FILE_REF',
        symbols: [{ literal: '<' }, '__', 'FILE_PATH'],
        postprocess: inputFileRef,
      },
      { name: 'FILE_PATH$ebnf$1', symbols: ['INPUT_CHARACTER'] },
      {
        name: 'FILE_PATH$ebnf$1',
        symbols: ['FILE_PATH$ebnf$1', 'INPUT_CHARACTER'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'FILE_PATH',
        symbols: ['FILE_PATH$ebnf$1'],
        postprocess: filePath,
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1$ebnf$1',
        symbols: ['NEW_LINE'],
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1$ebnf$1',
        symbols: ['RESPONSE_HANDLER$subexpression$1$ebnf$1', 'NEW_LINE'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1',
        symbols: [
          { literal: '>' },
          '__',
          'HANDLER_SCRIPT',
          'RESPONSE_HANDLER$subexpression$1$ebnf$1',
        ],
        postprocess: nth(2),
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1$ebnf$2',
        symbols: ['NEW_LINE'],
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1$ebnf$2',
        symbols: ['RESPONSE_HANDLER$subexpression$1$ebnf$2', 'NEW_LINE'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'RESPONSE_HANDLER$subexpression$1',
        symbols: [
          { literal: '>' },
          '__',
          'FILE_PATH',
          'RESPONSE_HANDLER$subexpression$1$ebnf$2',
        ],
        postprocess: responseHandlerFilePath,
      },
      {
        name: 'RESPONSE_HANDLER',
        symbols: ['RESPONSE_HANDLER$subexpression$1'],
        postprocess: responseHandler,
      },
      {
        name: 'HANDLER_SCRIPT$string$1',
        symbols: [{ literal: '{' }, { literal: '%' }],
        postprocess: function joiner(d) {
          return d.join('');
        },
      },
      { name: 'HANDLER_SCRIPT$ebnf$1', symbols: [/[\S\s]/] },
      {
        name: 'HANDLER_SCRIPT$ebnf$1',
        symbols: ['HANDLER_SCRIPT$ebnf$1', /[\S\s]/],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      {
        name: 'HANDLER_SCRIPT$string$2',
        symbols: [{ literal: '%' }, { literal: '}' }],
        postprocess: function joiner(d) {
          return d.join('');
        },
      },
      {
        name: 'HANDLER_SCRIPT',
        symbols: [
          'HANDLER_SCRIPT$string$1',
          'HANDLER_SCRIPT$ebnf$1',
          'HANDLER_SCRIPT$string$2',
        ],
        postprocess: handlerScript,
      },
      {
        name: 'RESPONSE_REF$string$1',
        symbols: [{ literal: '<' }, { literal: '>' }],
        postprocess: function joiner(d) {
          return d.join('');
        },
      },
      {
        name: 'RESPONSE_REF',
        symbols: ['RESPONSE_REF$string$1', '__', 'FILE_PATH', 'WHIT'],
        postprocess: responseRef,
      },
      { name: 'INPUT_CHARACTER', symbols: [/[^\r\n]/] },
      { name: 'ALPHA', symbols: [/[a-zA-Z]/] },
      { name: 'DIGIT', symbols: ['unsigned_int'] },
      { name: 'IDENTIFIER_CHARACTER', symbols: [/[_a-zA-Z0-9-]/] },
      { name: 'IDENTIFIER$ebnf$1', symbols: ['IDENTIFIER_CHARACTER'] },
      {
        name: 'IDENTIFIER$ebnf$1',
        symbols: ['IDENTIFIER$ebnf$1', 'IDENTIFIER_CHARACTER'],
        postprocess: function arrpush(d) {
          return d[0].concat([d[1]]);
        },
      },
      { name: 'IDENTIFIER', symbols: ['IDENTIFIER$ebnf$1'] },
      { name: 'CR', symbols: [/[\r]/] },
      { name: 'LF', symbols: [/[\n]/] },
      { name: 'CRLF', symbols: ['CR', 'LF'] },
      { name: 'NEW_LINE', symbols: ['CR