/* Generated by re2c 0.15.3 */
#include <stdlib.h>
#include "ext_scanners.h"
bufsize_t _ext_scan_at(bufsize_t (*scanner)(const unsigned char *),
unsigned char *ptr, int len, bufsize_t offset) {
bufsize_t res;
if (ptr == NULL || offset > len) {
return 0;
} else {
unsigned char lim = ptr[len];
ptr[len] = '\0';
res = scanner(ptr + offset);
ptr[len] = lim;
}
return res;
}
bufsize_t _scan_table_start(const unsigned char *p) {
const unsigned char *marker = NULL;
const unsigned char *start = p;
{
unsigned char yych;
static const unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 128, 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, 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 = *(marker = p);
if (yych <= '{') {
if (yych <= 0x1F) {
if (yych <= '\t') {
if (yych <= 0x08)
goto yy6;
goto yy3;
} else {
if (yych <= '\n')
goto yy2;
if (yych <= '\f')
goto yy3;
goto yy6;
}
} else {
if (yych <= '-') {
if (yych <= ' ')
goto yy3;
if (yych <= ',')
goto yy6;
goto yy5;
} else {
if (yych == ':')
goto yy4;
goto yy6;
}
}
} else {
if (yych <= 0xEC) {
if (yych <= 0xC1) {
if (yych <= '|')
goto yy3;
if (yych <= 0x7F)
goto yy6;
} else {
if (yych <= 0xDF)
goto yy7;
if (yych <= 0xE0)
goto yy9;
goto yy10;
}
} else {
if (yych <= 0xF0) {
if (yych <= 0xED)
goto yy14;
if (yych <= 0xEF)
goto yy10;
goto yy11;
} else {
if (yych <= 0xF3)
goto yy12;
if (yych <= 0xF4)
goto yy13;
}
}
}
yy2 : { return 0; }
yy3:
yych = *(marker = ++p);
if (yybm[0 + yych] & 128) {
goto yy22;
}
if (yych <= '\f') {
if (yych == '\t')
goto yy29;
if (yych <= '\n')
goto yy2;
goto yy29;
} else {
if (yych <= ' ') {
if (yych <= 0x1F)
goto yy2;
goto yy29;
} else {
if (yych == ':')
goto yy31;
goto yy2;
}
}
yy4:
yych = *(marker = ++p);
if (yybm[0 + yych] & 128) {
goto yy22;
}
goto yy2;
yy5:
yych = *(marker = ++p);
if (yybm[0 + yych] & 128) {
goto yy22;
}
if (yych <= ' ') {
if (yych <= 0x08)
goto yy2;
if (yych <= '\r')
goto yy16;
if (yych <= 0x1F)
goto yy2;
goto yy16;
} else {
if (yych <= ':') {
if (yych <= '9')
goto yy2;
goto yy15;
} else {
if (yych == '|')
goto yy16;
goto yy2;
}
}
yy6:
yych = *++p;
goto yy2;
yy7:
yych = *++p;
if (yych <= 0x7F)
goto yy8;
if (yych <= 0xBF)
goto yy6;
yy8:
p = marker;
goto yy2;
yy9:
yych = *++p;
if (yych <= 0x9F)
goto yy8;
if (yych <= 0xBF)
goto yy7;
goto yy8;
yy10:
yych = *++p;
if (yych <= 0x7F)
goto yy8;
if (yych <= 0xBF)
goto yy7;
goto yy8;
yy11:
yych = *++p;
if (yych <= 0x8F)
goto yy8;
if (yych <= 0xBF)
goto yy10;
goto yy8;
yy12:
yych = *++p;
if (yych <= 0x7F)
goto yy8;
if (yych <= 0xBF)
goto yy10;
goto yy8;
yy13:
yych = *++p;
if (yych <= 0x7F)
goto yy8;
if (yych <= 0x8F)
goto yy10;
goto yy8;
yy14:
yych = *++p;
if (yych <= 0x7F)
goto yy8;
if (yych <= 0x9F)
goto yy7;
goto yy8;
yy15:
++p;
yych = *p;
yy16:
if (yybm[0 + yych] & 64) {
goto yy15;
}
if (yych <= '\r') {
if (yych <= 0x08)
goto yy8;
if (yych <= '\n')
goto yy20;
goto yy19;
} else {
if (yych != '|')
goto yy8;
}
yy17:
++p;
yych = *p;
if (yych <= 0x1F) {
if (yych <= '\n') {
if (yych <= 0x08)
goto yy8;
if (yych <= '\t')
goto yy17;
goto yy20;
} else {
if (yych <= '\f')
goto yy17;
if (yych >= 0x0E)
goto yy8;
}
} else {
if (yych <= '-') {
if (yych <= ' ')
goto yy17;
if (yych <= ',')
goto yy8;
goto yy25;
} else {
if (yych == ':')
goto yy24;
goto yy8;
}
}
yy19:
yych = *++p;
if (yych != '\n')
goto yy8;
yy20:
++p;
{ return (bufsize_t)(p - start); }
yy22:
++p;
yych = *p;
if (yybm[0 + yych] & 128) {
goto yy22;
}
if (yych <= 0x1F) {
if (yych <= '\n') {
if (yych <= 0x08)
goto yy8;
if (yych <= '\t')
goto yy15;
goto yy20;
} else {
if (yych <= '\f')
goto yy15;
if (yych <= '\r')
goto yy19;
goto yy8;
}
} else {
if (yych <= ':') {
if (yych <= ' ')
goto yy15;
if (yych <= '9')
goto yy8;
goto yy15;
} else {
if (yych == '|')
goto yy17;
goto yy8;
}
}
yy24:
++p;
yych = *p;
if (yych != '-')
goto yy8;
yy25:
++p;
yych = *p;
if (yych <= ' ') {
if (yych <= '\n') {
if (yych <= 0x08)
goto yy8;
if (yych >= '\n')
goto yy20;
} else {
if (yych <= '\f')
goto yy27;
if (yych <= '\r')
goto yy19;
if (yych <= 0x1F)
goto yy8;
}
} else {
if (yych <= '9') {
if (yych == '-')
goto yy25;
goto yy8;
} else {
if (yych <= ':')
goto yy27;
if (yych == '|')
goto yy17;
goto yy8;
}
}
yy27:
++p;
yych = *p;
if (yych <= '\r') {
if (yych <= '\t') {
if (yych <= 0x08)
goto yy8;
goto yy27;
} else {
if (yych <= '\n')
goto yy20;
if (yych <= '\f')
goto yy27;
goto yy19;
}
} else {
if (yych <= ' ') {
if (yych <= 0x1F)
goto yy8;
goto yy27;
} else {
if (yych == '|')
goto yy17;
goto yy8;
}
}
yy29:
++p;
yych = *p;
if (yybm[0 + yych] & 128) {
goto yy22;
}
if (yych <= '\f') {
if (yych == '\t')
goto yy29;
if (yych <= '\n')
goto yy8;
goto yy29;
} else {
if (yych <= ' ') {
if (yych <= 0x1F)
goto yy8;
goto yy29;
} else {
if (yych != ':')
goto yy8;
}
}
yy31:
++p;
if (yybm[0 + (yych = *p)] & 128) {
goto yy22;
}
goto yy8;
}
}
bufsize_t _scan_table_cell(const unsigned char *p) {
const unsigned char *marker = NULL;
const unsigned char *start = p;
{
unsigned char yych;
static const unsigned char yybm[] = {
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 0,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 64, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128,
128, 128, 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 = *(marker = p);
if (yych <= 0x7F) {
if (yych <= '\r') {
if (yych == '\n')
goto yy34;
if (yych <= '\f')
goto yy36;
goto yy45;
} else {
if (yych <= '\\') {
if (yych <= '[')
goto yy36;
goto yy35;
} else {
if (yych == '|')
goto yy45;
goto yy36;
}
}
} else {
if (yych <= 0xED) {
if (yych <= 0xDF) {
if (yych >= 0xC2)
goto yy37;
} else {
if (yych <= 0xE0)
goto yy39;
if (yych <= 0xEC)
goto yy40;
goto yy44;
}
} else {
if (yych <= 0xF0) {
if (yych <= 0xEF)
goto yy40;
goto yy41;
} else {
if (yych <= 0xF3)
goto yy42;
if (yych <= 0xF4)
goto yy43;
}
}
}
yy34 : { return (bufsize_t)(p - start); }
yy35:
yych = *(marker = ++p);
if (yych == '|')
goto yy49;
goto yy50;
yy36:
yych = *(marker = ++p);
goto yy50;
yy37:
yych = *++p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy36;
yy38:
p = marker;
goto yy34;
yy39:
yych = *++p;
if (yych <= 0x9F)
goto yy38;
if (yych <= 0xBF)
goto yy37;
goto yy38;
yy40:
yych = *++p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy37;
goto yy38;
yy41:
yych = *++p;
if (yych <= 0x8F)
goto yy38;
if (yych <= 0xBF)
goto yy40;
goto yy38;
yy42:
yych = *++p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy40;
goto yy38;
yy43:
yych = *++p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0x8F)
goto yy40;
goto yy38;
yy44:
yych = *++p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0x9F)
goto yy37;
goto yy38;
yy45:
++p;
{ return 0; }
yy47:
marker = ++p;
yych = *p;
if (yybm[0 + yych] & 64) {
goto yy47;
}
if (yych <= 0xDF) {
if (yych <= '\f') {
if (yych == '\n')
goto yy34;
} else {
if (yych <= '\r')
goto yy34;
if (yych <= 0x7F)
goto yy49;
if (yych <= 0xC1)
goto yy34;
goto yy51;
}
} else {
if (yych <= 0xEF) {
if (yych <= 0xE0)
goto yy52;
if (yych == 0xED)
goto yy57;
goto yy53;
} else {
if (yych <= 0xF0)
goto yy54;
if (yych <= 0xF3)
goto yy55;
if (yych <= 0xF4)
goto yy56;
goto yy34;
}
}
yy49:
marker = ++p;
yych = *p;
yy50:
if (yybm[0 + yych] & 128) {
goto yy49;
}
if (yych <= 0xEC) {
if (yych <= 0xC1) {
if (yych <= '\r')
goto yy34;
if (yych <= '\\')
goto yy47;
goto yy34;
} else {
if (yych <= 0xDF)
goto yy51;
if (yych <= 0xE0)
goto yy52;
goto yy53;
}
} else {
if (yych <= 0xF0) {
if (yych <= 0xED)
goto yy57;
if (yych <= 0xEF)
goto yy53;
goto yy54;
} else {
if (yych <= 0xF3)
goto yy55;
if (yych <= 0xF4)
goto yy56;
goto yy34;
}
}
yy51:
++p;
yych = *p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy49;
goto yy38;
yy52:
++p;
yych = *p;
if (yych <= 0x9F)
goto yy38;
if (yych <= 0xBF)
goto yy51;
goto yy38;
yy53:
++p;
yych = *p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy51;
goto yy38;
yy54:
++p;
yych = *p;
if (yych <= 0x8F)
goto yy38;
if (yych <= 0xBF)
goto yy53;
goto yy38;
yy55:
++p;
yych = *p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0xBF)
goto yy53;
goto yy38;
yy56:
++p;
yych = *p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0x8F)
goto yy53;
goto yy38;
yy57:
++p;
yych = *p;
if (yych <= 0x7F)
goto yy38;
if (yych <= 0x9F)
goto yy51;
goto yy38;
}
}
bufsize_t _scan_table_cell_end(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, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 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, 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 = *(marker = p);
if (yych <= 0xDF) {
if (yych <= '{') {
if (yych != '\n')
goto yy63;
} else {
if (yych <= '|')
goto yy61;
if (yych <= 0x7F)
goto yy63;
if (yych >= 0xC2)
goto yy64;
}
} else {
if (yych <= 0xEF) {
if (yych <= 0xE0)
goto yy66;
if (yych == 0xED)
goto yy71;
goto yy67;
} else {
if (yych <= 0xF0)
goto yy68;
if (yych <= 0xF3)
goto yy69;
if (yych <= 0xF4)
goto yy70;
}
}
yy60 : { return 0; }
yy61:
yyaccept = 1;
yych = *(marker = ++p);
goto yy73;
yy62 : { return (bufsize_t)(p - start); }
yy63:
yych = *++p;
goto yy60;
yy64:
yych = *++p;
if (yych <= 0x7F)
goto yy65;
if (yych <= 0xBF)
goto yy63;
yy65:
p = marker;
if (yyaccept == 0) {
goto yy60;
} else {
goto yy62;
}
yy66:
yych = *++p;
if (yych <= 0x9F)
goto yy65;
if (yych <= 0xBF)
goto yy64;
goto yy65;
yy67:
yych = *++p;
if (yych <= 0x7F)
goto yy65;
if (yych <= 0xBF)
goto yy64;
goto yy65;
yy68:
yych = *++p;
if (yych <= 0x8F)
goto yy65;
if (yych <= 0xBF)
goto yy67;
goto yy65;
yy69:
yych = *++p;
if (yych <= 0x7F)
goto yy65;
if (yych <= 0xBF)
goto yy67;
goto yy65;
yy70:
yych = *++p;
if (yych <= 0x7F)
goto yy65;
if (yych <= 0x8F)
goto yy67;
goto yy65;
yy71:
yych = *++p;
if (yych <= 0x7F)
goto yy65;
if (yych <= 0x9F)
goto yy64;
goto yy65;
yy72:
yyaccept = 1;
marker = ++p;
yych = *p;
yy73:
if (yybm[0 + yych] & 128) {
goto yy72;
}
if (yych <= 0x08)
goto yy62;
if (yych <= '\n')
goto yy75;
if (yych >= 0x0E)
goto yy62;
yych = *++p;
if (yych != '\n')
goto yy65;
yy75:
++p;
yych = *p;
goto yy62;
}
}
bufsize_t _scan_table_row_end(const unsigned char *p) {
const unsigned char *marker = NULL;
const unsigned char *start = p;
{
unsigned char yych;
static const unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 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, 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 = *(marker = p);
if (yych <= 0xC1) {
if (yych <= '\f') {
if (yych <= 0x08)
goto yy83;
if (yych == '\n')
goto yy81;
goto yy79;
} else {
if (yych <= 0x1F) {
if (yych <= '\r')
goto yy80;
goto yy83;
} else {
if (yych <= ' ')
goto yy79;
if (yych <= 0x7F)
goto yy83;
}
}
} else {
if (yych <= 0xED) {
if (yych <= 0xDF)
goto yy84;
if (yych <= 0xE0)
goto yy86;
if (yych <= 0xEC)
goto yy87;
goto yy91;
} else {
if (yych <= 0xF0) {
if (yych <= 0xEF)
goto yy87;
goto yy88;
} else {
if (yych <= 0xF3)
goto yy89;
if (yych <= 0xF4)
goto yy90;
}
}
}
yy78 : { return 0; }
yy79:
yych = *(marker = ++p);
if (yych <= 0x08)
goto yy78;
if (yych <= '\r')
goto yy94;
if (yych == ' ')
goto yy94;
goto yy78;
yy80:
yych = *++p;
if (yych != '\n')
goto yy78;
yy81:
++p;
{ return (bufsize_t)(p - start); }
yy83:
yych = *++p;
goto yy78;
yy84:
yych = *++p;
if (yych <= 0x7F)
goto yy85;
if (yych <= 0xBF)
goto yy83;
yy85:
p = marker;
goto yy78;
yy86:
yych = *++p;
if (yych <= 0x9F)
goto yy85;
if (yych <= 0xBF)
goto yy84;
goto yy85;
yy87:
yych = *++p;
if (yych <= 0x7F)
goto yy85;
if (yych <= 0xBF)
goto yy84;
goto yy85;
yy88:
yych = *++p;
if (yych <= 0x8F)
goto yy85;
if (yych <= 0xBF)
goto yy87;
goto yy85;
yy89:
yych = *++p;
if (yych <= 0x7F)
goto yy85;
if (yych <= 0xBF)
goto yy87;
goto yy85;
yy90:
yych = *++p;
if (yych <= 0x7F)
goto yy85;
if (yych <= 0x8F)
goto yy87;
goto yy85;
yy91:
yych = *++p;
if (yych <= 0x7F)
goto yy85;
if (yych <= 0x9F)
goto yy84;
goto yy85;
yy92:
yych = *++p;
if (yych == '\n')
goto yy81;
goto yy85;
yy93:
++p;
yych = *p;
yy94:
if (yybm[0 + yych] & 128) {
goto yy93;
}
if (yych <= 0x08)
goto yy85;
if (yych <= '\n')
goto yy81;
if (yych <= '\r')
goto yy92;
goto yy85;
}
}