bufsize_t _scan_open_code_fence()

in src/scanners.c [12116:12439]


bufsize_t _scan_open_code_fence(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0,   192, 192, 192, 192, 192, 192, 192, 192, 192, 0,   192, 192, 0,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 144, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
        224, 192, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *p;
    if (yych == '`')
      goto yy788;
    if (yych == '~')
      goto yy789;
    ++p;
  yy787 : { return 0; }
  yy788:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy790;
    goto yy787;
  yy789:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy792;
    goto yy787;
  yy790:
    yych = *++p;
    if (yybm[0 + yych] & 16) {
      goto yy793;
    }
  yy791:
    p = marker;
    goto yy787;
  yy792:
    yych = *++p;
    if (yybm[0 + yych] & 32) {
      goto yy795;
    }
    goto yy791;
  yy793:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 64) {
      goto yy797;
    }
    if (yych <= 0xE0) {
      if (yych <= '`') {
        if (yych <= 0x00)
          goto yy791;
        if (yych <= '\r')
          goto yy799;
        goto yy793;
      } else {
        if (yych <= 0xC1)
          goto yy791;
        if (yych <= 0xDF)
          goto yy801;
        goto yy802;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy804;
        goto yy803;
      } else {
        if (yych <= 0xF0)
          goto yy805;
        if (yych <= 0xF3)
          goto yy806;
        if (yych <= 0xF4)
          goto yy807;
        goto yy791;
      }
    }
  yy795:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 32) {
      goto yy795;
    }
    if (yych <= 0xDF) {
      if (yych <= '\f') {
        if (yych <= 0x00)
          goto yy791;
        if (yych == '\n')
          goto yy810;
        goto yy808;
      } else {
        if (yych <= '\r')
          goto yy810;
        if (yych <= 0x7F)
          goto yy808;
        if (yych <= 0xC1)
          goto yy791;
        goto yy812;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy813;
        if (yych == 0xED)
          goto yy815;
        goto yy814;
      } else {
        if (yych <= 0xF0)
          goto yy816;
        if (yych <= 0xF3)
          goto yy817;
        if (yych <= 0xF4)
          goto yy818;
        goto yy791;
      }
    }
  yy797:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy797;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy791;
        if (yych >= 0x0E)
          goto yy791;
      } else {
        if (yych <= 0xDF)
          goto yy801;
        if (yych <= 0xE0)
          goto yy802;
        goto yy803;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy804;
        if (yych <= 0xEF)
          goto yy803;
        goto yy805;
      } else {
        if (yych <= 0xF3)
          goto yy806;
        if (yych <= 0xF4)
          goto yy807;
        goto yy791;
      }
    }
  yy799:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy801:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy797;
    goto yy791;
  yy802:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy801;
    goto yy791;
  yy803:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy801;
    goto yy791;
  yy804:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0x9F)
      goto yy801;
    goto yy791;
  yy805:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy803;
    goto yy791;
  yy806:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy803;
    goto yy791;
  yy807:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0x8F)
      goto yy803;
    goto yy791;
  yy808:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy808;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy791;
        if (yych >= 0x0E)
          goto yy791;
      } else {
        if (yych <= 0xDF)
          goto yy812;
        if (yych <= 0xE0)
          goto yy813;
        goto yy814;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy815;
        if (yych <= 0xEF)
          goto yy814;
        goto yy816;
      } else {
        if (yych <= 0xF3)
          goto yy817;
        if (yych <= 0xF4)
          goto yy818;
        goto yy791;
      }
    }
  yy810:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy812:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy808;
    goto yy791;
  yy813:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy812;
    goto yy791;
  yy814:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy812;
    goto yy791;
  yy815:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0x9F)
      goto yy812;
    goto yy791;
  yy816:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy814;
    goto yy791;
  yy817:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0xBF)
      goto yy814;
    goto yy791;
  yy818:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy791;
    if (yych <= 0x8F)
      goto yy814;
    goto yy791;
  }
}