bufsize_t _scan_link_title()

in src/scanners.c [11202:11793]


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

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0,   208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 80,  80,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 32,  208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
        208, 208, 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 <= '&') {
      if (yych == '"')
        goto yy697;
    } else {
      if (yych <= '\'')
        goto yy698;
      if (yych <= '(')
        goto yy699;
    }
    ++p;
  yy696 : { return 0; }
  yy697:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy696;
    if (yych <= 0x7F)
      goto yy701;
    if (yych <= 0xC1)
      goto yy696;
    if (yych <= 0xF4)
      goto yy701;
    goto yy696;
  yy698:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy696;
    if (yych <= 0x7F)
      goto yy715;
    if (yych <= 0xC1)
      goto yy696;
    if (yych <= 0xF4)
      goto yy715;
    goto yy696;
  yy699:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '(') {
      if (yych <= 0x00)
        goto yy696;
      if (yych <= '\'')
        goto yy728;
      goto yy696;
    } else {
      if (yych <= 0x7F)
        goto yy728;
      if (yych <= 0xC1)
        goto yy696;
      if (yych <= 0xF4)
        goto yy728;
      goto yy696;
    }
  yy700:
    ++p;
    yych = *p;
  yy701:
    if (yybm[0 + yych] & 16) {
      goto yy700;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy702;
        if (yych <= '"')
          goto yy703;
        goto yy705;
      } else {
        if (yych <= 0xC1)
          goto yy702;
        if (yych <= 0xDF)
          goto yy707;
        goto yy708;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy710;
        goto yy709;
      } else {
        if (yych <= 0xF0)
          goto yy711;
        if (yych <= 0xF3)
          goto yy712;
        if (yych <= 0xF4)
          goto yy713;
      }
    }
  yy702:
    p = marker;
    if (yyaccept <= 1) {
      if (yyaccept == 0) {
        goto yy696;
      } else {
        goto yy704;
      }
    } else {
      if (yyaccept == 2) {
        goto yy717;
      } else {
        goto yy730;
      }
    }
  yy703:
    ++p;
  yy704 : { return (bufsize_t)(p - start); }
  yy705:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy700;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy702;
        if (yych <= '"')
          goto yy740;
        goto yy705;
      } else {
        if (yych <= 0xC1)
          goto yy702;
        if (yych >= 0xE0)
          goto yy708;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy710;
        goto yy709;
      } else {
        if (yych <= 0xF0)
          goto yy711;
        if (yych <= 0xF3)
          goto yy712;
        if (yych <= 0xF4)
          goto yy713;
        goto yy702;
      }
    }
  yy707:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy700;
    goto yy702;
  yy708:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy707;
    goto yy702;
  yy709:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy707;
    goto yy702;
  yy710:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x9F)
      goto yy707;
    goto yy702;
  yy711:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy709;
    goto yy702;
  yy712:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy709;
    goto yy702;
  yy713:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x8F)
      goto yy709;
    goto yy702;
  yy714:
    ++p;
    yych = *p;
  yy715:
    if (yybm[0 + yych] & 64) {
      goto yy714;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy702;
        if (yych >= '(')
          goto yy718;
      } else {
        if (yych <= 0xC1)
          goto yy702;
        if (yych <= 0xDF)
          goto yy720;
        goto yy721;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy723;
        goto yy722;
      } else {
        if (yych <= 0xF0)
          goto yy724;
        if (yych <= 0xF3)
          goto yy725;
        if (yych <= 0xF4)
          goto yy726;
        goto yy702;
      }
    }
  yy716:
    ++p;
  yy717 : { return (bufsize_t)(p - start); }
  yy718:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy714;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy702;
        if (yych <= '\'')
          goto yy741;
        goto yy718;
      } else {
        if (yych <= 0xC1)
          goto yy702;
        if (yych >= 0xE0)
          goto yy721;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy723;
        goto yy722;
      } else {
        if (yych <= 0xF0)
          goto yy724;
        if (yych <= 0xF3)
          goto yy725;
        if (yych <= 0xF4)
          goto yy726;
        goto yy702;
      }
    }
  yy720:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy714;
    goto yy702;
  yy721:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy720;
    goto yy702;
  yy722:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy720;
    goto yy702;
  yy723:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x9F)
      goto yy720;
    goto yy702;
  yy724:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy722;
    goto yy702;
  yy725:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy722;
    goto yy702;
  yy726:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x8F)
      goto yy722;
    goto yy702;
  yy727:
    ++p;
    yych = *p;
  yy728:
    if (yybm[0 + yych] & 128) {
      goto yy727;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= '(')
          goto yy702;
        if (yych >= '*')
          goto yy731;
      } else {
        if (yych <= 0xC1)
          goto yy702;
        if (yych <= 0xDF)
          goto yy733;
        goto yy734;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy736;
        goto yy735;
      } else {
        if (yych <= 0xF0)
          goto yy737;
        if (yych <= 0xF3)
          goto yy738;
        if (yych <= 0xF4)
          goto yy739;
        goto yy702;
      }
    }
  yy729:
    ++p;
  yy730 : { return (bufsize_t)(p - start); }
  yy731:
    ++p;
    yych = *p;
    if (yych <= 0xDF) {
      if (yych <= '[') {
        if (yych <= 0x00)
          goto yy702;
        if (yych == ')')
          goto yy742;
        goto yy727;
      } else {
        if (yych <= '\\')
          goto yy731;
        if (yych <= 0x7F)
          goto yy727;
        if (yych <= 0xC1)
          goto yy702;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy734;
        if (yych == 0xED)
          goto yy736;
        goto yy735;
      } else {
        if (yych <= 0xF0)
          goto yy737;
        if (yych <= 0xF3)
          goto yy738;
        if (yych <= 0xF4)
          goto yy739;
        goto yy702;
      }
    }
  yy733:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy727;
    goto yy702;
  yy734:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy733;
    goto yy702;
  yy735:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy733;
    goto yy702;
  yy736:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x9F)
      goto yy733;
    goto yy702;
  yy737:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy735;
    goto yy702;
  yy738:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0xBF)
      goto yy735;
    goto yy702;
  yy739:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy702;
    if (yych <= 0x8F)
      goto yy735;
    goto yy702;
  yy740:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy700;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy704;
        if (yych <= '"')
          goto yy703;
        goto yy705;
      } else {
        if (yych <= 0xC1)
          goto yy704;
        if (yych <= 0xDF)
          goto yy707;
        goto yy708;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy710;
        goto yy709;
      } else {
        if (yych <= 0xF0)
          goto yy711;
        if (yych <= 0xF3)
          goto yy712;
        if (yych <= 0xF4)
          goto yy713;
        goto yy704;
      }
    }
  yy741:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy714;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy717;
        if (yych <= '\'')
          goto yy716;
        goto yy718;
      } else {
        if (yych <= 0xC1)
          goto yy717;
        if (yych <= 0xDF)
          goto yy720;
        goto yy721;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy723;
        goto yy722;
      } else {
        if (yych <= 0xF0)
          goto yy724;
        if (yych <= 0xF3)
          goto yy725;
        if (yych <= 0xF4)
          goto yy726;
        goto yy717;
      }
    }
  yy742:
    yyaccept = 3;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy727;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= '(')
          goto yy730;
        if (yych <= ')')
          goto yy729;
        goto yy731;
      } else {
        if (yych <= 0xC1)
          goto yy730;
        if (yych <= 0xDF)
          goto yy733;
        goto yy734;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy736;
        goto yy735;
      } else {
        if (yych <= 0xF0)
          goto yy737;
        if (yych <= 0xF3)
          goto yy738;
        if (yych <= 0xF4)
          goto yy739;
        goto yy730;
      }
    }
  }
}